Skip to content
Snippets Groups Projects
ListTest.cpp 3.17 KiB
Newer Older
  • Learn to ignore specific revisions
  • /***************************************************************************
    
                              ListTest.cpp  -  description
    
                                 -------------------
        begin                : Feb 15, 2014
    
        copyright            : (C) 2014 by Tomas Oberhuber et al.
    
        email                : tomas.oberhuber@fjfi.cvut.cz
     ***************************************************************************/
    
    
    /* See Copyright Notice in tnl/Copyright */
    
    #ifdef HAVE_GTEST 
    
    #include <gtest/gtest.h>
    
    #include <TNL/Containers/List.h>
    
    
    using namespace TNL;
    
    Jakub Klinkovský's avatar
    Jakub Klinkovský committed
    using namespace TNL::Containers;
    
    Jakub Klinkovský's avatar
    Jakub Klinkovský committed
    
    // 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 ValueType = typename ListType::ValueType;
    
    Jakub Klinkovský's avatar
    Jakub Klinkovský committed
    
       ListType a, b;
    
    
       a.Append( (ValueType) 0 );
       a.Append( (ValueType) 1 );
       a.Prepend( (ValueType) 2 );
       a.Insert( (ValueType) 3, 1 );
    
    Jakub Klinkovský's avatar
    Jakub Klinkovský committed
       EXPECT_EQ( a.getSize(), 4 );
    
       EXPECT_EQ( a[ 0 ], (ValueType) 2 );
       EXPECT_EQ( a[ 1 ], (ValueType) 3 );
       EXPECT_EQ( a[ 2 ], (ValueType) 0 );
       EXPECT_EQ( a[ 3 ], (ValueType) 1 );
    
    Jakub Klinkovský's avatar
    Jakub Klinkovský committed
    
       b = a;
       EXPECT_EQ( b.getSize(), 4 );
       EXPECT_EQ( a, b );
    
    
    Jakub Klinkovský's avatar
    Jakub Klinkovský committed
       EXPECT_NE( a, b );
    
       EXPECT_EQ( b[ 4 ], (ValueType) 4 );
    
    Jakub Klinkovský's avatar
    Jakub Klinkovský committed
    
       a.AppendList( b );
       EXPECT_EQ( a.getSize(), 9 );
    
       EXPECT_EQ( a[ 0 ], (ValueType) 2 );
       EXPECT_EQ( a[ 1 ], (ValueType) 3 );
       EXPECT_EQ( a[ 2 ], (ValueType) 0 );
       EXPECT_EQ( a[ 3 ], (ValueType) 1 );
       EXPECT_EQ( a[ 4 ], (ValueType) 2 );
       EXPECT_EQ( a[ 5 ], (ValueType) 3 );
       EXPECT_EQ( a[ 6 ], (ValueType) 0 );
       EXPECT_EQ( a[ 7 ], (ValueType) 1 );
       EXPECT_EQ( a[ 8 ], (ValueType) 4 );
    
    Jakub Klinkovský's avatar
    Jakub Klinkovský committed
    
       a.PrependList( b );
       EXPECT_EQ( a.getSize(), 14 );
    
       EXPECT_EQ( a[ 0 ],  (ValueType) 2 );
       EXPECT_EQ( a[ 1 ],  (ValueType) 3 );
       EXPECT_EQ( a[ 2 ],  (ValueType) 0 );
       EXPECT_EQ( a[ 3 ],  (ValueType) 1 );
       EXPECT_EQ( a[ 4 ],  (ValueType) 4 );
       EXPECT_EQ( a[ 5 ],  (ValueType) 2 );
       EXPECT_EQ( a[ 6 ],  (ValueType) 3 );
       EXPECT_EQ( a[ 7 ],  (ValueType) 0 );
       EXPECT_EQ( a[ 8 ],  (ValueType) 1 );
       EXPECT_EQ( a[ 9 ],  (ValueType) 2 );
       EXPECT_EQ( a[ 10 ], (ValueType) 3 );
       EXPECT_EQ( a[ 11 ], (ValueType) 0 );
       EXPECT_EQ( a[ 12 ], (ValueType) 1 );
       EXPECT_EQ( a[ 13 ], (ValueType) 4 );
    
    Jakub Klinkovský's avatar
    Jakub Klinkovský committed
    }
    
    
    #include "../GtestMissingError.h"
    
    int main( int argc, char* argv[] )
    {
    
    #ifdef HAVE_GTEST
       ::testing::InitGoogleTest( &argc, argv );
       return RUN_ALL_TESTS();
    
       throw GtestMissingError();