diff --git a/src/UnitTests/Containers/ArrayTest.h b/src/UnitTests/Containers/ArrayTest.h index 3790b35dc9935e1dba49676b0b0ff1ba0245e82c..573c79f3640a2a0644e6a9182858bb97326b8c69 100644 --- a/src/UnitTests/Containers/ArrayTest.h +++ b/src/UnitTests/Containers/ArrayTest.h @@ -152,25 +152,9 @@ TYPED_TEST( ArrayTest, constructors ) ArrayType v( 10 ); EXPECT_EQ( v.getSize(), 10 ); - if( std::is_same< typename ArrayType::DeviceType, Devices::Host >::value ) { - typename ArrayType::ValueType data[ 10 ]; - ArrayType w( data, 10 ); - EXPECT_EQ( w.getData(), data ); - - ArrayType z1( w ); - //EXPECT_EQ( z1.getData(), data ); - EXPECT_EQ( z1.getSize(), 10 ); - - ArrayType z2( w, 1 ); - EXPECT_EQ( z2.getData(), data + 1 ); - EXPECT_EQ( z2.getSize(), 9 ); - - ArrayType z3( w, 2, 3 ); - EXPECT_EQ( z3.getData(), data + 2 ); - EXPECT_EQ( z3.getSize(), 3 ); - } - + // deep copy ArrayType w( v ); + EXPECT_NE( w.getData(), v.getData() ); EXPECT_EQ( w.getSize(), v.getSize() ); for( int i = 0; i < 10; i++ ) EXPECT_EQ( v.getElement( i ), w.getElement( i ) ); @@ -206,15 +190,6 @@ TYPED_TEST( ArrayTest, setSize ) u.setSize( i ); EXPECT_EQ( u.getSize(), i ); } - - ArrayType v( u ); - EXPECT_EQ( v.getSize(), 10 ); - //EXPECT_EQ( v.getData(), u.getData() ); - v.setSize( 11 ); - EXPECT_EQ( u.getSize(), 10 ); - EXPECT_EQ( v.getSize(), 11 ); - EXPECT_NE( v.getData(), u.getData() ); - } TYPED_TEST( ArrayTest, empty ) @@ -240,45 +215,6 @@ TYPED_TEST( ArrayTest, setLike ) EXPECT_NE( v.getData(), u.getData() ); } -TYPED_TEST( ArrayTest, bind ) -{ - using ArrayType = typename TestFixture::ArrayType; - - ArrayType u( 10 ), v; - v.bind( u ); - EXPECT_EQ( v.getSize(), u.getSize() ); - EXPECT_EQ( v.getData(), u.getData() ); - - // bind array with offset and size - ArrayType w; - w.bind( u, 2, 3 ); - EXPECT_EQ( w.getSize(), 3 ); - EXPECT_EQ( w.getData(), u.getData() + 2 ); - - // setting values - u.setValue( 27 ); - EXPECT_EQ( u.getElement( 0 ), 27 ); - v.setValue( 50 ); - EXPECT_EQ( u.getElement( 0 ), 50 ); - u.reset(); - EXPECT_EQ( u.getSize(), 0 ); - EXPECT_EQ( v.getElement( 0 ), 50 ); - - if( std::is_same< typename ArrayType::DeviceType, Devices::Host >::value ) { - typename ArrayType::ValueType data[ 10 ] = { 1, 2, 3, 4, 5, 6, 7, 8, 10 }; - u.bind( data, 10 ); - EXPECT_EQ( u.getData(), data ); - EXPECT_EQ( u.getSize(), 10 ); - EXPECT_EQ( u.getElement( 1 ), 2 ); - v.bind( u ); - EXPECT_EQ( v.getElement( 1 ), 2 ); - u.reset(); - v.setElement( 1, 3 ); - v.reset(); - EXPECT_EQ( data[ 1 ], 3 ); - } -} - TYPED_TEST( ArrayTest, swap ) { using ArrayType = typename TestFixture::ArrayType; @@ -470,9 +406,9 @@ TYPED_TEST( ArrayTest, assignmentOperator ) u_host.setElement( i, i ); } - v = 72; //.setValue( 0 ); + v = 42; for( int i = 0; i < 10; i++ ) - EXPECT_EQ( v.getElement( i ), 72 ); + EXPECT_EQ( v.getElement( i ), 42 ); v = u; EXPECT_EQ( u, v ); @@ -557,7 +493,7 @@ TYPED_TEST( ArrayTest, boundLoad ) { using ArrayType = typename TestFixture::ArrayType; - ArrayType u, v, w; + ArrayType v, w; v.setSize( 100 ); for( int i = 0; i < 100; i ++ ) v.setElement( i, 3.14147 ); @@ -567,82 +503,23 @@ TYPED_TEST( ArrayTest, boundLoad ) file.close(); w.setSize( 100 ); - u.bind( w ); + auto u = w.getView(); file.open( "test-file.tnl", File::Mode::In ); - u.boundLoad( file ); + u.load( file ); EXPECT_EQ( u, v ); EXPECT_EQ( u.getData(), w.getData() ); - u.setSize( 50 ); + ArrayType z( 50 ); file.open( "test-file.tnl", File::Mode::In ); - bool catched( false ); - try - { - u.boundLoad( file ); - } - catch(...) - { - catched = true; - } - EXPECT_TRUE( catched ); + EXPECT_ANY_THROW( z.boundLoad( file ) ); - u.reset(); + v.reset(); file.open( "test-file.tnl", File::Mode::In ); - u.boundLoad( file ); + EXPECT_NO_THROW( v.boundLoad( file ) ); EXPECT_EQ( std::remove( "test-file.tnl" ), 0 ); } -TYPED_TEST( ArrayTest, referenceCountingConstructors ) -{ - using ArrayType = typename TestFixture::ArrayType; - - // copies of a dynamic array - ArrayType u( 10 ); - ArrayType v( u ); - ArrayType w( v ); - //EXPECT_EQ( v.getData(), u.getData() ); - //EXPECT_EQ( w.getData(), u.getData() ); - - // copies of a static array - if( std::is_same< typename ArrayType::DeviceType, Devices::Host >::value ) { - typename ArrayType::ValueType data[ 10 ] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; - ArrayType u( data, 10 ); - ArrayType v( u ); - ArrayType w( v ); - EXPECT_EQ( u.getData(), data ); - //EXPECT_EQ( v.getData(), data ); - //EXPECT_EQ( w.getData(), data ); - } -} - -TYPED_TEST( ArrayTest, referenceCountingBind ) -{ - using ArrayType = typename TestFixture::ArrayType; - - // copies of a dynamic array - ArrayType u( 10 ); - ArrayType v; - v.bind( u ); - ArrayType w; - w.bind( v ); - EXPECT_EQ( v.getData(), u.getData() ); - EXPECT_EQ( w.getData(), u.getData() ); - - // copies of a static array - if( std::is_same< typename ArrayType::DeviceType, Devices::Host >::value ) { - typename ArrayType::ValueType data[ 10 ] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; - ArrayType u( data, 10 ); - ArrayType v; - v.bind( u ); - ArrayType w; - w.bind( v ); - EXPECT_EQ( u.getData(), data ); - EXPECT_EQ( v.getData(), data ); - EXPECT_EQ( w.getData(), data ); - } -} - // TODO: test all __cuda_callable__ methods from a CUDA kernel #endif // HAVE_GTEST diff --git a/src/UnitTests/Containers/ArrayViewTest.h b/src/UnitTests/Containers/ArrayViewTest.h index ac86cc354960da18fca373a5d30f6a35d393b289..28d8b512b1d4ed403b8fd071b13461a163aff2fe 100644 --- a/src/UnitTests/Containers/ArrayViewTest.h +++ b/src/UnitTests/Containers/ArrayViewTest.h @@ -200,19 +200,13 @@ TYPED_TEST( ArrayViewTest, bind ) EXPECT_EQ( a.getSize(), 0 ); EXPECT_EQ( v.getSize(), 10 ); - if( std::is_same< typename ArrayType::DeviceType, Devices::Host >::value ) { - typename ArrayType::ValueType data[ 10 ] = { 1, 2, 3, 4, 5, 6, 7, 8, 10 }; - a.bind( data, 10 ); - EXPECT_EQ( a.getData(), data ); - EXPECT_EQ( a.getSize(), 10 ); - EXPECT_EQ( a.getElement( 1 ), 2 ); - v.bind( a ); - EXPECT_EQ( v.getElement( 1 ), 2 ); - a.reset(); - v.setElement( 1, 3 ); - v.reset(); - EXPECT_EQ( data[ 1 ], 3 ); - } + ArrayType b = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; + EXPECT_EQ( b.getSize(), 10 ); + EXPECT_EQ( b.getElement( 1 ), 2 ); + v.bind( b ); + EXPECT_EQ( v.getElement( 1 ), 2 ); + v.setElement( 1, 3 ); + EXPECT_EQ( b.getElement( 1 ), 3 ); } TYPED_TEST( ArrayViewTest, swap )