2019-08-03 05:29:50 +03:00
|
|
|
#!/bin/bash
|
|
|
|
assert() {
|
|
|
|
expected="$1"
|
|
|
|
input="$2"
|
|
|
|
|
|
|
|
./chibicc "$input" > tmp.s || exit
|
|
|
|
gcc -static -o tmp tmp.s
|
|
|
|
./tmp
|
|
|
|
actual="$?"
|
|
|
|
|
|
|
|
if [ "$actual" = "$expected" ]; then
|
|
|
|
echo "$input => $actual"
|
|
|
|
else
|
|
|
|
echo "$input => $expected expected, but got $actual"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2020-09-26 02:50:44 +03:00
|
|
|
assert 0 '0;'
|
|
|
|
assert 42 '42;'
|
|
|
|
assert 21 '5+20-4;'
|
|
|
|
assert 41 ' 12 + 34 - 5 ;'
|
|
|
|
assert 47 '5+6*7;'
|
|
|
|
assert 15 '5*(9-6);'
|
|
|
|
assert 4 '(3+5)/2;'
|
|
|
|
assert 10 '-10+20;'
|
|
|
|
assert 10 '- -10;'
|
|
|
|
assert 10 '- - +10;'
|
|
|
|
|
|
|
|
assert 0 '0==1;'
|
|
|
|
assert 1 '42==42;'
|
|
|
|
assert 1 '0!=1;'
|
|
|
|
assert 0 '42!=42;'
|
|
|
|
|
|
|
|
assert 1 '0<1;'
|
|
|
|
assert 0 '1<1;'
|
|
|
|
assert 0 '2<1;'
|
|
|
|
assert 1 '0<=1;'
|
|
|
|
assert 1 '1<=1;'
|
|
|
|
assert 0 '2<=1;'
|
|
|
|
|
|
|
|
assert 1 '1>0;'
|
|
|
|
assert 0 '1>1;'
|
|
|
|
assert 0 '1>2;'
|
|
|
|
assert 1 '1>=0;'
|
|
|
|
assert 1 '1>=1;'
|
|
|
|
assert 0 '1>=2;'
|
|
|
|
|
2020-10-07 14:12:19 +03:00
|
|
|
assert 3 'a=3; a;'
|
|
|
|
assert 8 'a=3; z=5; a+z;'
|
2019-08-03 10:15:23 +03:00
|
|
|
|
2020-09-26 02:59:56 +03:00
|
|
|
assert 3 'a=3; a;'
|
|
|
|
assert 8 'a=3; z=5; a+z;'
|
|
|
|
assert 6 'a=b=3; a+b;'
|
2020-10-07 14:12:19 +03:00
|
|
|
assert 3 'foo=3; foo;'
|
|
|
|
assert 8 'foo123=3; bar=5; foo123+bar;'
|
2020-09-26 02:59:56 +03:00
|
|
|
|
2019-08-03 05:29:50 +03:00
|
|
|
echo OK
|