Commit d8cdf031 authored by Jakub Klinkovský's avatar Jakub Klinkovský
Browse files

Removed binding stuff from ArrayTest, other improvements

parent 5b6e8c9c
Loading
Loading
Loading
Loading
+11 −134
Original line number Diff line number Diff line
@@ -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
+7 −13
Original line number Diff line number Diff line
@@ -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 );
   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 );
      a.reset();
   v.setElement( 1, 3 );
      v.reset();
      EXPECT_EQ( data[ 1 ], 3 );
   }
   EXPECT_EQ( b.getElement( 1 ), 3 );
}

TYPED_TEST( ArrayViewTest, swap )