summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorjilles <jilles@FreeBSD.org>2010-01-03 12:50:27 +0000
committerjilles <jilles@FreeBSD.org>2010-01-03 12:50:27 +0000
commit6568fbfc9d3b30aaa0420f6ee247e516da214618 (patch)
treef067c53a4552de4f4d02cacff79bc2e2d6c83364 /tools
parent82a9840cd0329e27ff3c30e21b9e6a53419dd61a (diff)
downloadFreeBSD-src-6568fbfc9d3b30aaa0420f6ee247e516da214618.zip
FreeBSD-src-6568fbfc9d3b30aaa0420f6ee247e516da214618.tar.gz
sh: Add a regression test that tries out all arithmetic ops.
MFC after: 1 week
Diffstat (limited to 'tools')
-rw-r--r--tools/regression/bin/sh/expansion/arith2.076
1 files changed, 76 insertions, 0 deletions
diff --git a/tools/regression/bin/sh/expansion/arith2.0 b/tools/regression/bin/sh/expansion/arith2.0
new file mode 100644
index 0000000..c4fdccd
--- /dev/null
+++ b/tools/regression/bin/sh/expansion/arith2.0
@@ -0,0 +1,76 @@
+# $FreeBSD$
+
+failures=0
+
+check() {
+ if [ $(($1)) != $2 ]; then
+ failures=$((failures+1))
+ echo "For $1, expected $2 actual $(($1))"
+ fi
+}
+
+# variables
+unset v
+check "v=2" 2
+check "v" 2
+check "$(($v))" 2
+check "v+=1" 3
+check "v" 3
+
+# constants
+check "4611686018427387904" 4611686018427387904
+check "0x4000000000000000" 4611686018427387904
+check "0400000000000000000000" 4611686018427387904
+check "0x4Ab0000000000000" 5381801554707742720
+
+# try out all operators
+v=42
+check "!v" 0
+check "!!v" 1
+check "!0" 1
+check "~0" -1
+check "~(-1)" 0
+check "-0" 0
+check "-v" -42
+check "v*v" 1764
+check "v/2" 21
+check "v%10" 2
+check "v+v" 84
+check "v-4" 38
+check "v<<1" 84
+check "v>>1" 21
+check "v<43" 1
+check "v>42" 0
+check "v<=43" 1
+check "v>=43" 0
+check "v==41" 0
+check "v!=42" 0
+check "v&3" 2
+check "v^3" 41
+check "v|3" 43
+check "v>=40&&v<=44" 1
+check "v<40||v>44" 0
+check "(v=42)&&(v+=1)==43" 1
+check "v" 43
+check "(v=42)&&(v-=1)==41" 1
+check "v" 41
+check "(v=42)&&(v*=2)==84" 1
+check "v" 84
+check "(v=42)&&(v/=10)==4" 1
+check "v" 4
+check "(v=42)&&(v%=10)==2" 1
+check "v" 2
+check "(v=42)&&(v<<=1)==84" 1
+check "v" 84
+check "(v=42)&&(v>>=2)==10" 1
+check "v" 10
+check "(v=42)&&(v&=32)==32" 1
+check "v" 32
+check "(v=42)&&(v^=32)==10" 1
+check "v" 10
+check "(v=42)&&(v|=32)==42" 1
+check "v" 42
+
+# missing: ternary, comma
+
+exit $((failures != 0))
OpenPOWER on IntegriCloud