diff options
author | Homer Hsing <homer.xing@intel.com> | 2012-09-19 09:34:58 +0800 |
---|---|---|
committer | Damien Lespiau <damien.lespiau@intel.com> | 2013-03-04 15:54:32 +0000 |
commit | 6983eebf47f37def8f2315d5af1800b81644f240 (patch) | |
tree | 8c7aff858f6c128b2d1b599c930c3ac4cd7fd666 /assembler/test | |
parent | 1c009349bc894bd195b5522540536898b0bee574 (diff) |
Automatically run all test cases.
In the past test/run-test.sh run only one test case per call.
This patch let it automatically run all test cases.
Diffstat (limited to 'assembler/test')
-rw-r--r-- | assembler/test/Makefile.am | 3 | ||||
-rw-r--r-- | assembler/test/run-test.sh | 88 |
2 files changed, 80 insertions, 11 deletions
diff --git a/assembler/test/Makefile.am b/assembler/test/Makefile.am index 1c5b13e9..0d8d3492 100644 --- a/assembler/test/Makefile.am +++ b/assembler/test/Makefile.am @@ -77,8 +77,7 @@ EXTRA_DIST = \ run-test.sh $(TESTS): run-test.sh - sed "s|TEST|$@|g" ${srcdir}/run-test.sh > $@ - chmod +x $@ + chmod +x ${srcdir}/run-test.sh CLEANFILES = \ *.out \ diff --git a/assembler/test/run-test.sh b/assembler/test/run-test.sh index a7de7d42..e02a6e09 100644 --- a/assembler/test/run-test.sh +++ b/assembler/test/run-test.sh @@ -1,13 +1,83 @@ #!/bin/sh +#TODO: add new test cases in environment variables ${TEST_GEN4_XXX} + DIR="$( cd -P "$( dirname "$0" )" && pwd )" +ASSEMBLER="${DIR}/../src/intel-gen4asm" + +# Tests that are expected to success because they contain correct code. +# $1 is the gen level, e.g., 4 or 7 +# $2 is the test case name +function check_if_work() +{ + GEN_LEVEL="$1" + TEST_CASE_NAME="$2" + SOURCE="${TEST_CASE_NAME}.g${1}a" + EXPECTED="${TEST_CASE_NAME}.expected" + TEMP_OUT="temp.out" + ${ASSEMBLER} -g ${GEN_LEVEL} ${DIR}/${SOURCE} -o ${TEMP_OUT} + if cmp ${TEMP_OUT} ${DIR}/${EXPECTED} 2> /dev/null; + then + echo "[ OK ] ${TEST_CASE_NAME}"; + else + echo "[FAIL] ${TEST_CASE_NAME}"; + diff -u ${DIR}/${EXPECTED} ${TEMP_OUT}; + fi +} + +# Tests that are expected to fail because they contain wrong code. +function check_if_fail() +{ + GEN_LEVEL="$1" + TEST_CASE_NAME="$2" + SOURCE="${TEST_CASE_NAME}.g${1}a" + TEMP_OUT="temp.out" + ${ASSEMBLER} -g ${GEN_LEVEL} ${DIR}/${SOURCE} -o ${TEMP_OUT} 2>/dev/null + if [ $? -eq 0 ]; + then + echo "[FAIL] ${TEST_CASE_NAME}"; + else + echo "[ OK ] ${TEST_CASE_NAME}"; + fi +} + +# Tests that are expected to success because they contain correct code. +TEST_GEN4_SHOULD_WORK="\ + mov \ + frc \ + rndd \ + rndu \ + rnde \ + rnde-intsrc \ + rndz \ + lzd \ + not \ + jmpi \ + if \ + iff \ + while \ + else \ + break \ + cont \ + halt \ + wait \ + endif \ + declare \ + immediate \ + " + +# Tests that are expected to fail because they contain wrong code. +TEST_GEN4_SHOULD_FAIL="\ + rnde-intsrc \ + " + +for T in ${TEST_GEN4_SHOULD_WORK} +do + check_if_work 4 ${T} +done + +for T in ${TEST_GEN4_SHOULD_FAIL} +do + check_if_fail 4 ${T} +done -${DIR}/../src/intel-gen4asm -o TEST.out ${DIR}/TEST.g4a -if cmp TEST.out ${DIR}/TEST.expected 2> /dev/null; -then - echo "Good"; -else - echo "Output comparison for TEST" - diff -u ${DIR}/TEST.expected TEST.out - exit 1; -fi |