From b433171fb643723a18b415605a84537aa990f8c8 Mon Sep 17 00:00:00 2001 From: Simon Brooke Date: Fri, 18 Jan 2019 14:25:32 +0000 Subject: [PATCH] Problem is that reading bignums depends on multiplying bignums... Which doesn't work for the second digit into bignum territory - so it's fine at the boundary... --- unit-tests/bignum-add.sh | 1 - unit-tests/bignum-print.sh | 81 ++++++++++++++++++++++++++++++++++++-- 2 files changed, 77 insertions(+), 5 deletions(-) diff --git a/unit-tests/bignum-add.sh b/unit-tests/bignum-add.sh index a4244ee..280eca9 100644 --- a/unit-tests/bignum-add.sh +++ b/unit-tests/bignum-add.sh @@ -185,4 +185,3 @@ else exit 1 fi -1329227995784915872903807060280344576 diff --git a/unit-tests/bignum-print.sh b/unit-tests/bignum-print.sh index 69d2d24..5615871 100644 --- a/unit-tests/bignum-print.sh +++ b/unit-tests/bignum-print.sh @@ -3,7 +3,7 @@ ##################################################################### # large number, not actally a bignum expected='576460752303423488' -output=`echo "(progn (print $expected) nil)" | target/psse` +output=`echo "(progn (print $expected) nil)" | target/psse -v 2 2>psse.log` actual=`echo $output |\ sed 's/\,//g' |\ @@ -18,10 +18,22 @@ else exit 1 fi +echo -n "checking no bignum was created: " +grep -v 'BIGNUM!' psse.log > /dev/null +if [ $? -eq "0" ] +then + echo "OK" +else + echo "Fail" + exit 1 +fi + + + ##################################################################### # right on the boundary expected='1152921504606846976' -output=`echo "(progn (print $expected) nil)" | target/psse` +output=`echo "(progn (print $expected) nil)" | target/psse -v 2 2>psse.log` actual=`echo $output |\ sed 's/\,//g' |\ @@ -36,10 +48,71 @@ else exit 1 fi +echo -n "checking no bignum was created: " +grep -v 'BIGNUM!' psse.log > /dev/null +if [ $? -eq "0" ] +then + echo "OK" +else + echo "Fail" + exit 1 +fi + + + ##################################################################### # definitely a bignum -expected='1329227995784915872903807060280344577' -output=`echo "(progn (print $expected) nil)" | target/psse` +expected='1152921504606846977' +output=`echo "(progn (print $expected) nil)" | target/psse -v 2 2>psse.log` + +actual=`echo $output |\ + sed 's/\,//g' |\ + sed 's/[^0-9]*\([0-9]*\).*/\1/'` + +echo -n "printing $expected: " +if [ "${expected}" = "${actual}" ] +then + echo "OK" +else + echo "Fail: expected '${expected}', got '${actual}'" + exit 1 +fi + + +echo -n "checking a bignum was created: " +grep 'BIGNUM!' psse.log > /dev/null +if [ $? -eq "0" ] +then + echo "OK" +else + echo "Fail" + exit 1 +fi + +##################################################################### +# Just on the three cell boundary +expected='1329227995784915872903807060280344576' +output=`echo "(progn (print $expected) nil)" | target/psse -v 2 2>psse.log` + +actual=`echo $output |\ + sed 's/\,//g' |\ + sed 's/[^0-9]*\([0-9]*\).*/\1/'` + +echo -n "printing $expected: " +if [ "${expected}" = "${actual}" ] +then + echo "OK" +else + echo "Fail: expected '${expected}', got '${actual}'" + exit 1 +fi + +exit 0 + +##################################################################### +# definitely a three cell bignum +expected='1329227995784915872903807060280344577' +output=`echo "(progn (print $expected) nil)" | target/psse -v 2 2>psse.log` actual=`echo $output |\ sed 's/\,//g' |\