2021-05-18 20:39:25 +10:00
|
|
|
#!/usr/bin/env python3.9
|
2019-08-21 16:05:06 +10:00
|
|
|
|
|
|
|
|
|
|
|
|
|
import pickle
|
|
|
|
|
import tempfile
|
|
|
|
|
import unittest
|
|
|
|
|
|
|
|
|
|
import eris.paged_list as paged_list
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class PagedListTestCase(unittest.TestCase):
|
|
|
|
|
|
2020-03-31 14:50:54 +10:00
|
|
|
def test_batch(self):
|
|
|
|
|
self.assertEqual(list(paged_list.batch(iter([3,4,5,6,7]), 2)),
|
|
|
|
|
[[3, 4], [5, 6], [7]])
|
|
|
|
|
|
2019-08-21 16:05:06 +10:00
|
|
|
def test_getitem(self):
|
|
|
|
|
with tempfile.TemporaryDirectory() as temp_dir:
|
|
|
|
|
list_ = paged_list.PagedList([3, 4, 5, 6], temp_dir, 4, 2)
|
2019-12-04 18:39:22 +10:00
|
|
|
self.assertEqual(list_[1], 4)
|
2019-08-21 16:05:06 +10:00
|
|
|
self.assertEqual(list_[1:3], [4, 5])
|
2019-12-04 18:39:22 +10:00
|
|
|
self.assertEqual(list_[0:4], [3, 4, 5, 6])
|
2019-08-21 16:05:06 +10:00
|
|
|
with tempfile.TemporaryDirectory() as temp_dir:
|
|
|
|
|
list_ = paged_list.PagedList([3, 4, 5, 6], temp_dir, 2, 2)
|
|
|
|
|
self.assertEqual(list_[1:3], [4, 5])
|
|
|
|
|
with tempfile.TemporaryDirectory() as temp_dir:
|
|
|
|
|
list_ = paged_list.PagedList([3, 4, 5, 6, 7, 8], temp_dir, 2, 2)
|
|
|
|
|
self.assertEqual(list_[1:5], [4, 5, 6, 7])
|
|
|
|
|
self.assertEqual(list_[:2], [3, 4])
|
|
|
|
|
self.assertEqual(list_[2:], [5, 6, 7, 8])
|
2020-04-09 11:08:39 +10:00
|
|
|
self.assertEqual(list(list_), [3, 4, 5, 6, 7, 8])
|
|
|
|
|
self.assertRaises(IndexError, list_.__getitem__, 6)
|
|
|
|
|
with tempfile.TemporaryDirectory() as temp_dir:
|
|
|
|
|
list_ = paged_list.PagedList([], temp_dir, 2, 2)
|
|
|
|
|
self.assertRaises(IndexError, list_.__getitem__, 0)
|
|
|
|
|
# self.assertEqual(list_[3:4], []) FIX
|
2019-08-21 16:05:06 +10:00
|
|
|
|
|
|
|
|
def test_pickling(self):
|
|
|
|
|
with tempfile.TemporaryDirectory() as temp_dir:
|
|
|
|
|
list_ = paged_list.PagedList([3, 4, 5], temp_dir, 2, 2)
|
|
|
|
|
list_b = pickle.loads(pickle.dumps(list_))
|
|
|
|
|
self.assertEqual(list_b[1], 4)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
unittest.main()
|