From 0f6943ed72116201edb2f51f760784a92a9be2ed Mon Sep 17 00:00:00 2001 From: Homer Hsing Date: Wed, 19 Sep 2012 09:34:58 +0800 Subject: 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. --- test/Makefile.am | 3 +- test/run-test.sh | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 80 insertions(+), 11 deletions(-) diff --git a/test/Makefile.am b/test/Makefile.am index 1c5b13e..0d8d349 100644 --- a/test/Makefile.am +++ b/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/test/run-test.sh b/test/run-test.sh index a7de7d4..e02a6e0 100644 --- a/test/run-test.sh +++ b/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 -- cgit v1.2.3