OILS / spec / assign-dialects.test.sh View on Github | oils.pub

149 lines, 83 significant
1## oils_failures_allowed: 3
2## compare_shells: bash mksh
3
4# TODO: compare with AT&T ksh - it has this feature
5
6#### K and V are variables in (( array[K] = V ))
7K=5
8V=42
9typeset -a array
10(( array[K] = V ))
11
12echo array[5]=${array[5]}
13echo keys = ${!array[@]}
14echo values = ${array[@]}
15## STDOUT:
16array[5]=42
17keys = 5
18values = 42
19## END
20
21#### test -v with strings
22test -v str
23echo str=$?
24
25str=x
26
27test -v str
28echo str=$?
29
30## STDOUT:
31str=1
32str=0
33## END
34## BUG mksh STDOUT:
35str=2
36str=2
37## END
38
39#### test -v with arrays
40
41typeset -a a
42
43test -v a
44echo a=$?
45test -v 'a[0]'
46echo "a[0]=$?"
47echo
48
49a[0]=1
50
51test -v a
52echo a=$?
53test -v 'a[0]'
54echo "a[0]=$?"
55echo
56
57test -v 'a[1]'
58echo "a[1]=$?"
59
60# stupid rule about undefined 'x'
61test -v 'a[x]'
62echo "a[x]=$?"
63echo
64
65## STDOUT:
66a=1
67a[0]=1
68
69a=0
70a[0]=0
71
72a[1]=1
73a[x]=0
74
75## END
76
77## BUG mksh STDOUT:
78a=2
79a[0]=2
80
81a=2
82a[0]=2
83
84a[1]=2
85a[x]=2
86
87## END
88
89#### test -v with assoc arrays
90
91typeset -A A
92
93test -v A
94echo A=$?
95test -v 'A[0]'
96echo "A[0]=$?"
97echo
98
99A['0']=x
100
101test -v A
102echo A=$?
103test -v 'A[0]'
104echo "A[0]=$?"
105echo
106
107test -v 'A[1]'
108echo "A[1]=$?"
109
110# stupid rule about undefined 'x'
111test -v 'A[x]'
112echo "A[x]=$?"
113echo
114
115## STDOUT:
116A=1
117A[0]=1
118
119A=0
120A[0]=0
121
122A[1]=1
123A[x]=1
124
125## END
126
127## N-I ksh STDOUT:
128A=1
129A[0]=1
130
131A=1
132A[0]=1
133
134A[1]=1
135A[x]=1
136
137## END
138
139## BUG mksh STDOUT:
140A=2
141A[0]=2
142
143A=2
144A[0]=2
145
146A[1]=2
147A[x]=2
148
149## END