diff --git a/examples2/rte/rte1.xml b/examples2/rte/rte1.xml index f9dafc76950fc8e52b5aa081b8112f42e488f8a0..ddbf01b6cdf13b549e96c78d27b67f4667717689 100644 --- a/examples2/rte/rte1.xml +++ b/examples2/rte/rte1.xml @@ -1,169 +1,52 @@ <?xml version="1.0"?> <FormalRTE> - <alphabet> - <RankedSymbol> - - - <String>a</String> - - - <Unsigned>2</Unsigned> - </RankedSymbol> - <RankedSymbol> - - - <String>b</String> - - - <Unsigned>0</Unsigned> - </RankedSymbol> - <RankedSymbol> - - - <String>c</String> - - - <Unsigned>0</Unsigned> - </RankedSymbol> - <RankedSymbol> - - - <String>d</String> - - - <Unsigned>1</Unsigned> - </RankedSymbol> - </alphabet> - <substSymbolAlphabet> - <RankedSymbol> - - - <String>y</String> - - - <Unsigned>0</Unsigned> - </RankedSymbol> - <RankedSymbol> - - - <String>z</String> - - - <Unsigned>0</Unsigned> - </RankedSymbol> - </substSymbolAlphabet> - <substitution> - <RankedSymbol> - - - <String>y</String> - - - <Unsigned>0</Unsigned> - </RankedSymbol> - <substitution> - <RankedSymbol> - - - <String>z</String> - - - <Unsigned>0</Unsigned> - </RankedSymbol> - <iteration> - <RankedSymbol> - - - <String>y</String> - - - <Unsigned>0</Unsigned> - </RankedSymbol> - <symbol> - <RankedSymbol> - - - <String>d</String> - - - <Unsigned>1</Unsigned> - </RankedSymbol> - <symbol> - <RankedSymbol> - - - <String>a</String> - - - <Unsigned>2</Unsigned> - </RankedSymbol> - <substSymbol> - <RankedSymbol> - - - <String>y</String> - - - <Unsigned>0</Unsigned> - </RankedSymbol> - </substSymbol> - <substSymbol> - <RankedSymbol> - - - <String>z</String> - - - <Unsigned>0</Unsigned> - </RankedSymbol> - </substSymbol> - </symbol> - </symbol> - </iteration> - <alternation> - <symbol> - <RankedSymbol> - - - <String>b</String> - - - <Unsigned>0</Unsigned> - </RankedSymbol> - </symbol> - <symbol> - <RankedSymbol> - - - <String>c</String> - - - <Unsigned>0</Unsigned> - </RankedSymbol> - </symbol> - </alternation> - </substitution> - <alternation> - <symbol> - <RankedSymbol> - - - <String>b</String> - - - <Unsigned>0</Unsigned> - </RankedSymbol> - </symbol> - <symbol> - <RankedSymbol> - - - <String>c</String> - - - <Unsigned>0</Unsigned> - </RankedSymbol> - </symbol> - </alternation> - </substitution> + <alphabet> + <RankedSymbol> <String>a</String> <Unsigned>2</Unsigned> </RankedSymbol> + <RankedSymbol> <String>b</String> <Unsigned>0</Unsigned> </RankedSymbol> + <RankedSymbol> <String>c</String> <Unsigned>0</Unsigned> </RankedSymbol> + <RankedSymbol> <String>d</String> <Unsigned>1</Unsigned> </RankedSymbol> + </alphabet> + + <substSymbolAlphabet> + <RankedSymbol> <String>y</String> <Unsigned>0</Unsigned> </RankedSymbol> + <RankedSymbol> <String>z</String> <Unsigned>0</Unsigned> </RankedSymbol> + </substSymbolAlphabet> + + <substitution> + <RankedSymbol> <String>y</String> <Unsigned>0</Unsigned> </RankedSymbol> + + <substitution> + <RankedSymbol> <String>z</String> <Unsigned>0</Unsigned> </RankedSymbol> + + <iteration> + <RankedSymbol> <String>y</String> <Unsigned>0</Unsigned> </RankedSymbol> + + <symbol> + <RankedSymbol> <String>d</String> <Unsigned>1</Unsigned> </RankedSymbol> + <symbol> + <RankedSymbol> <String>a</String> <Unsigned>2</Unsigned> </RankedSymbol> + <substSymbol> <RankedSymbol> <String>y</String> <Unsigned>0</Unsigned> </RankedSymbol> </substSymbol> + <substSymbol> <RankedSymbol> <String>z</String> <Unsigned>0</Unsigned> </RankedSymbol> </substSymbol> + </symbol> + </symbol> + </iteration> + + <alternation> + <symbol> + <RankedSymbol> <String>b</String> <Unsigned>0</Unsigned> </RankedSymbol> + </symbol> + <symbol> + <RankedSymbol> <String>c</String> <Unsigned>0</Unsigned> </RankedSymbol> + </symbol> + </alternation> + </substitution> + <alternation> + <symbol> + <RankedSymbol> <String>b</String> <Unsigned>0</Unsigned> </RankedSymbol> + </symbol> + <symbol> + <RankedSymbol> <String>c</String> <Unsigned>0</Unsigned> </RankedSymbol> + </symbol> + </alternation> + </substitution> </FormalRTE> diff --git a/examples2/rte/rte8.xml b/examples2/rte/rte8.xml index 5dc29843b0bbe62075fda8823ed4e21291e798db..e516bee350ca0a8a722d0693e1e25cc594b3b6bb 100644 --- a/examples2/rte/rte8.xml +++ b/examples2/rte/rte8.xml @@ -1,6 +1,6 @@ <FormalRTE> <alphabet> - <RankedSymbol><String>a</String><Unsigned>4</Unsigned></RankedSymbol> + <RankedSymbol><String>a</String><Unsigned>2</Unsigned></RankedSymbol> <RankedSymbol><String>b</String><Unsigned>0</Unsigned></RankedSymbol> <RankedSymbol><String>c</String><Unsigned>0</Unsigned></RankedSymbol> @@ -18,7 +18,7 @@ <RankedSymbol><String>z</String><Unsigned>0</Unsigned></RankedSymbol> <symbol> - <RankedSymbol><String>a</String><Unsigned>4</Unsigned></RankedSymbol> + <RankedSymbol><String>a</String><Unsigned>2</Unsigned></RankedSymbol> <substSymbol> <RankedSymbol><String>z</String><Unsigned>0</Unsigned></RankedSymbol> </substSymbol> diff --git a/tests.glushkovrte_v3.sh b/tests.glushkovrte_v3.sh new file mode 100755 index 0000000000000000000000000000000000000000..55736a0135932f855835c60e144288aa026d3656 --- /dev/null +++ b/tests.glushkovrte_v3.sh @@ -0,0 +1,179 @@ +#!/usr/bin/env bash + +# $1 test dir suffix (debug / release) + +# SETTINGS +TESTCASE_ITERATIONS=30 +TESTCASE_TIMEOUT=10 +LOGFILE="log_tests.txt" + +EXECUTABLES="arun2 adeterminize2 aconversions2" +TESTS_DIR="`pwd`/examples2/rte" + +RES_GOOD= +RES_FAIL= +RES_TIME= +RES_SEGV= +RES_UNKN= + + +# ---------------------------- + +for FILE in $EXECUTABLES; do + if [ ! -f bin-$1/$FILE ]; then + echo "Executable $FILE is required for testing. Make sure it is in bin-$1 folder." + exit 1 + fi +done + +cd bin-$1/ +rm -f $LOGFILE + +JOBS=$2 +if [ -z "$JOBS" ]; then + JOBS=1 +fi + +# ---------------------------- + +# $1 = str +# $2 = automaton +# $3 = rte +function log { + echo "----------------------------------------------------------" >> $LOGFILE + echo "str: " >> $LOGFILE + cat $1 >> $LOGFILE + echo "aut: " >> $LOGFILE + cat $2 >> $LOGFILE + echo "rte: " >> $LOGFILE + cat $3 >> $LOGFILE +} + +# $1 = genfile +# $2 = automaton +# $3 = rte +function runAcceptTest { + PATTERN=$(mktemp) + OUT=`timeout $TESTCASE_TIMEOUT bash -c "./arun2 -i <($1 | tee $PATTERN | ./aconvert2 --string_from_string) -a $2"` + RET=$? + if [ $RET == 0 ]; then # ok + echo $OUT | grep -q "<Bool>true</Bool>" + if [ $? != 0 ]; then + RET=1 + fi + fi + + if [ $RET != 0 ]; then # fail + log "$PATTERN" "$2" "$3" + echo -n "" + fi + + if [ $RET == 124 ]; then # timeout + registerResult 2 + return 2 + elif [ $RET -ge 124 ]; then #segv + registerResult 3 + return 3 + elif [ $RET != 0 ]; then # fail + registerResult 1 + return 1 + else + registerResult 0 + return 0 + fi +} + +function registerResult { + case $1 in + 0) + echo -n "." + echo -n "+1" >> $RES_GOOD + ;; + 1) + echo -n "x" + echo -n "+1" >> $RES_FAIL + ;; + 2) + echo -n "T" + echo -n "+1" >> $RES_TIME + ;; + 3) + echo -n "E" + echo -n "+1" >> $RES_SEGV + ;; + *) + echo -n "?" + echo -n "+1" >> $RES_UNKN + ;; + esac +} + +function initResults { + RES_GOOD=$(mktemp) + echo -n "0" > $RES_GOOD + RES_FAIL=$(mktemp) + echo -n "0" > $RES_FAIL + RES_TIME=$(mktemp) + echo -n "0" > $RES_TIME + RES_SEGV=$(mktemp) + echo -n "0" > $RES_SEGV + RES_UNKN=$(mktemp) + echo -n "0" > $RES_UNKN +} + +function clearResults { + rm $RES_GOOD + rm $RES_FAIL + rm $RES_TIME + rm $RES_SEGV + rm $RES_UNKN +} + +function outputResults { + echo "" >> $RES_GOOD + echo "" >> $RES_FAIL + echo "" >> $RES_TIME + echo "" >> $RES_SEGV + echo "" >> $RES_UNKN + + # summary + echo -ne "\n\t" + echo "RES: GOOD:" $(bc < $RES_GOOD) ", FAIL:" $(bc < $RES_FAIL) ", TIME:" $(bc < $RES_TIME) ", SEGV:" $(bc < $RES_SEGV), "UNKN:" $(bc < $RES_UNKN) + echo "" +} + +function run { + initResults + + # predefined tests first + TESTS="rte1 rte2 rte3 rte4 rte5 rte6 rte7 rte8 rte9" + for RTE in $TESTS; do + echo -n "$RTE: " + + RTE_FILE="$TESTS_DIR/$RTE.xml" + GEN_FILE="$TESTS_DIR/gen_$RTE.py" + AUTOMATON_FILE=$(mktemp) + + #echo $RTE_FILE + #echo $GEN_FILE + #echo $AUTOMATON_FILE + + ./aconversions2 -t pda -a glushkovrtev3 -i $RTE_FILE 2>/dev/null | ./adeterminize2 > $AUTOMATON_FILE + + for i in `seq 1 $TESTCASE_ITERATIONS`; do + runAcceptTest $GEN_FILE $AUTOMATON_FILE $RTE_FILE + done + + echo "" + done + + # random tests + # TODO + + wait + + outputResults + clearResults +} + +run