diff options
author | jilles <jilles@FreeBSD.org> | 2010-01-03 12:50:27 +0000 |
---|---|---|
committer | jilles <jilles@FreeBSD.org> | 2010-01-03 12:50:27 +0000 |
commit | 6568fbfc9d3b30aaa0420f6ee247e516da214618 (patch) | |
tree | f067c53a4552de4f4d02cacff79bc2e2d6c83364 /tools | |
parent | 82a9840cd0329e27ff3c30e21b9e6a53419dd61a (diff) | |
download | FreeBSD-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.0 | 76 |
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)) |