From 2eb3728027a0545874b81f55f4b7d3d6344efe9a Mon Sep 17 00:00:00 2001 From: Michael Sippel <micha@fragmental.art> Date: Sat, 15 Mar 2025 18:49:29 +0100 Subject: [PATCH] add test script --- test/test.sh | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100755 test/test.sh diff --git a/test/test.sh b/test/test.sh new file mode 100755 index 0000000..402e9f1 --- /dev/null +++ b/test/test.sh @@ -0,0 +1,83 @@ +#!/bin/sh + +run_test_case() { + mkdir -p target/src + mkdir -p .tmp + + echo " +----------------------------------------------------------------------------- +Running test case ${TEST_NAME}" + + ldmc "${SRC_TYPE}" "${DST_TYPE}" ../morphisms/*.morphism-base 2>|.tmp/ldmc_err 1>| target/src/${TEST_NAME}.c \ + || (echo "... error at generation:"; cat .tmp/ldmc_err; return -1); + + gcc -I../morphisms/runtime/include target/src/${TEST_NAME}.c ../morphisms/runtime/src/*.c -o target/${TEST_NAME} \ + || (echo "... error at compilation:"; return -2); + + + LEN="$(echo -n "${EXPECT}" | wc -c)" + RESULT="$(echo -n ${INPUT} | ./target/${TEST_NAME} 2>.tmp/target_err | head -c ${LEN})" + + if [ "${RESULT}" == "${EXPECT}" ]; + then + echo "... ok" + else + echo -e "... incorrect result\n" + cat .tmp/target_err + echo -e "" + echo -e "INPUT:\n$(echo -n "${INPUT}" | hexyl)" + echo -e "EXPECTED:\n$(echo -n "${EXPECT}" | hexyl)" + echo -e "GOT:\n$(echo -n "${RESULT}" | hexyl)" + fi + + rm -rf .tmp +} + +TEST_NAME=test-radix-convert +SRC_TYPE="ℕ ~ <PosInt 10 BigEndian> ~ <Seq~<ValueTerminated 0> <Digit 10> ~ Char ~ Ascii ~ x86.UInt8>" +DST_TYPE="ℕ ~ <PosInt 16 BigEndian> ~ <Seq~<ValueTerminated 0> <Digit 16> ~ Char ~ Ascii ~ x86.UInt8>" +INPUT="255" +EXPECT="ff" +run_test_case + +TEST_NAME=test-msb-cont +SRC_TYPE="<Seq~<ValueTerminated 0> x86.UInt8>" +DST_TYPE="<Seq~MsbCont x86.UInt8>" +INPUT=$(printf '\x01\x02\x03') +EXPECT=$(printf '\x81\x82\x03') +run_test_case + +TEST_NAME=test-value-sep1 +SRC_TYPE="<Seq <Seq Char~x86.UInt8>> ~ <ValueSep ':' Char~x86.UInt8> ~ <Seq~<ValueTerminated 0> Char~x86.UInt8>" +DST_TYPE="<Seq <Seq Char~x86.UInt8>> ~ <ValueSep ',' Char~x86.UInt8> ~ <Seq~<ValueTerminated 0> Char~x86.UInt8>" +INPUT="abc:def:hello world:test" +EXPECT="abc,def,hello world,test" +run_test_case + +TEST_NAME=test-value-sep2 +SRC_TYPE="<Seq <Seq x86.UInt8>> ~ <ValueSep ':' x86.UInt8> ~ <Seq~<ValueTerminated 0> x86.UInt8>" +DST_TYPE="<Seq <Seq x86.UInt8>> ~ <ValueSep '\\n' x86.UInt8> ~ <Seq~<ValueTerminated 0> x86.UInt8>" +INPUT="abc:def:hello world:test" +EXPECT=$(echo -en "abc\ndef\nhello world\ntest") +run_test_case + +TEST_NAME=test-value-sep-digit +SRC_TYPE="<Seq <Seq <Digit 16>~Char~Ascii~x86.UInt8>> ~ <ValueSep ':' Char~Ascii~x86.UInt8> ~ <Seq~<ValueTerminated '\0'> Char~Ascii~x86.UInt8>" +DST_TYPE="<Seq <Seq <Digit 16>~Char~Ascii~x86.UInt8>> ~ <ValueSep '.' Char~Ascii~x86.UInt8> ~ <Seq~<ValueTerminated '\0'> Char~Ascii~x86.UInt8>" +INPUT="c0:ff:ee" +EXPECT=$(echo -en "c0.ff.ee") +run_test_case + +TEST_NAME=test-utf8-to-ascii +SRC_TYPE="<Seq Char~Unicode> ~ UTF-8 ~ <Seq ~ <ValueTerminated 0> x86.UInt8>" +DST_TYPE="<Seq~<ValueTerminated 0> Char ~ Ascii ~ x86.UInt8>" +INPUT="Hℵelαlo WΓΓΓorl⇒d" +EXPECT="Hello World" +run_test_case + +TEST_NAME=test-value-sep-posint +SRC_TYPE="<Seq ℕ~<PosInt 16 BigEndian>~<Seq <Digit 16>~Char~Ascii~x86.UInt8>> ~ <ValueSep ':' Char~Ascii~x86.UInt8> ~ <Seq~<ValueTerminated '\0'> Char~Ascii~x86.UInt8>" +DST_TYPE="<Seq ℕ~<PosInt 16 BigEndian>~<Seq <Digit 16>~Char~Ascii~x86.UInt8>> ~ <ValueSep '.' Char~Ascii~x86.UInt8> ~ <Seq~<ValueTerminated '\0'> Char~Ascii~x86.UInt8>" +INPUT="c0:ff:ee" +EXPECT=$(echo -en "c0.ff.ee") +run_test_case