Skip to content
Snippets Groups Projects
Commit d8cdf031 authored by Jakub Klinkovský's avatar Jakub Klinkovský
Browse files

Removed binding stuff from ArrayTest, other improvements

parent 5b6e8c9c
No related branches found
No related tags found
1 merge request!31Code revision
...@@ -152,25 +152,9 @@ TYPED_TEST( ArrayTest, constructors ) ...@@ -152,25 +152,9 @@ TYPED_TEST( ArrayTest, constructors )
ArrayType v( 10 ); ArrayType v( 10 );
EXPECT_EQ( v.getSize(), 10 ); EXPECT_EQ( v.getSize(), 10 );
if( std::is_same< typename ArrayType::DeviceType, Devices::Host >::value ) { // deep copy
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 );
}
ArrayType w( v ); ArrayType w( v );
EXPECT_NE( w.getData(), v.getData() );
EXPECT_EQ( w.getSize(), v.getSize() ); EXPECT_EQ( w.getSize(), v.getSize() );
for( int i = 0; i < 10; i++ ) for( int i = 0; i < 10; i++ )
EXPECT_EQ( v.getElement( i ), w.getElement( i ) ); EXPECT_EQ( v.getElement( i ), w.getElement( i ) );
...@@ -206,15 +190,6 @@ TYPED_TEST( ArrayTest, setSize ) ...@@ -206,15 +190,6 @@ TYPED_TEST( ArrayTest, setSize )
u.setSize( i ); u.setSize( i );
EXPECT_EQ( u.getSize(), 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 ) TYPED_TEST( ArrayTest, empty )
...@@ -240,45 +215,6 @@ TYPED_TEST( ArrayTest, setLike ) ...@@ -240,45 +215,6 @@ TYPED_TEST( ArrayTest, setLike )
EXPECT_NE( v.getData(), u.getData() ); 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 ) TYPED_TEST( ArrayTest, swap )
{ {
using ArrayType = typename TestFixture::ArrayType; using ArrayType = typename TestFixture::ArrayType;
...@@ -470,9 +406,9 @@ TYPED_TEST( ArrayTest, assignmentOperator ) ...@@ -470,9 +406,9 @@ TYPED_TEST( ArrayTest, assignmentOperator )
u_host.setElement( i, i ); u_host.setElement( i, i );
} }
v = 72; //.setValue( 0 ); v = 42;
for( int i = 0; i < 10; i++ ) for( int i = 0; i < 10; i++ )
EXPECT_EQ( v.getElement( i ), 72 ); EXPECT_EQ( v.getElement( i ), 42 );
v = u; v = u;
EXPECT_EQ( u, v ); EXPECT_EQ( u, v );
...@@ -557,7 +493,7 @@ TYPED_TEST( ArrayTest, boundLoad ) ...@@ -557,7 +493,7 @@ TYPED_TEST( ArrayTest, boundLoad )
{ {
using ArrayType = typename TestFixture::ArrayType; using ArrayType = typename TestFixture::ArrayType;
ArrayType u, v, w; ArrayType v, w;
v.setSize( 100 ); v.setSize( 100 );
for( int i = 0; i < 100; i ++ ) for( int i = 0; i < 100; i ++ )
v.setElement( i, 3.14147 ); v.setElement( i, 3.14147 );
...@@ -567,82 +503,23 @@ TYPED_TEST( ArrayTest, boundLoad ) ...@@ -567,82 +503,23 @@ TYPED_TEST( ArrayTest, boundLoad )
file.close(); file.close();
w.setSize( 100 ); w.setSize( 100 );
u.bind( w ); auto u = w.getView();
file.open( "test-file.tnl", File::Mode::In ); file.open( "test-file.tnl", File::Mode::In );
u.boundLoad( file ); u.load( file );
EXPECT_EQ( u, v ); EXPECT_EQ( u, v );
EXPECT_EQ( u.getData(), w.getData() ); EXPECT_EQ( u.getData(), w.getData() );
u.setSize( 50 ); ArrayType z( 50 );
file.open( "test-file.tnl", File::Mode::In ); file.open( "test-file.tnl", File::Mode::In );
bool catched( false ); EXPECT_ANY_THROW( z.boundLoad( file ) );
try
{
u.boundLoad( file );
}
catch(...)
{
catched = true;
}
EXPECT_TRUE( catched );
u.reset(); v.reset();
file.open( "test-file.tnl", File::Mode::In ); 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 ); 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 // TODO: test all __cuda_callable__ methods from a CUDA kernel
#endif // HAVE_GTEST #endif // HAVE_GTEST
......
...@@ -200,19 +200,13 @@ TYPED_TEST( ArrayViewTest, bind ) ...@@ -200,19 +200,13 @@ TYPED_TEST( ArrayViewTest, bind )
EXPECT_EQ( a.getSize(), 0 ); EXPECT_EQ( a.getSize(), 0 );
EXPECT_EQ( v.getSize(), 10 ); EXPECT_EQ( v.getSize(), 10 );
if( std::is_same< typename ArrayType::DeviceType, Devices::Host >::value ) { ArrayType b = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
typename ArrayType::ValueType data[ 10 ] = { 1, 2, 3, 4, 5, 6, 7, 8, 10 }; EXPECT_EQ( b.getSize(), 10 );
a.bind( data, 10 ); EXPECT_EQ( b.getElement( 1 ), 2 );
EXPECT_EQ( a.getData(), data ); v.bind( b );
EXPECT_EQ( a.getSize(), 10 ); EXPECT_EQ( v.getElement( 1 ), 2 );
EXPECT_EQ( a.getElement( 1 ), 2 ); v.setElement( 1, 3 );
v.bind( a ); EXPECT_EQ( b.getElement( 1 ), 3 );
EXPECT_EQ( v.getElement( 1 ), 2 );
a.reset();
v.setElement( 1, 3 );
v.reset();
EXPECT_EQ( data[ 1 ], 3 );
}
} }
TYPED_TEST( ArrayViewTest, swap ) TYPED_TEST( ArrayViewTest, swap )
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment