-
Notifications
You must be signed in to change notification settings - Fork 2
/
test_lazyseq.py
63 lines (48 loc) · 2.04 KB
/
test_lazyseq.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import unittest
from lazyseq import LazySeq
class Cases(object):
def test_items(self):
self.assertEqual(list(self.seq), list(range(5)))
def test_cache(self):
self.assertEqual(self.seq._cached_items, [])
self.seq.cache(0)
self.assertEqual(self.seq._cached_items, [])
self.seq.cache(1)
self.assertEqual(self.seq._cached_items, [0])
self.seq.cache(3)
self.assertEqual(self.seq._cached_items, [0, 1, 2])
self.seq.cache()
self.assertEqual(self.seq._cached_items, list(range(5)))
def test_getitem_simple(self):
self.assertEqual(self.seq[0], 0)
self.assertEqual(self.seq._cached_items, [0])
self.assertEqual(self.seq[:3], [0, 1, 2])
self.assertEqual(self.seq._cached_items, [0, 1, 2])
self.assertEqual(self.seq[:], list(range(5)))
self.assertEqual(self.seq._cached_items, list(range(5)))
def test_getitem_complex(self):
self.assertEqual(self.seq[1:3], [1, 2])
self.assertEqual(self.seq._cached_items, list(range(3)))
def test_getitem_complex2(self):
self.assertEqual(self.seq[3:1:-1], [3, 2])
self.assertEqual(self.seq._cached_items, list(range(4)))
def test_getitem_negative(self):
self.assertEqual(self.seq[-1], 4)
self.assertEqual(self.seq._cached_items, list(range(5)))
def test_repr(self):
self.assertEqual(repr(self.seq), 'LazySeq([...])')
self.seq.cache(1)
self.assertEqual(repr(self.seq), 'LazySeq([0, ...])')
self.seq.cache(3)
self.assertEqual(repr(self.seq), 'LazySeq([0, 1, 2, ...])')
self.seq.cache()
self.assertEqual(repr(self.seq), 'LazySeq([0, 1, 2, 3, 4])')
class TestListLazySeq(unittest.TestCase, Cases):
def setUp(self):
self.seq = LazySeq(list(range(5)))
class TestRangeLazySeq(unittest.TestCase, Cases):
def setUp(self):
self.seq = LazySeq(range(5))
class TestGeneratorLazySeq(unittest.TestCase, Cases):
def setUp(self):
self.seq = LazySeq(i for i in range(5))