1 ## our_shell: ysh
2 ## oils_failures_allowed: 0
3
4 #### basic array
5 var x = :| 1 2 3 |
6 write len=$[len(x)]
7 ## STDOUT:
8 len=3
9 ## END
10
11 #### string array with command sub, varsub, etc.
12 shopt -s ysh:all
13
14 var x = 1
15 var a = :| $x $(write hi) 'sq' "dq $x" |
16 write len=$[len(a)]
17 write @a
18 ## STDOUT:
19 len=4
20 1
21 hi
22 sq
23 dq 1
24 ## END
25
26 #### Can print type of List with pp
27
28 var b = :|true| # this is a string
29 pp line (b)
30
31 # = b
32
33 var empty = :||
34 pp line (empty)
35
36 # = empty
37
38 ## STDOUT:
39 (List) ["true"]
40 (List) []
41 ## END
42
43 #### splice and stringify array
44
45 shopt -s parse_at
46
47 var x = :| 'a b' c |
48
49 declare -a array=( @x )
50
51 argv.py "${array[@]}" # should work
52
53 echo -$array- # fails because of strict_arraywith type error
54
55 echo -$x- # fails with type error
56
57 ## status: 1
58 ## STDOUT:
59 ['a b', 'c']
60 ## END
61
62 #### List->extend()
63 var l = list(1..3)
64 echo $[len(l)]
65 call l->extend(list(3..6))
66 echo $[len(l)]
67 ## STDOUT:
68 2
69 5
70 ## END
71
72 #### List append()/extend() should return null
73 shopt -s oil:all
74 var l = list(1..3)
75
76 var result = l->extend(list(3..6))
77 call assert_(result === null)
78
79 setvar result = l->append(6)
80 call assert_(result === null)
81
82 echo pass
83 ## STDOUT:
84 pass
85 ## END
86
87 #### List pop()
88 shopt -s oil:all
89 var l = list(1..5)
90 call assert_(l->pop() === 4)
91 call assert_(l->pop() === 3)
92 call assert_(l->pop() === 2)
93 call assert_(l->pop() === 1)
94 echo pass
95 ## STDOUT:
96 pass
97 ## END