From b450e1a5925e17abbac700389b3bff87d88d7df1 Mon Sep 17 00:00:00 2001
From: hansen <dominik_hansen@web.de>
Date: Fri, 17 Jul 2015 16:21:07 +0200
Subject: [PATCH] Refactoring

---
 build.gradle                                  | 19 +++++---
 src/main/java/de/tlc4b/TLC4B.java             |  9 ++--
 src/main/java/de/tlc4b/TLCRunner.java         |  4 ++
 .../java/de/tlc4b/prettyprint/TLAPrinter.java |  2 -
 src/main/java/de/tlc4b/tlc/TLCOutputInfo.java |  2 -
 src/main/java/de/tlc4b/tlc/TLCResults.java    | 14 ++----
 ...tlFormulaTest.java => LTLFormulaTest.java} |  2 +-
 .../de/tlc4b/prettyprint/NumbersTest.java     |  2 -
 .../de/tlc4b/tlc/integration/LTLTest.java     | 10 +++-
 src/test/java/de/tlc4b/util/TestUtil.java     |  2 +-
 src/test/java/testing/CompoundScopeTest.java  | 47 +++++++++----------
 src/test/java/testing/CompoundTest.java       |  1 -
 src/test/resources/ltl/CounterError.mch       |  4 +-
 .../resources/ltl/StatePropertyViolation.mch  | 15 ++++++
 14 files changed, 74 insertions(+), 59 deletions(-)
 rename src/test/java/de/tlc4b/ltl/{LtlFormulaTest.java => LTLFormulaTest.java} (99%)
 create mode 100644 src/test/resources/ltl/StatePropertyViolation.mch

diff --git a/build.gradle b/build.gradle
index 7639ef0..b1d5964 100644
--- a/build.gradle
+++ b/build.gradle
@@ -6,7 +6,7 @@ apply plugin: 'jacoco'
 project.version = '1.0.0-SNAPSHOT'
 project.group = 'de.prob'
 
