diff --git a/examples/regexp/Melichar2-94.i0.xml b/examples/regexp/Melichar2-94.i0.xml new file mode 100644 index 0000000000000000000000000000000000000000..9b49842f5a42deab8c73e499c230118d75fdbb85 --- /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 0000000000000000000000000000000000000000..5157b30dbb094a3a08976754480dd0c78ee0da0e --- /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 0000000000000000000000000000000000000000..040b76e66d8b0816885e815a23a1823e58de5717 --- /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 0000000000000000000000000000000000000000..3b620f56281a379d4ad30da847eea20652b3eee4 --- /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 0000000000000000000000000000000000000000..18e9b91b6ec39acc7cf9a13d50ca2ddafb2ae4da --- /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 0000000000000000000000000000000000000000..ae5c5c2d3446b17100fd797d61230b1faab41fe6 --- /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 0000000000000000000000000000000000000000..5632a3f9f7d87a4d0adf2cfddb779e6ee3049c66 --- /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 0000000000000000000000000000000000000000..943d2fae462d5e66129e9d561f2f9ed50cfdf6a1 --- /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 0000000000000000000000000000000000000000..2b841de38596845b8874a6b44b27d9cf089c0286 --- /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 0000000000000000000000000000000000000000..968da499b3fe5cae6f7c3b0200c4ed5ef5025973 --- /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 0000000000000000000000000000000000000000..9b25a30dfd7a77041ef1b914fb80cb91423dc816 --- /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 ""