#!/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