aboutsummaryrefslogblamecommitdiffstats
path: root/util/generic/list_ut.pyx
blob: 129e5bc9b673299d2aa60369dd9fca86533ec418 (plain) (tree)
1
2
3
4
5
6
7
8
9
                                    
               
                                         
 
                                  
                         
                                          

                                       
                                                
                                        
                                         
                         
                                                
                                         
                                          
                                   
                            

                         
                            




                           
                            

                         
                            

                         
                            











                                     
                           
















                                        
                           


                                         
                           



                                     
                           
                                           
                           





                                         
                           





                                                        
                           











                                                               


                                                                             
                          
                           





                                         
                           









                                                              
                           



                        
                                            
                                                     
                                                                       
                                               
from util.generic.list cimport TList

import unittest
from cython.operator cimport preincrement


class TestList(unittest.TestCase):

    def test_ctor1(self):
        cdef TList[int] tmp = TList[int]()
        self.assertEqual(tmp.size(), 0)

    def test_ctor2(self):
        cdef TList[int] tmp = TList[int](10, 42)
        self.assertEqual(tmp.size(), 10)
        self.assertEqual(tmp.front(), 42)

    def test_ctor3(self):
        cdef TList[int] tmp = TList[int](10, 42)
        cdef TList[int] tmp2 = TList[int](tmp)
        self.assertEqual(tmp2.size(), 10)
        self.assertEqual(tmp2.front(), 42)

    def test_operator_assign(self):
        cdef TList[int] tmp2
        tmp2.push_back(1)
        tmp2.push_back(2)

        cdef TList[int] tmp3
        tmp3.push_back(1)
        tmp3.push_back(3)

        tmp3 = tmp2

    def test_compare(self):
        cdef TList[int] tmp1
        tmp1.push_back(1)
        tmp1.push_back(2)

        cdef TList[int] tmp2
        tmp2.push_back(1)
        tmp2.push_back(2)

        cdef TList[int] tmp3
        tmp3.push_back(1)
        tmp3.push_back(3)

        self.assertTrue(tmp1 == tmp2)
        self.assertTrue(tmp1 != tmp3)

        self.assertTrue(tmp1 < tmp3)
        self.assertTrue(tmp1 <= tmp3)

        self.assertTrue(tmp3 > tmp1)
        self.assertTrue(tmp3 >= tmp1)

    def test_push_pop_back(self):
        cdef TList[int] tmp
        self.assertEqual(tmp.size(), 0)

        tmp.push_back(42)
        self.assertEqual(tmp.size(), 1)
        self.assertEqual(tmp.back(), 42)

        tmp.push_back(77)
        self.assertEqual(tmp.size(), 2)
        self.assertEqual(tmp.back(), 77)

        tmp.pop_back()
        self.assertEqual(tmp.size(), 1)
        self.assertEqual(tmp.back(), 42)

        tmp.pop_back()
        self.assertEqual(tmp.size(), 0)

    def test_front(self):
        cdef TList[int] tmp
        tmp.push_back(42)
        self.assertEqual(tmp.front(), 42)

    def test_empty(self):
        cdef TList[int] tmp
        self.assertTrue(tmp.empty())
        tmp.push_back(42)
        self.assertFalse(tmp.empty())

    def test_max_size(self):
        cdef TList[int] tmp
        self.assertTrue(tmp.max_size() > 0)

    def test_resize(self):
        cdef TList[int] tmp

        tmp.resize(100, 42)
        self.assertEqual(tmp.size(), 100)
        self.assertEqual(tmp.front(), 42)
        self.assertEqual(tmp.back(), 42)

    def test_iter(self):
        cdef TList[int] tmp
        tmp.push_back(1)
        tmp.push_back(20)
        tmp.push_back(300)

        self.assertEqual([i for i in tmp], [1, 20, 300])

    def test_iterator(self):
        cdef TList[int] tmp

        self.assertTrue(tmp.begin() == tmp.end())
        self.assertTrue(tmp.rbegin() == tmp.rend())
        self.assertTrue(tmp.const_begin() == tmp.const_end())
        self.assertTrue(tmp.const_rbegin() == tmp.const_rend())

        tmp.push_back(1)

        self.assertTrue(tmp.begin() != tmp.end())
        self.assertTrue(tmp.rbegin() != tmp.rend())
        self.assertTrue(tmp.const_begin() != tmp.const_end())
        self.assertTrue(tmp.const_rbegin() != tmp.const_rend())

        self.assertTrue(preincrement(tmp.begin()) == tmp.end())
        self.assertTrue(preincrement(tmp.rbegin()) == tmp.rend())
        self.assertTrue(preincrement(tmp.const_begin()) == tmp.const_end())
        self.assertTrue(preincrement(tmp.const_rbegin()) == tmp.const_rend())

    def test_assign(self):
        cdef TList[int] tmp

        tmp.assign(10, 42)
        self.assertEqual(tmp.size(), 10)
        self.assertEqual(tmp.front(), 42)
        self.assertEqual(tmp.back(), 42)

    def test_insert(self):
        cdef TList[int] tmp
        tmp.push_back(1)
        tmp.push_back(2)
        tmp.push_back(3)

        tmp.insert(tmp.begin(), 8)
        self.assertEqual([i for i in tmp], [8, 1, 2, 3])

        tmp.insert(tmp.begin(), 2, 6)
        self.assertEqual([i for i in tmp], [6, 6, 8, 1, 2, 3])

    def test_erase(self):
        cdef TList[int] tmp
        tmp.push_back(1)
        tmp.push_back(2)
        tmp.push_back(3)
        tmp.push_back(4)

        tmp.erase(preincrement(tmp.begin()))
        self.assertEqual([i for i in tmp], [1, 3, 4])

        tmp.erase(tmp.begin(), preincrement(preincrement(tmp.begin())))
        self.assertEqual([i for i in tmp], [4])