list_ut.pyx 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. from util.generic.list cimport TList
  2. import unittest
  3. from cython.operator cimport preincrement
  4. class TestList(unittest.TestCase):
  5. def test_ctor1(self):
  6. cdef TList[int] tmp = TList[int]()
  7. self.assertEqual(tmp.size(), 0)
  8. def test_ctor2(self):
  9. cdef TList[int] tmp = TList[int](10, 42)
  10. self.assertEqual(tmp.size(), 10)
  11. self.assertEqual(tmp.front(), 42)
  12. def test_ctor3(self):
  13. cdef TList[int] tmp = TList[int](10, 42)
  14. cdef TList[int] tmp2 = TList[int](tmp)
  15. self.assertEqual(tmp2.size(), 10)
  16. self.assertEqual(tmp2.front(), 42)
  17. def test_operator_assign(self):
  18. cdef TList[int] tmp2
  19. tmp2.push_back(1)
  20. tmp2.push_back(2)
  21. cdef TList[int] tmp3
  22. tmp3.push_back(1)
  23. tmp3.push_back(3)
  24. tmp3 = tmp2
  25. def test_compare(self):
  26. cdef TList[int] tmp1
  27. tmp1.push_back(1)
  28. tmp1.push_back(2)
  29. cdef TList[int] tmp2
  30. tmp2.push_back(1)
  31. tmp2.push_back(2)
  32. cdef TList[int] tmp3
  33. tmp3.push_back(1)
  34. tmp3.push_back(3)
  35. self.assertTrue(tmp1 == tmp2)
  36. self.assertTrue(tmp1 != tmp3)
  37. self.assertTrue(tmp1 < tmp3)
  38. self.assertTrue(tmp1 <= tmp3)
  39. self.assertTrue(tmp3 > tmp1)
  40. self.assertTrue(tmp3 >= tmp1)
  41. def test_push_pop_back(self):
  42. cdef TList[int] tmp
  43. self.assertEqual(tmp.size(), 0)
  44. tmp.push_back(42)
  45. self.assertEqual(tmp.size(), 1)
  46. self.assertEqual(tmp.back(), 42)
  47. tmp.push_back(77)
  48. self.assertEqual(tmp.size(), 2)
  49. self.assertEqual(tmp.back(), 77)
  50. tmp.pop_back()
  51. self.assertEqual(tmp.size(), 1)
  52. self.assertEqual(tmp.back(), 42)
  53. tmp.pop_back()
  54. self.assertEqual(tmp.size(), 0)
  55. def test_front(self):
  56. cdef TList[int] tmp
  57. tmp.push_back(42)
  58. self.assertEqual(tmp.front(), 42)
  59. def test_empty(self):
  60. cdef TList[int] tmp
  61. self.assertTrue(tmp.empty())
  62. tmp.push_back(42)
  63. self.assertFalse(tmp.empty())
  64. def test_max_size(self):
  65. cdef TList[int] tmp
  66. self.assertTrue(tmp.max_size() > 0)
  67. def test_resize(self):
  68. cdef TList[int] tmp
  69. tmp.resize(100, 42)
  70. self.assertEqual(tmp.size(), 100)
  71. self.assertEqual(tmp.front(), 42)
  72. self.assertEqual(tmp.back(), 42)
  73. def test_iter(self):
  74. cdef TList[int] tmp
  75. tmp.push_back(1)
  76. tmp.push_back(20)
  77. tmp.push_back(300)
  78. self.assertEqual([i for i in tmp], [1, 20, 300])
  79. def test_iterator(self):
  80. cdef TList[int] tmp
  81. self.assertTrue(tmp.begin() == tmp.end())
  82. self.assertTrue(tmp.rbegin() == tmp.rend())
  83. self.assertTrue(tmp.const_begin() == tmp.const_end())
  84. self.assertTrue(tmp.const_rbegin() == tmp.const_rend())
  85. tmp.push_back(1)
  86. self.assertTrue(tmp.begin() != tmp.end())
  87. self.assertTrue(tmp.rbegin() != tmp.rend())
  88. self.assertTrue(tmp.const_begin() != tmp.const_end())
  89. self.assertTrue(tmp.const_rbegin() != tmp.const_rend())
  90. self.assertTrue(preincrement(tmp.begin()) == tmp.end())
  91. self.assertTrue(preincrement(tmp.rbegin()) == tmp.rend())
  92. self.assertTrue(preincrement(tmp.const_begin()) == tmp.const_end())
  93. self.assertTrue(preincrement(tmp.const_rbegin()) == tmp.const_rend())
  94. def test_assign(self):
  95. cdef TList[int] tmp
  96. tmp.assign(10, 42)
  97. self.assertEqual(tmp.size(), 10)
  98. self.assertEqual(tmp.front(), 42)
  99. self.assertEqual(tmp.back(), 42)
  100. def test_insert(self):
  101. cdef TList[int] tmp
  102. tmp.push_back(1)
  103. tmp.push_back(2)
  104. tmp.push_back(3)
  105. tmp.insert(tmp.begin(), 8)
  106. self.assertEqual([i for i in tmp], [8, 1, 2, 3])
  107. tmp.insert(tmp.begin(), 2, 6)
  108. self.assertEqual([i for i in tmp], [6, 6, 8, 1, 2, 3])
  109. def test_erase(self):
  110. cdef TList[int] tmp
  111. tmp.push_back(1)
  112. tmp.push_back(2)
  113. tmp.push_back(3)
  114. tmp.push_back(4)
  115. tmp.erase(preincrement(tmp.begin()))
  116. self.assertEqual([i for i in tmp], [1, 3, 4])
  117. tmp.erase(tmp.begin(), preincrement(preincrement(tmp.begin())))
  118. self.assertEqual([i for i in tmp], [4])