|
| 1 | +import basilisp.lang.keyword as keyword |
| 2 | +import basilisp.lang.list as llist |
| 3 | +import basilisp.lang.runtime as runtime |
| 4 | +import basilisp.lang.seq as lseq |
| 5 | +import basilisp.lang.vector as vec |
| 6 | + |
| 7 | + |
| 8 | +def test_first(): |
| 9 | + assert None is runtime.first(None) |
| 10 | + assert None is runtime.first(llist.l()) |
| 11 | + assert 1 == runtime.first(llist.l(1)) |
| 12 | + assert 1 == runtime.first(llist.l(1, 2, 3)) |
| 13 | + assert 1 == runtime.first(vec.v(1).seq()) |
| 14 | + assert 1 == runtime.first(vec.v(1)) |
| 15 | + assert 1 == runtime.first(vec.v(1, 2, 3)) |
| 16 | + |
| 17 | + |
| 18 | +def test_rest(): |
| 19 | + assert None is runtime.rest(None) |
| 20 | + assert llist.l() == runtime.rest(llist.l()) |
| 21 | + assert llist.l() == runtime.rest(llist.l(1)) |
| 22 | + assert llist.l(2, 3) == runtime.rest(llist.l(1, 2, 3)) |
| 23 | + assert llist.l() == runtime.rest(vec.v(1).seq()) |
| 24 | + assert llist.l() == runtime.rest(vec.v(1)) |
| 25 | + assert llist.l(2, 3) == runtime.rest(vec.v(1, 2, 3)) |
| 26 | + |
| 27 | + |
| 28 | +def test_next(): |
| 29 | + assert None is runtime.next(None) |
| 30 | + assert None is runtime.next(llist.l()) |
| 31 | + assert None is runtime.next(llist.l(1)) |
| 32 | + assert llist.l(2, 3) == runtime.next(llist.l(1, 2, 3)) |
| 33 | + assert None is runtime.next(vec.v(1).seq()) |
| 34 | + assert None is runtime.next(vec.v(1)) |
| 35 | + assert llist.l(2, 3) == runtime.next(vec.v(1, 2, 3)) |
| 36 | + |
| 37 | + |
| 38 | +def test_cons(): |
| 39 | + assert llist.l(None) == runtime.cons(None, None) |
| 40 | + assert llist.l(1) == runtime.cons(1, None) |
| 41 | + assert llist.l(1) == runtime.cons(1, llist.l()) |
| 42 | + assert llist.l(1, 2, 3) == runtime.cons(1, llist.l(2, 3)) |
| 43 | + assert llist.l(1, 2, 3) == runtime.cons(1, vec.v(2, 3)) |
| 44 | + assert llist.l(1, 2, 3) == runtime.cons(1, vec.v(2, 3).seq()) |
| 45 | + |
| 46 | + |
| 47 | +def test_to_seq(): |
| 48 | + assert None is runtime.to_seq(None) |
| 49 | + |
| 50 | + empty_list = llist.List.empty() |
| 51 | + assert empty_list == runtime.to_seq(empty_list) |
| 52 | + |
| 53 | + one_elem = llist.l(keyword.keyword('kw')) |
| 54 | + assert one_elem == runtime.to_seq(one_elem) |
| 55 | + |
| 56 | + seqable = vec.v(keyword.keyword('kw')) |
| 57 | + assert seqable == runtime.to_seq(seqable) |
| 58 | + |
| 59 | + v1 = vec.v(keyword.keyword('kw'), 1, llist.l("something"), 3) |
| 60 | + s1 = runtime.to_seq(v1) |
| 61 | + assert isinstance(s1, lseq.Seq) |
| 62 | + for v, s in zip(v1, s1): |
| 63 | + assert v == s |
| 64 | + |
| 65 | + py_list = [1, 2, 3] |
| 66 | + assert llist.l(1, 2, 3) == runtime.to_seq(py_list) |
| 67 | + |
| 68 | + |
| 69 | +def test_concat(): |
| 70 | + s1 = runtime.concat() |
| 71 | + assert llist.l() == s1 |
| 72 | + |
| 73 | + s1 = runtime.concat(llist.List.empty(), llist.List.empty()) |
| 74 | + assert llist.l() == s1 |
| 75 | + |
| 76 | + s1 = runtime.concat(llist.List.empty(), llist.l(1, 2, 3)) |
| 77 | + assert s1 == llist.l(1, 2, 3) |
| 78 | + |
| 79 | + s1 = runtime.concat(llist.l(1, 2, 3), vec.v(4, 5, 6)) |
| 80 | + assert s1 == llist.l(1, 2, 3, 4, 5, 6) |
| 81 | + |
| 82 | + |
| 83 | +def test_apply(): |
| 84 | + assert vec.v() == runtime.apply(vec.v, [[]]) |
| 85 | + assert vec.v(1, 2, 3) == runtime.apply(vec.v, [[1, 2, 3]]) |
| 86 | + assert vec.v(vec.v(1, 2, 3), 4, 5, 6) == runtime.apply(vec.v, [vec.v(1, 2, 3), [4, 5, 6]]) |
0 commit comments