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

Tests for List

parent 0a4c9f2c
No related branches found
No related tags found
No related merge requests found
......@@ -10,7 +10,6 @@
#pragma once
#include <stdlib.h>
#include <iostream>
#include <TNL/Assert.h>
......@@ -41,9 +40,7 @@ template< class T > class ListDataElement;
*/
template< class T > class List
{
public:
typedef T ElementType;
//! Basic constructor
......@@ -118,7 +115,6 @@ template< class T > class List
bool DeepLoad( File& file );
protected:
//! Pointer to the first element
ListDataElement< T >* first;
......@@ -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 );
......
......@@ -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 ];
}
......
......@@ -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
......
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