Loading src/TNL/Containers/List.h +0 −6 Original line number Diff line number Diff line Loading @@ -10,7 +10,6 @@ #pragma once #include <stdlib.h> #include <iostream> #include <TNL/Assert.h> Loading Loading @@ -41,9 +40,7 @@ template< class T > class ListDataElement; */ template< class T > class List { public: typedef T ElementType; //! Basic constructor Loading Loading @@ -118,7 +115,6 @@ template< class T > class List bool DeepLoad( File& file ); protected: //! Pointer to the first element ListDataElement< T >* first; Loading @@ -135,8 +131,6 @@ template< class T > class List //! Iterator index mutable int index; }; template< typename T > std::ostream& operator << ( std::ostream& str, const List< T >& list ); Loading src/TNL/Containers/List_impl.h +1 −3 Original line number Diff line number Diff line Loading @@ -203,9 +203,7 @@ template< typename T > template< typename Array > void List< T >::toArray( Array& array ) { TNL_ASSERT( this->getSize() <= array.getSize(), std::cerr << "this->getSize() = " << this->getSize() << " array.getSize() = " << array.getSize() << std::endl; ); array.setSize( this->getSize() ); for( int i = 0; i < this->getSize(); i++ ) array[ i ] = ( *this )[ i ]; } Loading src/UnitTests/Containers/ListTest.cpp +95 −1 Original line number Diff line number Diff line Loading @@ -14,8 +14,102 @@ #include <TNL/Containers/List.h> using namespace TNL; using namespace TNL::Containers; // TODO // test fixture for typed tests template< typename List > class ListTest : public ::testing::Test { protected: using ListType = List; }; // types for which ListTest is instantiated using ListTypes = ::testing::Types< List< short >, List< int >, List< long >, List< float >, List< double >, List< String > >; TYPED_TEST_CASE( ListTest, ListTypes ); TYPED_TEST( ListTest, constructor ) { using ListType = typename TestFixture::ListType; ListType list; EXPECT_TRUE( list.isEmpty() ); EXPECT_EQ( list.getSize(), 0 ); list.Append( 0 ); EXPECT_EQ( list.getSize(), 1 ); ListType copy( list ); list.Append( 0 ); EXPECT_EQ( list.getSize(), 2 ); EXPECT_EQ( copy.getSize(), 1 ); EXPECT_EQ( copy[ 0 ], list[ 0 ] ); } TYPED_TEST( ListTest, operations ) { using ListType = typename TestFixture::ListType; using ElementType = typename ListType::ElementType; ListType a, b; a.Append( 0 ); a.Append( 1 ); a.Prepend( 2 ); a.Insert( 3, 1 ); EXPECT_EQ( a.getSize(), 4 ); EXPECT_EQ( a[ 0 ], (ElementType) 2 ); EXPECT_EQ( a[ 1 ], (ElementType) 3 ); EXPECT_EQ( a[ 2 ], (ElementType) 0 ); EXPECT_EQ( a[ 3 ], (ElementType) 1 ); b = a; EXPECT_EQ( b.getSize(), 4 ); EXPECT_EQ( a, b ); b.Insert( 4, 4 ); EXPECT_NE( a, b ); EXPECT_EQ( b[ 4 ], (ElementType) 4 ); a.AppendList( b ); EXPECT_EQ( a.getSize(), 9 ); EXPECT_EQ( a[ 0 ], (ElementType) 2 ); EXPECT_EQ( a[ 1 ], (ElementType) 3 ); EXPECT_EQ( a[ 2 ], (ElementType) 0 ); EXPECT_EQ( a[ 3 ], (ElementType) 1 ); EXPECT_EQ( a[ 4 ], (ElementType) 2 ); EXPECT_EQ( a[ 5 ], (ElementType) 3 ); EXPECT_EQ( a[ 6 ], (ElementType) 0 ); EXPECT_EQ( a[ 7 ], (ElementType) 1 ); EXPECT_EQ( a[ 8 ], (ElementType) 4 ); a.PrependList( b ); EXPECT_EQ( a.getSize(), 14 ); EXPECT_EQ( a[ 0 ], (ElementType) 2 ); EXPECT_EQ( a[ 1 ], (ElementType) 3 ); EXPECT_EQ( a[ 2 ], (ElementType) 0 ); EXPECT_EQ( a[ 3 ], (ElementType) 1 ); EXPECT_EQ( a[ 4 ], (ElementType) 4 ); EXPECT_EQ( a[ 5 ], (ElementType) 2 ); EXPECT_EQ( a[ 6 ], (ElementType) 3 ); EXPECT_EQ( a[ 7 ], (ElementType) 0 ); EXPECT_EQ( a[ 8 ], (ElementType) 1 ); EXPECT_EQ( a[ 9 ], (ElementType) 2 ); EXPECT_EQ( a[ 10 ], (ElementType) 3 ); EXPECT_EQ( a[ 11 ], (ElementType) 0 ); EXPECT_EQ( a[ 12 ], (ElementType) 1 ); EXPECT_EQ( a[ 13 ], (ElementType) 4 ); } #endif Loading Loading
src/TNL/Containers/List.h +0 −6 Original line number Diff line number Diff line Loading @@ -10,7 +10,6 @@ #pragma once #include <stdlib.h> #include <iostream> #include <TNL/Assert.h> Loading Loading @@ -41,9 +40,7 @@ template< class T > class ListDataElement; */ template< class T > class List { public: typedef T ElementType; //! Basic constructor Loading Loading @@ -118,7 +115,6 @@ template< class T > class List bool DeepLoad( File& file ); protected: //! Pointer to the first element ListDataElement< T >* first; Loading @@ -135,8 +131,6 @@ template< class T > class List //! Iterator index mutable int index; }; template< typename T > std::ostream& operator << ( std::ostream& str, const List< T >& list ); Loading
src/TNL/Containers/List_impl.h +1 −3 Original line number Diff line number Diff line Loading @@ -203,9 +203,7 @@ template< typename T > template< typename Array > void List< T >::toArray( Array& array ) { TNL_ASSERT( this->getSize() <= array.getSize(), std::cerr << "this->getSize() = " << this->getSize() << " array.getSize() = " << array.getSize() << std::endl; ); array.setSize( this->getSize() ); for( int i = 0; i < this->getSize(); i++ ) array[ i ] = ( *this )[ i ]; } Loading
src/UnitTests/Containers/ListTest.cpp +95 −1 Original line number Diff line number Diff line Loading @@ -14,8 +14,102 @@ #include <TNL/Containers/List.h> using namespace TNL; using namespace TNL::Containers; // TODO // test fixture for typed tests template< typename List > class ListTest : public ::testing::Test { protected: using ListType = List; }; // types for which ListTest is instantiated using ListTypes = ::testing::Types< List< short >, List< int >, List< long >, List< float >, List< double >, List< String > >; TYPED_TEST_CASE( ListTest, ListTypes ); TYPED_TEST( ListTest, constructor ) { using ListType = typename TestFixture::ListType; ListType list; EXPECT_TRUE( list.isEmpty() ); EXPECT_EQ( list.getSize(), 0 ); list.Append( 0 ); EXPECT_EQ( list.getSize(), 1 ); ListType copy( list ); list.Append( 0 ); EXPECT_EQ( list.getSize(), 2 ); EXPECT_EQ( copy.getSize(), 1 ); EXPECT_EQ( copy[ 0 ], list[ 0 ] ); } TYPED_TEST( ListTest, operations ) { using ListType = typename TestFixture::ListType; using ElementType = typename ListType::ElementType; ListType a, b; a.Append( 0 ); a.Append( 1 ); a.Prepend( 2 ); a.Insert( 3, 1 ); EXPECT_EQ( a.getSize(), 4 ); EXPECT_EQ( a[ 0 ], (ElementType) 2 ); EXPECT_EQ( a[ 1 ], (ElementType) 3 ); EXPECT_EQ( a[ 2 ], (ElementType) 0 ); EXPECT_EQ( a[ 3 ], (ElementType) 1 ); b = a; EXPECT_EQ( b.getSize(), 4 ); EXPECT_EQ( a, b ); b.Insert( 4, 4 ); EXPECT_NE( a, b ); EXPECT_EQ( b[ 4 ], (ElementType) 4 ); a.AppendList( b ); EXPECT_EQ( a.getSize(), 9 ); EXPECT_EQ( a[ 0 ], (ElementType) 2 ); EXPECT_EQ( a[ 1 ], (ElementType) 3 ); EXPECT_EQ( a[ 2 ], (ElementType) 0 ); EXPECT_EQ( a[ 3 ], (ElementType) 1 ); EXPECT_EQ( a[ 4 ], (ElementType) 2 ); EXPECT_EQ( a[ 5 ], (ElementType) 3 ); EXPECT_EQ( a[ 6 ], (ElementType) 0 ); EXPECT_EQ( a[ 7 ], (ElementType) 1 ); EXPECT_EQ( a[ 8 ], (ElementType) 4 ); a.PrependList( b ); EXPECT_EQ( a.getSize(), 14 ); EXPECT_EQ( a[ 0 ], (ElementType) 2 ); EXPECT_EQ( a[ 1 ], (ElementType) 3 ); EXPECT_EQ( a[ 2 ], (ElementType) 0 ); EXPECT_EQ( a[ 3 ], (ElementType) 1 ); EXPECT_EQ( a[ 4 ], (ElementType) 4 ); EXPECT_EQ( a[ 5 ], (ElementType) 2 ); EXPECT_EQ( a[ 6 ], (ElementType) 3 ); EXPECT_EQ( a[ 7 ], (ElementType) 0 ); EXPECT_EQ( a[ 8 ], (ElementType) 1 ); EXPECT_EQ( a[ 9 ], (ElementType) 2 ); EXPECT_EQ( a[ 10 ], (ElementType) 3 ); EXPECT_EQ( a[ 11 ], (ElementType) 0 ); EXPECT_EQ( a[ 12 ], (ElementType) 1 ); EXPECT_EQ( a[ 13 ], (ElementType) 4 ); } #endif Loading