diff --git a/modules/preprocs/yapp/Makefile.inc b/modules/preprocs/yapp/Makefile.inc index db445583..bfb6e090 100644 --- a/modules/preprocs/yapp/Makefile.inc +++ b/modules/preprocs/yapp/Makefile.inc @@ -11,3 +11,15 @@ BUILT_SOURCES += \ CLEANFILES += \ yapp-token.c + src/tests/yapp_test.sh + +TESTS += \ + src/preprocs/yapp/tests/yapp_test.sh + +EXTRA_DIST += \ + src/preprocs/yapp/tests/define.asm \ + src/preprocs/yapp/tests/define.pre + +CLEANFILES += \ + define.yp + diff --git a/modules/preprocs/yapp/tests/define.asm b/modules/preprocs/yapp/tests/define.asm new file mode 100644 index 00000000..f9330d39 --- /dev/null +++ b/modules/preprocs/yapp/tests/define.asm @@ -0,0 +1,4 @@ +%define foo 5 +%define bar baz + mov ax, [foo+bar] +%define baz bzzt diff --git a/modules/preprocs/yapp/tests/define.pre b/modules/preprocs/yapp/tests/define.pre new file mode 100644 index 00000000..5815282b --- /dev/null +++ b/modules/preprocs/yapp/tests/define.pre @@ -0,0 +1,4 @@ + + + mov ax, [5+baz] + diff --git a/modules/preprocs/yapp/tests/yapp_test.sh b/modules/preprocs/yapp/tests/yapp_test.sh new file mode 100755 index 00000000..e3137f9f --- /dev/null +++ b/modules/preprocs/yapp/tests/yapp_test.sh @@ -0,0 +1,37 @@ +#!/bin/sh + +# +# Verify that all test cases match +# (aside from whitespace for now) +# + +passedct=0 +passedlist='' +failedct=0 +failedlist='' + +YT=" - YAPP_TEST" + + +for asm in ${srcdir}/src/preprocs/yapp/tests/*.asm +do + a=`echo ${asm} | sed -e 's,^.*/,,' | sed -e 's,.asm$,,'` + y=${a}.yp + p=`echo ${asm} | sed -e 's,.asm$,.pre,'` + + echo "$YT: Testing yapp for ${a}" + ./yasm -e ${asm} > ${y} + if diff -w ${p} ${y} > /dev/null; then + passedct=`expr $passedct + 1` + passedlist="${passedlist}${a} " + else + failedct=`expr $failedct + 1` + failedlist="${failedlist}${a} " + fi + #rm ${y} +done + +test $passedct -gt 0 && echo "$YT: PASSED $passedct: $passedlist" +test $failedct -gt 0 && echo "$YT: FAILED $failedct: $failedlist" + +exit $failedct diff --git a/src/preprocs/yapp/Makefile.inc b/src/preprocs/yapp/Makefile.inc index db445583..bfb6e090 100644 --- a/src/preprocs/yapp/Makefile.inc +++ b/src/preprocs/yapp/Makefile.inc @@ -11,3 +11,15 @@ BUILT_SOURCES += \ CLEANFILES += \ yapp-token.c + src/tests/yapp_test.sh + +TESTS += \ + src/preprocs/yapp/tests/yapp_test.sh + +EXTRA_DIST += \ + src/preprocs/yapp/tests/define.asm \ + src/preprocs/yapp/tests/define.pre + +CLEANFILES += \ + define.yp + diff --git a/src/preprocs/yapp/tests/define.asm b/src/preprocs/yapp/tests/define.asm new file mode 100644 index 00000000..f9330d39 --- /dev/null +++ b/src/preprocs/yapp/tests/define.asm @@ -0,0 +1,4 @@ +%define foo 5 +%define bar baz + mov ax, [foo+bar] +%define baz bzzt diff --git a/src/preprocs/yapp/tests/define.pre b/src/preprocs/yapp/tests/define.pre new file mode 100644 index 00000000..5815282b --- /dev/null +++ b/src/preprocs/yapp/tests/define.pre @@ -0,0 +1,4 @@ + + + mov ax, [5+baz] + diff --git a/src/preprocs/yapp/tests/yapp_test.sh b/src/preprocs/yapp/tests/yapp_test.sh new file mode 100755 index 00000000..e3137f9f --- /dev/null +++ b/src/preprocs/yapp/tests/yapp_test.sh @@ -0,0 +1,37 @@ +#!/bin/sh + +# +# Verify that all test cases match +# (aside from whitespace for now) +# + +passedct=0 +passedlist='' +failedct=0 +failedlist='' + +YT=" - YAPP_TEST" + + +for asm in ${srcdir}/src/preprocs/yapp/tests/*.asm +do + a=`echo ${asm} | sed -e 's,^.*/,,' | sed -e 's,.asm$,,'` + y=${a}.yp + p=`echo ${asm} | sed -e 's,.asm$,.pre,'` + + echo "$YT: Testing yapp for ${a}" + ./yasm -e ${asm} > ${y} + if diff -w ${p} ${y} > /dev/null; then + passedct=`expr $passedct + 1` + passedlist="${passedlist}${a} " + else + failedct=`expr $failedct + 1` + failedlist="${failedlist}${a} " + fi + #rm ${y} +done + +test $passedct -gt 0 && echo "$YT: PASSED $passedct: $passedlist" +test $failedct -gt 0 && echo "$YT: FAILED $failedct: $failedlist" + +exit $failedct