From 6c2d47c5f158d7681825a4d56bc0ec10272e302b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Pecka?= <peckato1@fit.cvut.cz> Date: Mon, 12 May 2014 09:57:10 +0200 Subject: [PATCH] aderivation, aintegral: Tests --- examples/regexp/Melichar2-94.i0.xml | 12 ++++ examples/regexp/Melichar2-94.i1.xml | 12 ++++ examples/regexp/Melichar2-94.xml | 11 ++++ examples/regexp/oppa-4-13.d0.xml | 15 +++++ examples/regexp/oppa-4-13.d00.xml | 8 +++ examples/regexp/oppa-4-14.d1.xml | 24 ++++++++ examples/regexp/oppa-4-14.d10.xml | 32 ++++++++++ examples/regexp/oppa-4-15.d100.xml | 14 +++++ examples/regexp/oppa-4-16.i1.xml | 16 +++++ examples/regexp/oppa-4-16.xml | 14 +++++ tests.aderivation.aintegral.sh | 96 +++++++++++++++++++++++++++++ 11 files changed, 254 insertions(+) create mode 100644 examples/regexp/Melichar2-94.i0.xml create mode 100644 examples/regexp/Melichar2-94.i1.xml create mode 100644 examples/regexp/Melichar2-94.xml create mode 100644 examples/regexp/oppa-4-13.d0.xml create mode 100644 examples/regexp/oppa-4-13.d00.xml create mode 100644 examples/regexp/oppa-4-14.d1.xml create mode 100644 examples/regexp/oppa-4-14.d10.xml create mode 100644 examples/regexp/oppa-4-15.d100.xml create mode 100644 examples/regexp/oppa-4-16.i1.xml create mode 100644 examples/regexp/oppa-4-16.xml create mode 100755 tests.aderivation.aintegral.sh diff --git a/examples/regexp/Melichar2-94.i0.xml b/examples/regexp/Melichar2-94.i0.xml new file mode 100644 index 0000000000..9b49842f5a --- /dev/null +++ b/examples/regexp/Melichar2-94.i0.xml @@ -0,0 +1,12 @@ +<regexp> + <concatenation> + <symbol>0</symbol> + <iteration> + <alternation> + <symbol>0</symbol> + <symbol>1</symbol> + </alternation> + </iteration> + <symbol>1</symbol> + </concatenation> +</regexp> diff --git a/examples/regexp/Melichar2-94.i1.xml b/examples/regexp/Melichar2-94.i1.xml new file mode 100644 index 0000000000..5157b30dbb --- /dev/null +++ b/examples/regexp/Melichar2-94.i1.xml @@ -0,0 +1,12 @@ +<regexp> + <concatenation> + <symbol>1</symbol> + <iteration> + <alternation> + <symbol>0</symbol> + <symbol>1</symbol> + </alternation> + </iteration> + <symbol>1</symbol> + </concatenation> +</regexp> diff --git a/examples/regexp/Melichar2-94.xml b/examples/regexp/Melichar2-94.xml new file mode 100644 index 0000000000..040b76e66d --- /dev/null +++ b/examples/regexp/Melichar2-94.xml @@ -0,0 +1,11 @@ +<regexp> + <concatenation> + <iteration> + <alternation> + <symbol>0</symbol> + <symbol>1</symbol> + </alternation> + </iteration> + <symbol>1</symbol> + </concatenation> +</regexp> diff --git a/examples/regexp/oppa-4-13.d0.xml b/examples/regexp/oppa-4-13.d0.xml new file mode 100644 index 0000000000..3b620f5628 --- /dev/null +++ b/examples/regexp/oppa-4-13.d0.xml @@ -0,0 +1,15 @@ +<regexp> + <alternation> + <concatenation> + <symbol>1</symbol> + <symbol>0</symbol> + </concatenation> + <concatenation> + <iteration> + <symbol>0</symbol> + </iteration> + <symbol>1</symbol> + </concatenation> + <epsilon></epsilon> + </alternation> +</regexp> diff --git a/examples/regexp/oppa-4-13.d00.xml b/examples/regexp/oppa-4-13.d00.xml new file mode 100644 index 0000000000..18e9b91b6e --- /dev/null +++ b/examples/regexp/oppa-4-13.d00.xml @@ -0,0 +1,8 @@ +<regexp> + <concatenation> + <iteration> + <symbol>0</symbol> + </iteration> + <symbol>1</symbol> + </concatenation> +</regexp> diff --git a/examples/regexp/oppa-4-14.d1.xml b/examples/regexp/oppa-4-14.d1.xml new file mode 100644 index 0000000000..ae5c5c2d34 --- /dev/null +++ b/examples/regexp/oppa-4-14.d1.xml @@ -0,0 +1,24 @@ +<regexp> + <concatenation> + <iteration> + <symbol>0</symbol> + </iteration> + <iteration> + <alternation> + <concatenation> + <symbol>0</symbol> + <iteration> + <symbol>1</symbol> + </iteration> + <symbol>0</symbol> + </concatenation> + <concatenation> + <symbol>1</symbol> + <iteration> + <symbol>0</symbol> + </iteration> + </concatenation> + </alternation> + </iteration> + </concatenation> +</regexp> diff --git a/examples/regexp/oppa-4-14.d10.xml b/examples/regexp/oppa-4-14.d10.xml new file mode 100644 index 0000000000..5632a3f9f7 --- /dev/null +++ b/examples/regexp/oppa-4-14.d10.xml @@ -0,0 +1,32 @@ +<regexp> + <concatenation> + <alternation> + <iteration> + <symbol>0</symbol> + </iteration> + <concatenation> + <iteration> + <symbol>1</symbol> + </iteration> + <symbol>0</symbol> + </concatenation> + </alternation> + <iteration> + <alternation> + <concatenation> + <symbol>0</symbol> + <iteration> + <symbol>1</symbol> + </iteration> + <symbol>0</symbol> + </concatenation> + <concatenation> + <symbol>1</symbol> + <iteration> + <symbol>0</symbol> + </iteration> + </concatenation> + </alternation> + </iteration> + </concatenation> +</regexp> diff --git a/examples/regexp/oppa-4-15.d100.xml b/examples/regexp/oppa-4-15.d100.xml new file mode 100644 index 0000000000..943d2fae46 --- /dev/null +++ b/examples/regexp/oppa-4-15.d100.xml @@ -0,0 +1,14 @@ +<regexp> + <alternation> + <concatenation> + <iteration> + <symbol>0</symbol> + </iteration> + <iteration> + <symbol>1</symbol> + </iteration> + <symbol>0</symbol> + </concatenation> + <epsilon></epsilon> + </alternation> +</regexp> diff --git a/examples/regexp/oppa-4-16.i1.xml b/examples/regexp/oppa-4-16.i1.xml new file mode 100644 index 0000000000..2b841de385 --- /dev/null +++ b/examples/regexp/oppa-4-16.i1.xml @@ -0,0 +1,16 @@ +<regexp> + <alternation> + <concatenation> + <symbol>1</symbol> + <symbol>0</symbol> + <symbol>1</symbol> + <symbol>0</symbol> + </concatenation> + <concatenation> + <symbol>1</symbol> + <symbol>1</symbol> + <symbol>0</symbol> + <symbol>1</symbol> + </concatenation> + </alternation> +</regexp> diff --git a/examples/regexp/oppa-4-16.xml b/examples/regexp/oppa-4-16.xml new file mode 100644 index 0000000000..968da499b3 --- /dev/null +++ b/examples/regexp/oppa-4-16.xml @@ -0,0 +1,14 @@ +<regexp> + <alternation> + <concatenation> + <symbol>0</symbol> + <symbol>1</symbol> + <symbol>0</symbol> + </concatenation> + <concatenation> + <symbol>1</symbol> + <symbol>0</symbol> + <symbol>1</symbol> + </concatenation> + </alternation> +</regexp> diff --git a/tests.aderivation.aintegral.sh b/tests.aderivation.aintegral.sh new file mode 100755 index 0000000000..9b25a30dfd --- /dev/null +++ b/tests.aderivation.aintegral.sh @@ -0,0 +1,96 @@ +#!/usr/bin/env bash + +set -o pipefail + +EXECUTABLES="aepsilon atrim adeterminize aminimize anormalize adiff.automaton aderivation aintegral" +TESTS_DIR="../examples/regexp" + +# ---------------------------- + +for FILE in $EXECUTABLES; do + if [ ! -f bin/$FILE ]; then + echo "Executable" $FILE "is required for testing. Make sure it is in bin folder." + exit 1 + fi +done + +cd bin/ + +# ---------------------------- + +function regexpToMDFA { + echo "$1" | ./aconversion -t FSM | ./aepsilon | ./atrim | ./adeterminize -t FSM | ./aminimize | ./anormalize +} + +function compareRegexp { + regexpToMDFA "$1" > tmp1.xml + regexpToMDFA "$2" > tmp2.xml + + # relies on ret code by adiff.automaton + ./adiff.automaton tmp1.xml tmp2.xml > /dev/null + RET=$? + rm tmp1.xml tmp2.xml + + return $RET +} + + +# $1 - input regexp +# $2 - output regexp +function runTest { + compareRegexp "$1" "$2" + + TEST_EXITVALUE=$? + + if [ $TEST_EXITVALUE == 0 ]; then + echo -n "." + elif [ $TEST_EXITVALUE == 1 ]; then + echo -n "x" + elif [ $TEST_EXITVALUE == 2 ]; then + echo -n "T" + elif [ $TEST_EXITVALUE == 3 ]; then + echo -n "F" + else + echo -n "?" + fi + +} + +function runTestD { + FILE_REGEXP_ORIG=$(echo "$1") + FILE_REGEXP_RESULT=$(echo "$2") + shift 2 + + REGEXP_DERIVATIVE=$(cat $TESTS_DIR/$FILE_REGEXP_ORIG | ./aderivation $@) + REGEXP_RESULT=$(cat $TESTS_DIR/$FILE_REGEXP_RESULT) + runTest "$REGEXP_DERIVATIVE" "$REGEXP_RESULT" +} + +function runTestI { + FILE_REGEXP_ORIG=$(echo "$1") + FILE_REGEXP_RESULT=$(echo "$2") + shift 2 + + REGEXP_INTEGRAL=$(cat $TESTS_DIR/$FILE_REGEXP_ORIG | ./aintegral $@) + REGEXP_RESULT=$(cat $TESTS_DIR/$FILE_REGEXP_RESULT) + + runTest "$REGEXP_INTEGRAL" "$REGEXP_RESULT" +} + + +# derivatives +echo "Derivatives" +runTestD "oppa-4-13.xml" "oppa-4-13.d0.xml" "0" +runTestD "oppa-4-13.xml" "oppa-4-13.d00.xml" "0" "0" +runTestD "oppa-4-14.xml" "oppa-4-14.d1.xml" "1" +runTestD "oppa-4-14.xml" "oppa-4-14.d10.xml" "1" "0" +runTestD "oppa-4-15.xml" "oppa-4-15.d100.xml" "1" "0" "0" + +# integrals +echo "" +echo "Integrals" +runTestI "oppa-4-16.xml" "oppa-4-16.i1.xml" "1" +runTestI "Melichar2-94.xml" "Melichar2-94.i0.xml" "0" +runTestI "Melichar2-94.xml" "Melichar2-94.i1.xml" "1" + +echo "" -- GitLab