OILS / spec / ysh-convert.test.sh View on Github | oilshell.org

174 lines, 108 significant
1#### bool() conversion
2echo "$[bool(1234)]"
3echo "$[bool(0)]"
4echo "$[bool('foo')]"
5echo "$[bool(true)]"
6echo "$[bool(1.234)]"
7echo "$[bool([])]"
8echo "$[bool({})]"
9echo "$[bool(null)]"
10echo "$[bool(len)]"
11echo "$[bool('foo'=>startsWith)]"
12echo "$[bool(1..3)]"
13## STDOUT:
14true
15false
16true
17true
18true
19false
20false
21false
22true
23true
24true
25## END
26
27#### bool() more
28var a = bool( :|| )
29var b = bool( :|foo| )
30write $a $b
31## STDOUT:
32false
33true
34## END
35
36
37#### int() conversion
38echo "$[int(1234)]"
39echo "$[int('1234')]"
40echo "$[int(1.234)]"
41## STDOUT:
421234
431234
441
45## END
46
47#### int() more
48pp test_ (int("3"))
49pp test_ (int("-35"))
50pp test_ (int('5_6'))
51
52shopt -s ysh:upgrade
53
54try {
55 var c = int("bad")
56}
57echo code=$[_error.code]
58
59## STDOUT:
60(Int) 3
61(Int) -35
62(Int) 56
63code=3
64## END
65
66#### float() conversion
67echo "$[float(1234)]"
68echo "$[float('1.234')]"
69echo "$[float(2.345)]"
70## STDOUT:
711234.0
721.234
732.345
74## END
75
76#### float() overflow / underflow
77
78var a = float("1.2")
79var b = float("3.4")
80
81var c = float("42.1e500")
82var d = float("-42.1e500")
83
84write $a $b $c $d
85## STDOUT:
861.2
873.4
88inf
89-inf
90## END
91
92#### str() conversion
93echo "$[str(1234)]"
94echo "$[str(1.234)]"
95echo "$[str('foo')]"
96## STDOUT:
971234
981.234
99foo
100## END
101
102#### dict() converts from BashAssoc to Dict
103declare -A foo
104foo=([a]=1 [b]=2 [c]=3)
105
106json write (type(foo))
107json write (dict(foo))
108## STDOUT:
109"BashAssoc"
110{
111 "a": "1",
112 "b": "2",
113 "c": "3"
114}
115## END
116
117#### dict() does shallow copy
118var d = {'a': 1}
119var d2 = d
120setvar d2['b'] = 2
121echo $['b' in d] # d2 should be an alias for d
122
123var d3 = dict(d)
124setvar d3['c'] = 3
125
126# d3 should NOT be an alias
127echo $['c' in d]
128echo $['c' in d3]
129## STDOUT:
130true
131false
132true
133## END
134
135#### list() does shallow copy
136var l = [1]
137var l2 = l
138call l2->append(2)
139echo $[len(l)] # d2 should be an alias for d
140
141var l3 = list(l)
142call l3->append(3)
143
144# l3 should NOT be an alias
145echo $[len(l)]
146echo $[len(l3)]
147## STDOUT:
1482
1492
1503
151## END
152
153#### list() from Dict
154shopt -s ysh:upgrade
155
156var a = list({'a': 1, 'foo': 'bar'})
157write @a
158## STDOUT:
159a
160foo
161## END
162
163
164#### list() from range
165shopt -s ysh:upgrade
166
167var mylist = list(0..3)
168write @mylist
169## STDOUT:
1700
1711
1722
173## END
174