-sourceCompatibility = 1.5
+//sourceCompatibility = 1.5
 
 repositories {
 	mavenCentral()
@@ -38,7 +38,7 @@ dependencies {
 
 
 
-	testCompile (group: 'junit', name: 'junit', version: '4.7')
+	testCompile (group: 'junit', name: 'junit', version: '4.11')
     testCompile (group: 'de.prob', name: 'tla2bAST', version: '1.0.5-SNAPSHOT')
 
 	releaseJars (group: 'de.tla', name: 'tlatools', version: '1.0.0-SNAPSHOT')
@@ -49,8 +49,8 @@ dependencies {
 }
 
 jacoco {
-    toolVersion = "0.6.2.201302030002"
-    reportsDir = file("$buildDir/customJacocoReportDir")
+    toolVersion = "0.7.1.201405082137"
+    reportsDir = file("$buildDir/JacocoReports")
 }
 
 jacocoTestReport {
@@ -69,13 +69,20 @@ test {
 }
 
 
-task integrationtests(type: Test){
+task integrationTests(type: Test){
 	doFirst{ println("Running integration tests") }
 	scanForTestClasses = true
 	//include('de/tlc4b/tlc/integration/probprivate/**')
-	include('de/tlc4b/**')
+	include('de/tlc4b/**')	
 }
 
+// type 'gradle integrationTests jacocoIntegrationTestReport' in order to run the jacoco code coverage analysis
+task jacocoIntegrationTestReport(type: JacocoReport) {
+	sourceSets sourceSets.main
+	//executionData files('build/jacoco/integrationTests.exec')
+	executionData fileTree(project.rootDir.absolutePath).include("**/build/jacoco/*.exec")
+ }
+
 jar { from sourceSets.main.allJava }
 jar	{
 	from configurations.releaseJars.collect { it.isDirectory() ? it : zipTree(it) }
diff --git a/src/main/java/de/tlc4b/TLC4B.java b/src/main/java/de/tlc4b/TLC4B.java
index 30a634d..820977c 100644
--- a/src/main/java/de/tlc4b/TLC4B.java
+++ b/src/main/java/de/tlc4b/TLC4B.java
@@ -10,11 +10,8 @@ import java.io.InputStream;
 import java.io.OutputStreamWriter;
 import java.io.UnsupportedEncodingException;
 import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.Set;
 import java.util.Map.Entry;
 
-import tlc2.TLCGlobals;
 import de.be4.classicalb.core.parser.exceptions.BException;
 import de.tlc4b.TLC4BGlobals;
 import de.tlc4b.analysis.UsedStandardModules.STANDARD_MODULES;
@@ -45,7 +42,7 @@ public class TLC4B {
 															// windows
 		TLC4B tlc4b = new TLC4B();
 		try {
-			tlc4b.progress(args);
+			tlc4b.process(args);
 		} catch (BException e) {
 			System.err.println("***** Parsing Error *****");
 			System.err.println(e.getMessage());
@@ -159,7 +156,7 @@ public class TLC4B {
 		// B2TLAGlobals.setCleanup(true);
 		TLC4B tlc4b = new TLC4B();
 		try {
-			tlc4b.progress(args);
+			tlc4b.process(args);
 		} catch (Exception e) {
 			e.printStackTrace();
 			System.err.println(e.getMessage());
@@ -272,7 +269,7 @@ public class TLC4B {
 		}
 	}
 
-	public void progress(String[] args) throws IOException, BException {
+	public void process(String[] args) throws IOException, BException {
 		handleParameter(args);
 
 		System.out.print("Arguments: ");
diff --git a/src/main/java/de/tlc4b/TLCRunner.java b/src/main/java/de/tlc4b/TLCRunner.java
index 611bd49..48aec1e 100644
--- a/src/main/java/de/tlc4b/TLCRunner.java
+++ b/src/main/java/de/tlc4b/TLCRunner.java
@@ -109,6 +109,10 @@ public class TLCRunner {
 			list.add("-coverage");
 			list.add("" + 60);
 		}
+		
+		list.add("-maxSetSize");
+		list.add("100000000");
+
 
 		// list.add("-config");
 		// list.add(machineName + ".cfg");
diff --git a/src/main/java/de/tlc4b/prettyprint/TLAPrinter.java b/src/main/java/de/tlc4b/prettyprint/TLAPrinter.java
index ecfda97..acf0f04 100644
--- a/src/main/java/de/tlc4b/prettyprint/TLAPrinter.java
+++ b/src/main/java/de/tlc4b/prettyprint/TLAPrinter.java
@@ -7,11 +7,9 @@ import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 
-import tlc2.TLCGlobals;
 import de.be4.classicalb.core.parser.Utils;
 import de.be4.classicalb.core.parser.analysis.DepthFirstAdapter;
 import de.be4.classicalb.core.parser.node.*;
-import de.tlc4b.TLC4B;
 import de.tlc4b.TLC4BGlobals;
 import de.tlc4b.analysis.MachineContext;
 import de.tlc4b.analysis.PrecedenceCollector;
diff --git a/src/main/java/de/tlc4b/tlc/TLCOutputInfo.java b/src/main/java/de/tlc4b/tlc/TLCOutputInfo.java
index ef0c9e7..318f463 100644
--- a/src/main/java/de/tlc4b/tlc/TLCOutputInfo.java
+++ b/src/main/java/de/tlc4b/tlc/TLCOutputInfo.java
@@ -12,8 +12,6 @@ import de.tlc4b.analysis.Typechecker;
 import de.tlc4b.btypes.BType;
 import de.tlc4b.tla.ConfigFile;
 import de.tlc4b.tla.TLAModule;
-import de.tlc4b.tla.config.ConfigFileAssignment;
-import de.tlc4b.tla.config.ModelValueAssignment;
 
 public class TLCOutputInfo {
 
diff --git a/src/main/java/de/tlc4b/tlc/TLCResults.java b/src/main/java/de/tlc4b/tlc/TLCResults.java
index cfc8ad3..cdabda9 100644
--- a/src/main/java/de/tlc4b/tlc/TLCResults.java
+++ b/src/main/java/de/tlc4b/tlc/TLCResults.java
@@ -233,14 +233,6 @@ public class TLCResults implements ToolGlobals {
 	}
 
 	private void evalErrorMessage(Message m) {
-		// System.out.println(------------------);
-		// System.out.print(m.getMessageCode() + " " +
-		// m.getParameters().length);
-		// for (int i = 0; i < m.getParameters().length; i++) {
-		// System.out.print(" " + m.getParameters()[i]);
-		// }
-		// System.out.println();
-
 		switch (m.getMessageCode()) {
 		case EC.TLC_INVARIANT_VIOLATED_INITIAL:
 		case EC.TLC_INVARIANT_VIOLATED_BEHAVIOR:
@@ -306,6 +298,8 @@ public class TLCResults implements ToolGlobals {
 	}
 
 	private TLCResult evaluatingParameter(String[] params) {
+		System.out.println(params.length);
+		System.out.println(params[0]);
 		for (int i = 0; i < params.length; i++) {
 			String s = params[i];
 			if (s.contains("not enumerable")) {
@@ -319,11 +313,13 @@ public class TLCResults implements ToolGlobals {
 			} else if (s.contains("which is not in the domain of the function")) {
 				return WellDefinednessError;
 			} else if (s.contains("tlc2.module.TLC.Assert")) {
-				return tlcResult = WellDefinednessError;
+				return WellDefinednessError;
 			} else if (s
 					.contains("CHOOSE x \\in S: P, but no element of S satisfied P")
 					&& s.contains("module FunctionsAsRelations")) {
 				return tlcResult = WellDefinednessError;
+			} else if (s.contains("The property of ASSERT_LTL")) {
+				return TemporalPropertyViolation;
 			}
 
 		}
diff --git a/src/test/java/de/tlc4b/ltl/LtlFormulaTest.java b/src/test/java/de/tlc4b/ltl/LTLFormulaTest.java
similarity index 99%
rename from src/test/java/de/tlc4b/ltl/LtlFormulaTest.java
rename to src/test/java/de/tlc4b/ltl/LTLFormulaTest.java
index 574e89b..235e445 100644
--- a/src/test/java/de/tlc4b/ltl/LtlFormulaTest.java
+++ b/src/test/java/de/tlc4b/ltl/LTLFormulaTest.java
@@ -14,7 +14,7 @@ import de.tlc4b.exceptions.ScopeException;
 import de.tlc4b.exceptions.TypeErrorException;
 
 
-public class LtlFormulaTest {
+public class LTLFormulaTest {
 
 	@BeforeClass
 	public static void setUp(){
diff --git a/src/test/java/de/tlc4b/prettyprint/NumbersTest.java b/src/test/java/de/tlc4b/prettyprint/NumbersTest.java
index 69b6292..11f5d92 100644
--- a/src/test/java/de/tlc4b/prettyprint/NumbersTest.java
+++ b/src/test/java/de/tlc4b/prettyprint/NumbersTest.java
@@ -4,8 +4,6 @@ import static de.tlc4b.util.TestUtil.compare;
 
 import org.junit.Test;
 
-import de.tlc4b.TLC4BGlobals;
-
 public class NumbersTest {
 
 	
diff --git a/src/test/java/de/tlc4b/tlc/integration/LTLTest.java b/src/test/java/de/tlc4b/tlc/integration/LTLTest.java
index a17f149..8cbe47c 100644
--- a/src/test/java/de/tlc4b/tlc/integration/LTLTest.java
+++ b/src/test/java/de/tlc4b/tlc/integration/LTLTest.java
@@ -1,5 +1,7 @@
 package de.tlc4b.tlc.integration;
-
+/**
+ * If the result is not correctly detected in the TLC output, @see de.tlc4b.tlc.TLCResult .
+ * */
 import static org.junit.Assert.assertEquals;
 
 import org.junit.BeforeClass;
@@ -51,5 +53,11 @@ public class LTLTest {
 		String[] a = new String[] { ".\\src\\test\\resources\\ltl\\Fairness_Parameter.mch" };
 		assertEquals(NoError, test(a));
 	}
+	
+	@Test
+	public void testLTLStatePropertyViolation() throws Exception{
+		String[] a = new String[] { ".\\src\\test\\resources\\ltl\\StatePropertyViolation.mch" };
+		assertEquals(TemporalPropertyViolation, test(a));
+	}
 
 }
diff --git a/src/test/java/de/tlc4b/util/TestUtil.java b/src/test/java/de/tlc4b/util/TestUtil.java
index 7986ad8..12a628e 100644
--- a/src/test/java/de/tlc4b/util/TestUtil.java
+++ b/src/test/java/de/tlc4b/util/TestUtil.java
@@ -208,7 +208,7 @@ public class TestUtil {
 		// B2TLAGlobals.setCleanup(true);
 		TLC4B tlc4b = new TLC4B();
 		try {
-			tlc4b.progress(args);
+			tlc4b.process(args);
 		} catch (Exception e) {
 			e.printStackTrace();
 			System.err.println(e.getMessage());
diff --git a/src/test/java/testing/CompoundScopeTest.java b/src/test/java/testing/CompoundScopeTest.java
index efdb18b..89bf8f0 100644
--- a/src/test/java/testing/CompoundScopeTest.java
+++ b/src/test/java/testing/CompoundScopeTest.java
@@ -1,26 +1,19 @@
 package testing;
 
-
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
 
 import org.junit.Ignore;
 import org.junit.Test;
 
-
-
-
-
 import de.be4.classicalb.core.parser.BParser;
 import de.be4.classicalb.core.parser.analysis.pragma.Pragma;
 import de.be4.classicalb.core.parser.analysis.prolog.RecursiveMachineLoader;
 import de.be4.classicalb.core.parser.exceptions.BException;
 import de.be4.classicalb.core.parser.node.Start;
-import de.tlc4b.analysis.MachineContext;
 import de.tlc4b.util.Ast2String;
 
 public class CompoundScopeTest {
@@ -33,39 +26,41 @@ public class CompoundScopeTest {
 	}
 
 	public void checkScope(String filename) throws BException, IOException {
-		
+
 		final File machineFile = new File(filename);
-		
+
 		BParser parser = new BParser(filename);
 		Start tree = parser.parseFile(machineFile, false);
 
-		RecursiveMachineLoader r = new RecursiveMachineLoader(machineFile.getParent(), parser.getContentProvider());
-		
-		
+		RecursiveMachineLoader r = new RecursiveMachineLoader(
+				machineFile.getParent(), parser.getContentProvider());
+
 		List<Pragma> pragmas = new ArrayList<Pragma>();
 		pragmas.addAll(parser.getPragmas());
-		r.loadAllMachines(machineFile, tree, parser.getSourcePositions(), parser.getDefinitions(), pragmas);
-		//r.printAsProlog(new PrintWriter(System.out), false);
-		
+		r.loadAllMachines(machineFile, tree, parser.getSourcePositions(),
+				parser.getDefinitions(), pragmas);
+		// r.printAsProlog(new PrintWriter(System.out), false);
+
 		Map<String, Start> map = r.getParsedMachines();
 		ArrayList<String> list = new ArrayList<String>(map.keySet());
-		
-		
-		//Hashtable<String, MachineContext> machineContextsTable = new Hashtable<String, MachineContext>();
-		//Hashtable<String, Typechecker> typecheckerTable = new Hashtable<String, Typechecker>();
+
+		// Hashtable<String, MachineContext> machineContextsTable = new
+		// Hashtable<String, MachineContext>();
+		// Hashtable<String, Typechecker> typecheckerTable = new
+		// Hashtable<String, Typechecker>();
 		for (int i = 0; i < list.size(); i++) {
 			String name = list.get(i);
-			//System.out.println(name);
+			// System.out.println(name);
 			Start start = map.get(name);
 			final Ast2String ast2String2 = new Ast2String();
 			start.apply(ast2String2);
 			System.out.println(ast2String2.toString());
-			
-			//MachineContext c = new MachineContext(start, machineContextsTable);
-			//machineContextsTable.put(name, c);
-			
+
+			// MachineContext c = new MachineContext(start,
+			// machineContextsTable);
+			// machineContextsTable.put(name, c);
+
 		}
-		
-		
+
 	}
 }
diff --git a/src/test/java/testing/CompoundTest.java b/src/test/java/testing/CompoundTest.java
index 4548075..769fff7 100644
--- a/src/test/java/testing/CompoundTest.java
+++ b/src/test/java/testing/CompoundTest.java
@@ -2,7 +2,6 @@ package testing;
 
 import java.io.File;
 import java.io.IOException;
-import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/src/test/resources/ltl/CounterError.mch b/src/test/resources/ltl/CounterError.mch
index ca93bec..cf73b82 100644
--- a/src/test/resources/ltl/CounterError.mch
+++ b/src/test/resources/ltl/CounterError.mch
@@ -1,4 +1,4 @@
-MACHINE CounterLTL
+MACHINE CounterError
 DEFINITIONS
 ASSERT_LTL_1 == "F {x = 12}"
 VARIABLES x
@@ -8,4 +8,4 @@ INITIALISATION x:=1
 OPERATIONS
   Inc = PRE x < 10 THEN x:= x + 1 END;
   Reset = PRE x = 10 THEN x := 1 END
-END
\ No newline at end of file
+END
diff --git a/src/test/resources/ltl/StatePropertyViolation.mch b/src/test/resources/ltl/StatePropertyViolation.mch
new file mode 100644
index 0000000..5e8a4c3
--- /dev/null
+++ b/src/test/resources/ltl/StatePropertyViolation.mch
@@ -0,0 +1,15 @@
+MACHINE StatePropertyViolation
+DEFINITIONS
+ ASSERT_LTL_1 == "!a.({a:ID} => {1=2})"
+SETS
+ ID={aa,bb}
+CONSTANTS iv
+PROPERTIES
+ iv:ID
+VARIABLES xx
+INVARIANT
+ xx:POW(ID)
+INITIALISATION xx:={}
+OPERATIONS
+  Set(yy) = SELECT yy:ID & yy /:xx THEN xx:= xx \/ {yy} END
+END
-- 
GitLab