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