Skip to content

Commit 4c5f561

Browse files
authored
Add tests for the seq module (#87)
1 parent 86584bf commit 4c5f561

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

basilisp/lang/seq.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ def rest(self) -> Optional["Seq[T]"]:
100100
n = next(self._seq)
101101
return _Sequence(self._seq, n)
102102
except StopIteration:
103-
return None
103+
return _EmptySequence()
104104

105105
def cons(self, elem):
106106
return Cons(elem, self)
@@ -132,3 +132,7 @@ def sequence(s: Iterable) -> Seq[Any]:
132132
return _Sequence(i, next(i))
133133
except StopIteration:
134134
return _EmptySequence()
135+
136+
137+
def empty() -> Seq[Any]:
138+
return _EmptySequence()

tests/seq_test.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import basilisp.lang.list as llist
2+
import basilisp.lang.seq as lseq
3+
4+
5+
def test_to_sequence():
6+
assert lseq.empty() == lseq.sequence([])
7+
assert llist.l(1) == lseq.sequence([1])
8+
assert llist.l(1, 2, 3) == lseq.sequence([1, 2, 3])
9+
10+
11+
def test_empty_sequence():
12+
empty = lseq.sequence([])
13+
assert None is empty.first
14+
assert empty.rest == empty
15+
assert llist.l(1) == empty.cons(1)
16+
assert lseq.empty() == empty
17+
18+
19+
def test_sequence():
20+
s = lseq.sequence([1])
21+
assert 1 == s.first
22+
assert lseq.empty() == s.rest
23+
assert llist.l(2, 1) == s.cons(2)
24+
assert [1, 2, 3] == [e for e in lseq.sequence([1, 2, 3])]
25+
assert llist.l(1, 2, 3) == lseq.sequence([1, 2, 3])
26+
assert llist.l(1, 2, 3) == lseq.sequence(llist.l(1, 2, 3))
27+
assert llist.l(1, 2, 3) == llist.list(lseq.sequence([1, 2, 3]))

0 commit comments

Comments
 (0)