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])