OILS / stdlib / ysh / list-test.ysh View on Github | oils.pub

77 lines, 61 significant
1#!bin/ysh
2
3use $LIB_YSH/list.ysh --pick any all repeat
4
5# Change to 'use'?
6source $LIB_OSH/byo-server.sh
7
8proc test-any {
9 assert [false === any([])]
10 assert [true === any([true])]
11 assert [false === any([false])]
12 assert [true === any([true, false])]
13 assert [true === any([false, true])]
14 assert [false === any([false, false])]
15 assert [true === any([false, true, false])]
16 assert [false === any([false, false, null, ""])] # null and "" are falsey
17 assert [true === any(["foo"])] # "foo" is truthy
18}
19
20proc test-all {
21 assert [true === all([])]
22 assert [true === all([true])]
23 assert [false === all([false])]
24 assert [true === all([true, true])]
25 assert [false === all([true, false])]
26 assert [false === all([false, true])]
27 assert [false === all([false, false])]
28 assert [false === all([false, true, false])]
29 assert [true === all(["foo"])]
30 assert [false === all([""])]
31}
32
33proc test-more-any-all {
34 assert [true === all( :|yes yes| ) ]
35 assert [false === all( :|yes ''| ) ]
36 assert [false === all( :|'' ''| ) ]
37
38 assert [true === any( :|yes yes| ) ]
39 assert [true === any( :|yes ''| ) ]
40 assert [false === any( :|'' ''| ) ]
41}
42
43proc test-repeat-str {
44 assert ['foofoofoo' === repeat('foo', 3)]
45 assert ['' === repeat('foo', 0)]
46 assert ['' === repeat('foo',-1)]
47}
48
49proc test-repeat-list {
50 var L = ['foo', 'bar']
51 assert [ :|foo bar foo bar foo bar| === repeat(L, 3) ]
52 assert [ :|| === repeat(L, 0) ]
53 assert [ :|| === repeat(L, -1) ]
54}
55
56proc test-repeat-error {
57 #pp test_ (repeat(null, 3))
58
59 try {
60 pp test_ (repeat(null, 3))
61 }
62 assert [10 === _error.code]
63
64 try {
65 pp test_ (repeat({}, 3))
66 }
67 assert [10 === _error.code]
68
69 try {
70 pp test_ (repeat(42, 3))
71 }
72 assert [10 === _error.code]
73}
74
75if is-main {
76 byo-maybe-run
77}