Skip to content
Snippets Groups Projects
Commit 6c2d47c5 authored by Tomáš Pecka's avatar Tomáš Pecka
Browse files

aderivation, aintegral: Tests

parent ee6ccb41
No related branches found
No related tags found
No related merge requests found
<regexp>
<concatenation>
<symbol>0</symbol>
<iteration>
<alternation>
<symbol>0</symbol>
<symbol>1</symbol>
</alternation>
</iteration>
<symbol>1</symbol>
</concatenation>
</regexp>
<regexp>
<concatenation>
<symbol>1</symbol>
<iteration>
<alternation>
<symbol>0</symbol>
<symbol>1</symbol>
</alternation>
</iteration>
<symbol>1</symbol>
</concatenation>
</regexp>
<regexp>
<concatenation>
<iteration>
<alternation>
<symbol>0</symbol>
<symbol>1</symbol>
</alternation>
</iteration>
<symbol>1</symbol>
</concatenation>
</regexp>
<regexp>
<alternation>
<concatenation>
<symbol>1</symbol>
<symbol>0</symbol>
</concatenation>
<concatenation>
<iteration>
<symbol>0</symbol>
</iteration>
<symbol>1</symbol>
</concatenation>
<epsilon></epsilon>
</alternation>
</regexp>
<regexp>
<concatenation>
<iteration>
<symbol>0</symbol>
</iteration>
<symbol>1</symbol>
</concatenation>
</regexp>
<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>
<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>
<regexp>
<alternation>
<concatenation>
<iteration>
<symbol>0</symbol>
</iteration>
<iteration>
<symbol>1</symbol>
</iteration>
<symbol>0</symbol>
</concatenation>
<epsilon></epsilon>
</alternation>
</regexp>
<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>
<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>
#!/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 ""
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment