summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHomer Hsing <homer.xing@intel.com>2012-09-19 09:34:58 +0800
committerXiang, Haihao <haihao.xiang@intel.com>2012-09-26 23:27:00 -0400
commit0f6943ed72116201edb2f51f760784a92a9be2ed (patch)
treefb0fd5cec6480308716db4ce050e4f3a5110e8ad
parent5312be2ea55ee3acfd7453b71d3f7e15297eaf1a (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.
-rw-r--r--test/Makefile.am3
-rw-r--r--test/run-test.sh88
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