1201428Sjilles# $FreeBSD: releng/11.0/bin/sh/tests/expansion/arith2.0 209652 2010-07-02 21:31:24Z jilles $
2201428Sjilles
3201428Sjillesfailures=0
4201428Sjilles
5201428Sjillescheck() {
6201428Sjilles	if [ $(($1)) != $2 ]; then
7201428Sjilles		failures=$((failures+1))
8201428Sjilles		echo "For $1, expected $2 actual $(($1))"
9201428Sjilles	fi
10201428Sjilles}
11201428Sjilles
12201428Sjilles# variables
13201428Sjillesunset v
14201428Sjillescheck "v=2" 2
15201428Sjillescheck "v" 2
16201428Sjillescheck "$(($v))" 2
17201428Sjillescheck "v+=1" 3
18201428Sjillescheck "v" 3
19201428Sjilles
20201428Sjilles# constants
21201428Sjillescheck "4611686018427387904" 4611686018427387904
22201428Sjillescheck "0x4000000000000000" 4611686018427387904
23201428Sjillescheck "0400000000000000000000" 4611686018427387904
24201428Sjillescheck "0x4Ab0000000000000" 5381801554707742720
25204016Sjillescheck "010" 8
26201428Sjilles
27201428Sjilles# try out all operators
28201428Sjillesv=42
29201428Sjillescheck "!v" 0
30201428Sjillescheck "!!v" 1
31201428Sjillescheck "!0" 1
32201428Sjillescheck "~0" -1
33201428Sjillescheck "~(-1)" 0
34201428Sjillescheck "-0" 0
35201428Sjillescheck "-v" -42
36201428Sjillescheck "v*v" 1764
37201428Sjillescheck "v/2" 21
38201428Sjillescheck "v%10" 2
39201428Sjillescheck "v+v" 84
40201428Sjillescheck "v-4" 38
41201428Sjillescheck "v<<1" 84
42201428Sjillescheck "v>>1" 21
43201428Sjillescheck "v<43" 1
44201428Sjillescheck "v>42" 0
45201428Sjillescheck "v<=43" 1
46201428Sjillescheck "v>=43" 0
47201428Sjillescheck "v==41" 0
48201428Sjillescheck "v!=42" 0
49201428Sjillescheck "v&3" 2
50201428Sjillescheck "v^3" 41
51201428Sjillescheck "v|3" 43
52201428Sjillescheck "v>=40&&v<=44" 1
53201428Sjillescheck "v<40||v>44" 0
54201428Sjillescheck "(v=42)&&(v+=1)==43" 1
55201428Sjillescheck "v" 43
56201428Sjillescheck "(v=42)&&(v-=1)==41" 1
57201428Sjillescheck "v" 41
58201428Sjillescheck "(v=42)&&(v*=2)==84" 1
59201428Sjillescheck "v" 84
60201428Sjillescheck "(v=42)&&(v/=10)==4" 1
61201428Sjillescheck "v" 4
62201428Sjillescheck "(v=42)&&(v%=10)==2" 1
63201428Sjillescheck "v" 2
64201428Sjillescheck "(v=42)&&(v<<=1)==84" 1
65201428Sjillescheck "v" 84
66201428Sjillescheck "(v=42)&&(v>>=2)==10" 1
67201428Sjillescheck "v" 10
68201428Sjillescheck "(v=42)&&(v&=32)==32" 1
69201428Sjillescheck "v" 32
70201428Sjillescheck "(v=42)&&(v^=32)==10" 1
71201428Sjillescheck "v" 10
72201428Sjillescheck "(v=42)&&(v|=32)==42" 1
73201428Sjillescheck "v" 42
74201428Sjilles
75209652Sjilles# missing: ternary
76201428Sjilles
77201428Sjillesexit $((failures != 0))
78