Skip to content
Snippets Groups Projects
tests.aderivation.aintegral.sh 2.3 KiB
Newer Older
  • Learn to ignore specific revisions
  • #!/usr/bin/env bash
    
    
    # $1 test dir suffix (debug / release)
    
    
    set -o pipefail
    
    
    EXECUTABLES="aepsilon2 atrim2 adeterminize2 aminimize2 anormalize2 acompare2 aderivation2 aintegral2 aconversions2"
    
    TESTS_DIR="`pwd`/examples2/regexp"
    
    
    # ----------------------------
    
    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."
    
    
    # ----------------------------
    
    function regexpToMDFA {
    
    	echo "$1" | ./aconversions2 -t fa | ./aepsilon2 | ./atrim2 | ./adeterminize2 | ./aminimize2 | ./anormalize2 --labels automaton
    
    }
    
    function compareRegexp {
    	# relies on ret code by adiff.automaton
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    	./acompare2 <(regexpToMDFA "$1") <(regexpToMDFA "$2") > /dev/null
    	return $?
    
    }
    
    
    # $1 - input regexp
    # $2 - output regexp
    function runTest {
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    	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 {
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    	 FILE_REGEXP_ORIG="$1"
    	 FILE_REGEXP_RESULT="$2"
    
    	 REGEXP_DERIVATIVE=$(./aconvert2 --string_from_string <<< "$1" | ./aderivation2 -r $TESTS_DIR/$FILE_REGEXP_ORIG -s - )
    
    	 REGEXP_RESULT=$(cat $TESTS_DIR/$FILE_REGEXP_RESULT)
    	 runTest "$REGEXP_DERIVATIVE" "$REGEXP_RESULT"
    
    }
    
    function runTestI {
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    	 FILE_REGEXP_ORIG="$1"
    	 FILE_REGEXP_RESULT="$2"
    
    	 REGEXP_INTEGRAL=$(./aconvert2 --string_from_string <<< "$1" | ./aintegral2 -r $TESTS_DIR/$FILE_REGEXP_ORIG -s - )
    	 REGEXP_RESULT=$(cat $TESTS_DIR/$FILE_REGEXP_RESULT)
    
    	 runTest "$REGEXP_INTEGRAL" "$REGEXP_RESULT"
    
    }
    
    
    # derivatives
    echo "Derivatives"
    
    runTestD "unbounded.oppa.4.13.xml" "unbounded.oppa.4.13.d0.xml" "\"0\""
    runTestD "unbounded.oppa.4.13.xml" "unbounded.oppa.4.13.d00.xml" "\"0 0\""
    runTestD "unbounded.oppa.4.14.xml" "unbounded.oppa.4.14.d1.xml" "\"1\""
    runTestD "unbounded.oppa.4.14.xml" "unbounded.oppa.4.14.d10.xml" "\"1 0\""
    runTestD "unbounded.oppa.4.15.xml" "unbounded.oppa.4.15.d100.xml" "\"1 0 0\""
    
    
    # integrals 
    echo ""
    echo "Integrals"
    
    runTestI "unbounded.oppa.4.16.xml" "unbounded.oppa.4.16.i1.xml" "\"1\""
    runTestI "Melichar2-94.xml" "Melichar2-94.i0.xml" "\"0\""
    runTestI "Melichar2-94.xml" "Melichar2-94.i1.xml" "\"1\""