diff --git a/src/test/java/de/tla2b/examples/InstanceTest.java b/src/test/java/de/tla2b/examples/InstanceTest.java index 2041965fdab3788ec6be40d1e9526c2f5fbcd85d..b4f8e07c331acb83f7707cbc044cd5e6e51d9429 100644 --- a/src/test/java/de/tla2b/examples/InstanceTest.java +++ b/src/test/java/de/tla2b/examples/InstanceTest.java @@ -1,19 +1,19 @@ package de.tla2b.examples; -import static de.tla2b.util.TestUtil.runModule; - import org.junit.Ignore; import org.junit.Test; +import static de.tla2b.util.TestUtil.runModule; + public class InstanceTest { - + @Test public void testInstanceNoName() throws Exception { String file = "src/test/resources/examples/instance/Counter/InstanceNoName.tla"; runModule(file); } - + @Ignore @Test public void testInstance() throws Exception { diff --git a/src/test/java/de/tla2b/examples/MCTest.java b/src/test/java/de/tla2b/examples/MCTest.java index 756380b790ec1d90c3c245c6d1ddf8ff55214ac0..dd8032fb736aa400a9c9bf25937fd74cdf078967 100644 --- a/src/test/java/de/tla2b/examples/MCTest.java +++ b/src/test/java/de/tla2b/examples/MCTest.java @@ -12,7 +12,7 @@ public class MCTest { String file = "src/test/resources/MCTests/simple/MC.tla"; runModule(file); } - + @Test public void testInvariantMC() throws Exception { String file = "src/test/resources/MCTests/Invariant/MC.tla"; @@ -54,39 +54,39 @@ public class MCTest { String file = "src/test/resources/MCTests/DieHarder/MC.tla"; runModule(file); } - - + + @Ignore @Test public void testCarTalkPuzzle() throws Exception { String file = "src/test/resources/MCTests/CarTalkPuzzle/MC.tla"; runModule(file); } - + @Ignore @Test public void testCarTalkPuzzleModel2() throws Exception { String file = "src/test/resources/MCTests/CarTalkPuzzle/Model2/MC.tla"; runModule(file); } - + @Ignore @Test public void testRecursiveFunction() throws Exception { String file = "src/test/resources/examples/RecursiveFunction/RecursiveFunction.tla"; runModule(file); } - + @Test public void testQueens() throws Exception { String file = "src/test/resources/MCTests/Queens/MC.tla"; runModule(file); } - + @Test public void testMacroTest() throws Exception { String file = "src/test/resources/renamer/MacroTest/MacroTest.tla"; runModule(file); } - + } diff --git a/src/test/java/de/tla2b/examples/RegressionTests.java b/src/test/java/de/tla2b/examples/RegressionTests.java index 06d9092860ed3884caa7bb4192c920c7dcb02a33..622f97843cee3445ceffad7cd923e2da6493c668 100644 --- a/src/test/java/de/tla2b/examples/RegressionTests.java +++ b/src/test/java/de/tla2b/examples/RegressionTests.java @@ -1,14 +1,13 @@ package de.tla2b.examples; -import java.io.File; -import java.util.List; - import de.tla2b.util.TestUtil; - import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; +import java.io.File; +import java.util.List; + @RunWith(Parameterized.class) public class RegressionTests { private final File moduleFile; @@ -17,13 +16,13 @@ public class RegressionTests { this.moduleFile = machine; } - @Test - public void testRunTLC() throws Exception { - TestUtil.loadTlaFile(moduleFile.getPath()); - } - @Parameterized.Parameters(name = "{0}") public static List<File> getConfig() { return TestUtil.getModulesRecursively("./src/test/resources/regression"); } + + @Test + public void testRunTLC() throws Exception { + TestUtil.loadTlaFile(moduleFile.getPath()); + } } diff --git a/src/test/java/de/tla2b/expression/ComplexExpressionTest.java b/src/test/java/de/tla2b/expression/ComplexExpressionTest.java index 520e759a17698f586c904b6d9819546809c7844a..99213cb7778ffaeb5bbe7c4fe1f400c2e33e1c78 100644 --- a/src/test/java/de/tla2b/expression/ComplexExpressionTest.java +++ b/src/test/java/de/tla2b/expression/ComplexExpressionTest.java @@ -9,24 +9,24 @@ public class ComplexExpressionTest { @Test public void testExcept() throws Exception { compareExpr("a = %u.(u : {3, 4, 5}| u + 1) & x = a <+ {3 |-> 1}", - "a = [u \\in {3,4,5}|-> u + 1] /\\ x = [a EXCEPT ![3] = 1]"); + "a = [u \\in {3,4,5}|-> u + 1] /\\ x = [a EXCEPT ![3] = 1]"); } @Test public void testLetIn() throws Exception { compareExpr("1 + 1", "LET foo == 1 IN foo + foo"); } - + @Test public void testLetPredicate() throws Exception { compareExpr("1=1 & 1 = 1", "LET foo == 1 = 1 IN foo /\\ foo"); } - + @Test public void testLetParameterPredicate() throws Exception { compareExpr("1=1 & 1 = 2", "LET foo(a,b) == a = b IN foo(1,1) /\\ foo(1,2)"); } - + @Test public void testLetDefWithArgs() throws Exception { @@ -56,43 +56,46 @@ public class ComplexExpressionTest { @Test public void testQuantifier() throws Exception { compareExpr( - "#x,z,y.(x : NATURAL & z : NATURAL & y : NATURAL & x = y)", - "\\E x,z \\in Nat, y \\in Nat: x = y"); + "#x,z,y.(x : NATURAL & z : NATURAL & y : NATURAL & x = y)", + "\\E x,z \\in Nat, y \\in Nat: x = y"); } @Test public void testFunctions() throws Exception { compareExpr("(%x.(x : 1 .. 10| x * x) <+ {3 |-> 6})(3)", "LET" - + " f[x \\in 1..10] == x*x\n" + " h == [f EXCEPT ![3] = 6]\n" - + "IN h[3]"); + + " f[x \\in 1..10] == x*x\n" + " h == [f EXCEPT ![3] = 6]\n" + + "IN h[3]"); } @Test public void testRecord() throws Exception { compareExpr("rec(a:rec(a:1, b:TRUE)'a + rec(a:1, b:TRUE)'a, b:rec(a:1, b:TRUE)'b)", - "[[a|->1, b |->TRUE] EXCEPT !.a= @+@]"); + "[[a|->1, b |->TRUE] EXCEPT !.a= @+@]"); } @Test public void testRecord2() throws Exception { compareExpr("r = rec(a:rec(x:1, y:TRUE), b:1) & r2 = rec(a:rec(x:2, y:(r'a)'y), b:r'b)", - "r = [a |-> [x|->1,y|->TRUE], b |-> 1] " - + "/\\ r2 = [r EXCEPT !.a.x = 2]"); + "r = [a |-> [x|->1,y|->TRUE], b |-> 1] " + + "/\\ r2 = [r EXCEPT !.a.x = 2]"); } + @Test public void testConstraint1() throws Exception { compareExpr("x**3 - 20*x**2 + 7*x = 14388", - "x^3 - 20*x^2 + 7*x = 14388"); + "x^3 - 20*x^2 + 7*x = 14388"); } + @Test public void testConstraintCHOOSE() throws Exception { compareExpr("CHOOSE({x|x:0..100 & x**3 - 20*x**2 + 7*x = 14388})", - "CHOOSE x \\in 0..100: x^3 - 20*x^2 + 7*x = 14388"); + "CHOOSE x \\in 0..100: x^3 - 20*x^2 + 7*x = 14388"); } + @Test public void testConstraintCHOOSENested() throws Exception { compareExpr("CHOOSE({y|y : 0 .. 100 & y = CHOOSE({x|x : 0 .. 100 & x ** 3 - 20 * x ** 2 + 7 * x = 14388})})", - "CHOOSE y \\in 0..100: y = CHOOSE x \\in 0..100: x^3 - 20*x^2 + 7*x = 14388"); + "CHOOSE y \\in 0..100: y = CHOOSE x \\in 0..100: x^3 - 20*x^2 + 7*x = 14388"); } // Note that for: CHOOSE x \in 0..100: x = CHOOSE x \in 0..100: x^3 - 20*x^2 + 7*x = 14388 // we get an error: Multiply-defined symbol 'x': this definition or declaration conflicts diff --git a/src/test/java/de/tla2b/expression/ModuleAndExpressionTest.java b/src/test/java/de/tla2b/expression/ModuleAndExpressionTest.java index 69e312ac56525c46344ddbc9404cc272f6bc245c..c438421b153233d73f69e15ba5e0a4f2283e9fc1 100644 --- a/src/test/java/de/tla2b/expression/ModuleAndExpressionTest.java +++ b/src/test/java/de/tla2b/expression/ModuleAndExpressionTest.java @@ -1,24 +1,23 @@ package de.tla2b.expression; -import static de.tla2b.util.TestUtil.compareExprIncludingModel; - +import de.tla2b.exceptions.TypeErrorException; import org.junit.Test; -import de.tla2b.exceptions.TypeErrorException; +import static de.tla2b.util.TestUtil.compareExprIncludingModel; public class ModuleAndExpressionTest { - + @Test public void testCon() throws Exception { String module = "---- MODULE Testing ----\n" + "CONSTANTS k \n" - + "ASSUME k = 4" + "==============="; + + "ASSUME k = 4" + "==============="; compareExprIncludingModel("k = 1", "k = 1", module); } @Test(expected = TypeErrorException.class) public void testTypeError() throws Exception { String module = "---- MODULE Testing ----\n" + "CONSTANTS k \n" - + "ASSUME k = 4" + "==============="; + + "ASSUME k = 4" + "==============="; compareExprIncludingModel(null, "k = TRUE", module); } -} \ No newline at end of file +} diff --git a/src/test/java/de/tla2b/expression/SimpleExpressionTest.java b/src/test/java/de/tla2b/expression/SimpleExpressionTest.java index bb9c2e52592ecd813ac30212aedc15a17df5b98f..bc7a9544ead92140e22fc8307b11c048e75e17a3 100644 --- a/src/test/java/de/tla2b/expression/SimpleExpressionTest.java +++ b/src/test/java/de/tla2b/expression/SimpleExpressionTest.java @@ -44,8 +44,8 @@ public class SimpleExpressionTest { @Test public void testIfThenElse() throws Exception { compareExpr( - "IF 1 = 1 THEN 1 ELSE 2 END", //"(%t_.( t_ = 0 & 1 = 1 | 1 )\\/%t_.( t_ = 0 & not(1 = 1) | 2 ))(0)", - "IF 1 = 1 THEN 1 ELSE 2"); + "IF 1 = 1 THEN 1 ELSE 2 END", //"(%t_.( t_ = 0 & 1 = 1 | 1 )\\/%t_.( t_ = 0 & not(1 = 1) | 2 ))(0)", + "IF 1 = 1 THEN 1 ELSE 2"); } @Test diff --git a/src/test/java/de/tla2b/expression/TestError.java b/src/test/java/de/tla2b/expression/TestError.java index 912940db7e6e546e7b06dec138cdd4ac422c66bb..b4302bc653b0dd8fe99db7b8e74678f4fca41851 100644 --- a/src/test/java/de/tla2b/expression/TestError.java +++ b/src/test/java/de/tla2b/expression/TestError.java @@ -1,10 +1,9 @@ package de.tla2b.expression; -import static de.tla2b.util.TestUtil.compareExpr; - +import de.tla2b.exceptions.ExpressionTranslationException; import org.junit.Test; -import de.tla2b.exceptions.ExpressionTranslationException; +import static de.tla2b.util.TestUtil.compareExpr; public class TestError { diff --git a/src/test/java/de/tla2b/expression/TestSequences.java b/src/test/java/de/tla2b/expression/TestSequences.java index 8f79b19282eba280b79c2d2e6f7ad5623626d92d..f8d060752c113762275f5f66f3a3914c758bbc7d 100644 --- a/src/test/java/de/tla2b/expression/TestSequences.java +++ b/src/test/java/de/tla2b/expression/TestSequences.java @@ -1,9 +1,9 @@ package de.tla2b.expression; -import static de.tla2b.util.TestUtil.compareExpr; - import org.junit.Test; +import static de.tla2b.util.TestUtil.compareExpr; + public class TestSequences { @Test diff --git a/src/test/java/de/tla2b/main/MainTest.java b/src/test/java/de/tla2b/main/MainTest.java index ce0d3abf8dbdc3b7d10e6208f03d1677c428df99..1ab831f606a80e366928e09e811854790f5b2f40 100644 --- a/src/test/java/de/tla2b/main/MainTest.java +++ b/src/test/java/de/tla2b/main/MainTest.java @@ -1,17 +1,16 @@ package de.tla2b.main; -import java.io.File; - +import de.tla2b.TLA2B; import org.junit.Test; -import de.tla2b.TLA2B; +import java.io.File; public class MainTest { @Test public void testClub() throws Exception { String dir = "src/test/resources/regression/Club/"; - TLA2B.main(new String[] { dir + "Club.tla" }); + TLA2B.main(new String[]{dir + "Club.tla"}); new File(dir + "Club_tla.txt").deleteOnExit(); } diff --git a/src/test/java/de/tla2b/main/RenamerTest.java b/src/test/java/de/tla2b/main/RenamerTest.java index daa61456772ddcf0d668158234e1dadfa4766abc..398f674486da6a69f163dd228eb2ad6482adbac3 100644 --- a/src/test/java/de/tla2b/main/RenamerTest.java +++ b/src/test/java/de/tla2b/main/RenamerTest.java @@ -1,8 +1,7 @@ package de.tla2b.main; -import org.junit.Test; - import de.tla2b.util.TestUtil; +import org.junit.Test; public class RenamerTest { diff --git a/src/test/java/de/tla2b/prettyprintb/ActionsTest.java b/src/test/java/de/tla2b/prettyprintb/ActionsTest.java index fd81bc2b4eebba5181ca01269d51a8baebe14870..adaad8aa28ca5df650ab507be55212385ba07d3c 100644 --- a/src/test/java/de/tla2b/prettyprintb/ActionsTest.java +++ b/src/test/java/de/tla2b/prettyprintb/ActionsTest.java @@ -1,66 +1,66 @@ package de.tla2b.prettyprintb; -import static de.tla2b.util.TestUtil.compare; - import org.junit.Ignore; import org.junit.Test; +import static de.tla2b.util.TestUtil.compare; + public class ActionsTest { @Ignore // changed UNCHANGED translation TODO fix test @Test public void testOperation1() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "VARIABLES x, y \n" - + "Init == x = 1 /\\ y = 1 \n" - + "Next == x' = 1 /\\ UNCHANGED y \n" - + "================================="; - + + "EXTENDS Naturals \n" + + "VARIABLES x, y \n" + + "Init == x = 1 /\\ y = 1 \n" + + "Next == x' = 1 /\\ UNCHANGED y \n" + + "================================="; + final String expected = "MACHINE Testing\n" - + "VARIABLES x, y\n" - + "INVARIANT x : INTEGER & y : INTEGER \n" - + "INITIALISATION x, y:(x = 1 & y = 1) \n" - + "OPERATIONS \n" - + " Next = ANY y_n WHERE y_n : INTEGER " - + " & y_n = y THEN x,y := 1,y_n END \n" - + "END"; + + "VARIABLES x, y\n" + + "INVARIANT x : INTEGER & y : INTEGER \n" + + "INITIALISATION x, y:(x = 1 & y = 1) \n" + + "OPERATIONS \n" + + " Next = ANY y_n WHERE y_n : INTEGER " + + " & y_n = y THEN x,y := 1,y_n END \n" + + "END"; compare(expected, module); } - + @Test public void testOperation2() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "VARIABLES x, y \n" - + "Init == x = 1 /\\ y = 1 \n" - + "Next == x = 2 /\\ x' = 1 /\\ y' = y\n" - + "================================="; - + + "EXTENDS Naturals \n" + + "VARIABLES x, y \n" + + "Init == x = 1 /\\ y = 1 \n" + + "Next == x = 2 /\\ x' = 1 /\\ y' = y\n" + + "================================="; + final String expected = "MACHINE Testing\n" - + "VARIABLES x, y\n" - + "INVARIANT x : INTEGER & y : INTEGER \n" - + "INITIALISATION x, y:(x = 1 & y = 1) \n" - + "OPERATIONS Next = SELECT x = 2 THEN x,y := 1,y END \n" - + "END"; + + "VARIABLES x, y\n" + + "INVARIANT x : INTEGER & y : INTEGER \n" + + "INITIALISATION x, y:(x = 1 & y = 1) \n" + + "OPERATIONS Next = SELECT x = 2 THEN x,y := 1,y END \n" + + "END"; compare(expected, module); } - + @Test public void testOperation3() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "VARIABLES x, y \n" - + "Init == x = 1 /\\ y = 1 \n" - + "Next == x < 2 /\\ x' = 1 /\\ y' = y\n" - + "================================="; - + + "EXTENDS Naturals \n" + + "VARIABLES x, y \n" + + "Init == x = 1 /\\ y = 1 \n" + + "Next == x < 2 /\\ x' = 1 /\\ y' = y\n" + + "================================="; + final String expected = "MACHINE Testing\n" - + "VARIABLES x, y\n" - + "INVARIANT x : INTEGER & y : INTEGER \n" - + "INITIALISATION x, y:(x = 1 & y = 1) \n" - + "OPERATIONS Next = SELECT x < 2 THEN x,y := 1,y END \n" - + "END"; + + "VARIABLES x, y\n" + + "INVARIANT x : INTEGER & y : INTEGER \n" + + "INITIALISATION x, y:(x = 1 & y = 1) \n" + + "OPERATIONS Next = SELECT x < 2 THEN x,y := 1,y END \n" + + "END"; compare(expected, module); } } diff --git a/src/test/java/de/tla2b/prettyprintb/BBuiltInsTest.java b/src/test/java/de/tla2b/prettyprintb/BBuiltInsTest.java index f3637767badf1beea57584a760ea80f2c603b55c..36cb07863bbbae325d8ea56bbdd12ec74e5123b4 100644 --- a/src/test/java/de/tla2b/prettyprintb/BBuiltInsTest.java +++ b/src/test/java/de/tla2b/prettyprintb/BBuiltInsTest.java @@ -1,65 +1,65 @@ package de.tla2b.prettyprintb; -import static de.tla2b.util.TestUtil.compare; - import org.junit.Ignore; import org.junit.Test; +import static de.tla2b.util.TestUtil.compare; + public class BBuiltInsTest { @Test public void testBoolean() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME TRUE \\in BOOLEAN\n" - + "================================="; + + "ASSUME TRUE \\in BOOLEAN\n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES TRUE : BOOL \n" + "END"; + + "PROPERTIES TRUE : BOOL \n" + "END"; compare(expected, module); } - + @Ignore @Test public void testSetSummation() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS TLA2B\n" - + "ASSUME SetSummation({1,2}) = 3\n" - + "================================="; + + "EXTENDS TLA2B\n" + + "ASSUME SetSummation({1,2}) = 3\n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES SIGMA(t_).(t_ : {1,2}|t_) = 3 \n" + "END"; + + "PROPERTIES SIGMA(t_).(t_ : {1,2}|t_) = 3 \n" + "END"; compare(expected, module); } @Test public void testString() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME \"abc\" \\in STRING\n" - + "================================="; + + "ASSUME \"abc\" \\in STRING\n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES \"abc\" : STRING \n" + "END"; + + "PROPERTIES \"abc\" : STRING \n" + "END"; compare(expected, module); } @Test public void testBoolValue() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME TRUE \n" + "================================="; + + "ASSUME TRUE \n" + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES TRUE = TRUE \n" + "END"; + + "PROPERTIES TRUE = TRUE \n" + "END"; compare(expected, module); } @Test public void testBoolValue2() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME TRUE = FALSE \n" - + "================================="; + + "ASSUME TRUE = FALSE \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES TRUE = FALSE \n" + "END"; + + "PROPERTIES TRUE = FALSE \n" + "END"; compare(expected, module); } } diff --git a/src/test/java/de/tla2b/prettyprintb/DefinitionsTest.java b/src/test/java/de/tla2b/prettyprintb/DefinitionsTest.java index 41ab9292ad308410ee4fbb92d9aba966cc97803d..2a8304e54c4a81031bda23c0c8f1aa30094fae1a 100644 --- a/src/test/java/de/tla2b/prettyprintb/DefinitionsTest.java +++ b/src/test/java/de/tla2b/prettyprintb/DefinitionsTest.java @@ -1,54 +1,54 @@ package de.tla2b.prettyprintb; -import static de.tla2b.util.TestUtil.compare; - import org.junit.Test; +import static de.tla2b.util.TestUtil.compare; + public class DefinitionsTest { - + @Test public void testMakePredicate() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "foo == TRUE \n" - + "ASSUME foo\n" - + "================================="; + + "foo == TRUE \n" + + "ASSUME foo\n" + + "================================="; final String expected = "MACHINE Testing\n" - + "DEFINITIONS foo == TRUE;" - + "PROPERTIES foo = TRUE\n" - + "END"; + + "DEFINITIONS foo == TRUE;" + + "PROPERTIES foo = TRUE\n" + + "END"; compare(expected, module); } - + @Test public void testPredicate() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "foo == TRUE = TRUE \n" - + "ASSUME foo\n" - + "================================="; + + "foo == TRUE = TRUE \n" + + "ASSUME foo\n" + + "================================="; final String expected = "MACHINE Testing\n" - + "DEFINITIONS foo == TRUE= TRUE;" - + "PROPERTIES foo\n" - + "END"; + + "DEFINITIONS foo == TRUE= TRUE;" + + "PROPERTIES foo\n" + + "END"; compare(expected, module); } - + @Test public void testGoalDefinition() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "VARIABLES x, y \n" - + "Init == x = 1 /\\ y = 1 \n" - + "GOAL == 1=1 \n" - + "================================="; - + + "EXTENDS Naturals \n" + + "VARIABLES x, y \n" + + "Init == x = 1 /\\ y = 1 \n" + + "GOAL == 1=1 \n" + + "================================="; + final String expected = "MACHINE Testing\n" - + "DEFINITIONS GOAL == 1 = 1;" - + "VARIABLES x, y\n" - + "INVARIANT x : INTEGER & y : INTEGER \n" - + "INITIALISATION x, y:(x = 1 & y = 1) \n" - + "END"; + + "DEFINITIONS GOAL == 1 = 1;" + + "VARIABLES x, y\n" + + "INVARIANT x : INTEGER & y : INTEGER \n" + + "INITIALISATION x, y:(x = 1 & y = 1) \n" + + "END"; compare(expected, module); } } diff --git a/src/test/java/de/tla2b/prettyprintb/ExceptTest.java b/src/test/java/de/tla2b/prettyprintb/ExceptTest.java index c7c399f13d7ad0e8d40753dc4eb8d10340a6c9e8..dddd8286213845dd0adf4d257d8a77dc2c7b82ed 100644 --- a/src/test/java/de/tla2b/prettyprintb/ExceptTest.java +++ b/src/test/java/de/tla2b/prettyprintb/ExceptTest.java @@ -1,208 +1,208 @@ package de.tla2b.prettyprintb; -import static de.tla2b.util.TestUtil.compare; - import org.junit.Ignore; import org.junit.Test; - import util.ToolIO; +import static de.tla2b.util.TestUtil.compare; + public class ExceptTest { @Test public void testFunctionExcept() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = [k EXCEPT ![TRUE] = 0, ![FALSE] = 0] \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = [k EXCEPT ![TRUE] = 0, ![FALSE] = 0] \n" + + "================================="; final String expected = "MACHINE Testing\n" + "CONSTANTS k\n" - + "PROPERTIES " - + "k : BOOL +-> INTEGER & k = (k <+ {(TRUE,0)}) <+ {(FALSE,0)} \n " - + "END"; + + "PROPERTIES " + + "k : BOOL +-> INTEGER & k = (k <+ {(TRUE,0)}) <+ {(FALSE,0)} \n " + + "END"; compare(expected, module); } - + @Test public void testFunctionExcept2() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = [i \\in {3} |-> i] /\\ k2 = [k EXCEPT ![3] = @+1, ![3] = @+1] \n" - + "================================="; - - final String expected = "MACHINE Testing\n" - + "CONSTANTS k, k2\n" - + "PROPERTIES " - + "(k : INTEGER +-> INTEGER & k2 : INTEGER +-> INTEGER) & (k = %(i).(i : {3} | i) & k2 = (k <+ {(3,k(3) + 1)}) <+ {(3,(k <+ {(3,k(3) + 1)})(3) + 1)}) \n " - + "END"; + + "EXTENDS Naturals \n" + + "CONSTANTS k, k2 \n" + + "ASSUME k = [i \\in {3} |-> i] /\\ k2 = [k EXCEPT ![3] = @+1, ![3] = @+1] \n" + + "================================="; + + final String expected = "MACHINE Testing\n" + + "CONSTANTS k, k2\n" + + "PROPERTIES " + + "(k : INTEGER +-> INTEGER & k2 : INTEGER +-> INTEGER) & (k = %(i).(i : {3} | i) & k2 = (k <+ {(3,k(3) + 1)}) <+ {(3,(k <+ {(3,k(3) + 1)})(3) + 1)}) \n " + + "END"; compare(expected, module); } @Test public void testFunctionAt() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k \n" - + "ASSUME k = [i \\in {3,4} |-> i] /\\ k # [k EXCEPT ![3] = @ + 1] \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k \n" + + "ASSUME k = [i \\in {3,4} |-> i] /\\ k # [k EXCEPT ![3] = @ + 1] \n" + + "================================="; final String expected = "MACHINE Testing\n" + "CONSTANTS k\n" - + "PROPERTIES " - + "k : INTEGER +-> INTEGER & (k = %(i).(i : {3, 4} | i) & k /= k <+ {(3,k(3) + 1)}) \n" - + "END"; + + "PROPERTIES " + + "k : INTEGER +-> INTEGER & (k = %(i).(i : {3, 4} | i) & k /= k <+ {(3,k(3) + 1)}) \n" + + "END"; compare(expected, module); } - + @Test public void testFunctionTuple() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k \n" - + "ASSUME k = [i \\in {3,4}, j \\in {5,6} |-> i+j] /\\ k # [k EXCEPT ![3,5] = 1] \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k \n" + + "ASSUME k = [i \\in {3,4}, j \\in {5,6} |-> i+j] /\\ k # [k EXCEPT ![3,5] = 1] \n" + + "================================="; final String expected = "MACHINE Testing\n" + "CONSTANTS k\n" - + "PROPERTIES " - + "k : INTEGER * INTEGER +-> INTEGER & (k = %(i, j).(i : {3, 4} & j : {5, 6} | i + j) & k /= k <+ {((3,5),1)}) \n" - + "END"; + + "PROPERTIES " + + "k : INTEGER * INTEGER +-> INTEGER & (k = %(i, j).(i : {3, 4} & j : {5, 6} | i + j) & k /= k <+ {((3,5),1)}) \n" + + "END"; compare(expected, module); } + @Test public void testNestedFunctionAt() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k \n" - + "ASSUME k = [i \\in {TRUE} |-> <<5,6>>] /\\ k # [k EXCEPT ![TRUE][2] = @ + 1] \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k \n" + + "ASSUME k = [i \\in {TRUE} |-> <<5,6>>] /\\ k # [k EXCEPT ![TRUE][2] = @ + 1] \n" + + "================================="; final String expected = "MACHINE Testing\n" + "CONSTANTS k\n" - + "PROPERTIES " - + "k : BOOL +-> (INTEGER +-> INTEGER) & (k = %(i).(i : {TRUE} | [5,6]) & k /= k <+ {(TRUE,k(TRUE) <+ {(2,(k(TRUE))(2) + 1)})}) \n" - + "END"; + + "PROPERTIES " + + "k : BOOL +-> (INTEGER +-> INTEGER) & (k = %(i).(i : {TRUE} | [5,6]) & k /= k <+ {(TRUE,k(TRUE) <+ {(2,(k(TRUE))(2) + 1)})}) \n" + + "END"; compare(expected, module); } - + @Test public void testRecordExcept() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = [a |-> 1, b |-> TRUE] /\\ k /= [k EXCEPT !.a = 2, !.b = FALSE] \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = [a |-> 1, b |-> TRUE] /\\ k /= [k EXCEPT !.a = 2, !.b = FALSE] \n" + + "================================="; final String expected = "MACHINE Testing\n" + "CONSTANTS k\n" - + "PROPERTIES " - + "k : struct(a:INTEGER, b:BOOL) & (k = rec(a:1, b:TRUE) & k /= rec(a:rec(a:2, b:k'b)'a, b:FALSE)) \n" - + "END"; + + "PROPERTIES " + + "k : struct(a:INTEGER, b:BOOL) & (k = rec(a:1, b:TRUE) & k /= rec(a:rec(a:2, b:k'b)'a, b:FALSE)) \n" + + "END"; compare(expected, module); } - + @Test public void testRecordAt() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = [a |-> 1, b |-> 1] /\\ k2 = [k EXCEPT !.b = @ + 1, !.b = @ + 1] \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k, k2 \n" + + "ASSUME k = [a |-> 1, b |-> 1] /\\ k2 = [k EXCEPT !.b = @ + 1, !.b = @ + 1] \n" + + "================================="; final String expected = "MACHINE Testing\n" + "CONSTANTS k, k2\n" - + "PROPERTIES " - + "(k : struct(a:INTEGER, b:INTEGER) & k2 : struct(a:INTEGER, b:INTEGER)) & (k = rec(a:1, b:1) & k2 = rec(a:rec(a:k'a, b:k'b + 1)'a, b:rec(a:k'a, b:k'b + 1)'b + 1)) \n" - + "END"; + + "PROPERTIES " + + "(k : struct(a:INTEGER, b:INTEGER) & k2 : struct(a:INTEGER, b:INTEGER)) & (k = rec(a:1, b:1) & k2 = rec(a:rec(a:k'a, b:k'b + 1)'a, b:rec(a:k'a, b:k'b + 1)'b + 1)) \n" + + "END"; compare(expected, module); } - + @Test public void testNestedRecordAt() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k \n" - + "ASSUME k = [a |-> [b |-> 1]] /\\ k /= [k EXCEPT !.a.b = @ + 1] \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k \n" + + "ASSUME k = [a |-> [b |-> 1]] /\\ k /= [k EXCEPT !.a.b = @ + 1] \n" + + "================================="; final String expected = "MACHINE Testing\n" + "CONSTANTS k\n" - + "PROPERTIES " - + "k : struct(a:struct(b:INTEGER)) & (k = rec(a:rec(b:1)) & k /= rec(a:rec(b:(k'a)'b + 1))) \n" - + "END"; + + "PROPERTIES " + + "k : struct(a:struct(b:INTEGER)) & (k = rec(a:rec(b:1)) & k /= rec(a:rec(b:(k'a)'b + 1))) \n" + + "END"; compare(expected, module); } - + @Test public void testRecordFunctionExcept() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = [a |-> <<3>>] /\\ k /= [k EXCEPT !.a[1] = 4] \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = [a |-> <<3>>] /\\ k /= [k EXCEPT !.a[1] = 4] \n" + + "================================="; final String expected = "MACHINE Testing\n" + "CONSTANTS k\n" - + "PROPERTIES " - + "k : struct(a:INTEGER +-> INTEGER) & (k = rec(a:[3]) & k /= rec(a:k'a <+ {(1,4)})) \n" - + "END"; + + "PROPERTIES " + + "k : struct(a:INTEGER +-> INTEGER) & (k = rec(a:[3]) & k /= rec(a:k'a <+ {(1,4)})) \n" + + "END"; compare(expected, module); } - + @Test public void testRecordFunctionAt() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k \n" - + "ASSUME k = [a |-> <<3>>] /\\ k /= [k EXCEPT !.a[1] = @ + 1] \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k \n" + + "ASSUME k = [a |-> <<3>>] /\\ k /= [k EXCEPT !.a[1] = @ + 1] \n" + + "================================="; final String expected = "MACHINE Testing\n" + "CONSTANTS k\n" - + "PROPERTIES " - + "k : struct(a:INTEGER +-> INTEGER) & (k = rec(a:[3]) & k /= rec(a:k'a <+ {(1,(k'a)(1) + 1)})) \n" - + "END"; + + "PROPERTIES " + + "k : struct(a:INTEGER +-> INTEGER) & (k = rec(a:[3]) & k /= rec(a:k'a <+ {(1,(k'a)(1) + 1)})) \n" + + "END"; compare(expected, module); } - + @Test public void testFunctionRecordExcept() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = [i \\in {3,4} |->[a |-> i, b |-> TRUE ] ] /\\ k /= [k EXCEPT ![3].b = FALSE] \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = [i \\in {3,4} |->[a |-> i, b |-> TRUE ] ] /\\ k /= [k EXCEPT ![3].b = FALSE] \n" + + "================================="; final String expected = "MACHINE Testing\n" + "CONSTANTS k\n" - + "PROPERTIES " - + "k : INTEGER +-> struct(a:INTEGER, b:BOOL) & (k = %(i).(i : {3, 4} | rec(a:i, b:TRUE)) & k /= k <+ {(3,rec(a:k(3)'a, b:FALSE))}) \n" - + "END"; + + "PROPERTIES " + + "k : INTEGER +-> struct(a:INTEGER, b:BOOL) & (k = %(i).(i : {3, 4} | rec(a:i, b:TRUE)) & k /= k <+ {(3,rec(a:k(3)'a, b:FALSE))}) \n" + + "END"; compare(expected, module); } - + @Test public void testFunctionRecordAt() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k \n" - + "ASSUME k = [i \\in {3,4} |->[a |-> i, b |-> TRUE ] ] /\\ k /= [k EXCEPT ![3].a = @ + 1] \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k \n" + + "ASSUME k = [i \\in {3,4} |->[a |-> i, b |-> TRUE ] ] /\\ k /= [k EXCEPT ![3].a = @ + 1] \n" + + "================================="; final String expected = "MACHINE Testing\n" + "CONSTANTS k\n" - + "PROPERTIES " - + "k : INTEGER +-> struct(a:INTEGER, b:BOOL) & (k = %(i).(i : {3, 4} | rec(a:i, b:TRUE)) & k /= k <+ {(3,rec(a:k(3)'a + 1, b:k(3)'b))}) \n" - + "END"; + + "PROPERTIES " + + "k : INTEGER +-> struct(a:INTEGER, b:BOOL) & (k = %(i).(i : {3, 4} | rec(a:i, b:TRUE)) & k /= k <+ {(3,rec(a:k(3)'a + 1, b:k(3)'b))}) \n" + + "END"; compare(expected, module); } - + @Test public void testRecordExceptNested() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = [a |-> [b |-> 1, c |-> 2]] /\\ k /= [k EXCEPT !.a.b = 2] \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = [a |-> [b |-> 1, c |-> 2]] /\\ k /= [k EXCEPT !.a.b = 2] \n" + + "================================="; final String expected = "MACHINE Testing\n" + "CONSTANTS k\n" - + "PROPERTIES " - + "k : struct(a:struct(b:INTEGER, c:INTEGER)) & (k = rec(a:rec(b:1, c:2)) & k /= rec(a:rec(b:2, c:(k'a)'c))) \n" - + "END"; + + "PROPERTIES " + + "k : struct(a:struct(b:INTEGER, c:INTEGER)) & (k = rec(a:rec(b:1, c:2)) & k /= rec(a:rec(b:2, c:(k'a)'c))) \n" + + "END"; compare(expected, module); } @@ -210,15 +210,15 @@ public class ExceptTest { @Test public void testFunctionExceptAt() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k \n" - + "ASSUME k = [x \\in {1,2} |-> x] /\\ [k EXCEPT ![1] = @ + 1][1] = 2 \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k \n" + + "ASSUME k = [x \\in {1,2} |-> x] /\\ [k EXCEPT ![1] = @ + 1][1] = 2 \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "CONSTANTS k \n" - + "PROPERTIES k : INTEGER +-> INTEGER & (k = %x.(x : {1, 2}| x) & (k <+ {1 |-> k(1) + 1})(1) = 2)\n" - + "END"; + + "CONSTANTS k \n" + + "PROPERTIES k : INTEGER +-> INTEGER & (k = %x.(x : {1, 2}| x) & (k <+ {1 |-> k(1) + 1})(1) = 2)\n" + + "END"; compare(expected, module); } @@ -227,64 +227,64 @@ public class ExceptTest { public void testFunctionExceptAt2() throws Exception { ToolIO.reset(); final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = [x,y \\in {1,2} |-> x+y] /\\ k2 = [k EXCEPT ![1,1] = @ + 4] \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k, k2 \n" + + "ASSUME k = [x,y \\in {1,2} |-> x+y] /\\ k2 = [k EXCEPT ![1,1] = @ + 4] \n" + + "================================="; final String expected = "MACHINE Testing\n" + "CONSTANTS k, k2\n" - + "PROPERTIES k : POW(INTEGER*INTEGER*INTEGER) " - + "& k2 : POW(INTEGER*INTEGER*INTEGER) " - + "& k = %x,y.(x : {1, 2} & y : {1, 2}| x + y) " - + "& k2 = k <+ {(1, 1) |-> k(1, 1) + 4} \n" + "END"; + + "PROPERTIES k : POW(INTEGER*INTEGER*INTEGER) " + + "& k2 : POW(INTEGER*INTEGER*INTEGER) " + + "& k = %x,y.(x : {1, 2} & y : {1, 2}| x + y) " + + "& k2 = k <+ {(1, 1) |-> k(1, 1) + 4} \n" + "END"; compare(expected, module); } - + @Test public void testFunctionExcept9() throws Exception { ToolIO.reset(); final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k \n" - + "ASSUME k = [i \\in {3,4} |-> <<i, 7>>] /\\ [k EXCEPT ![4] = <<4, 8>>] # [k EXCEPT ![4][2] = 9] \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k \n" + + "ASSUME k = [i \\in {3,4} |-> <<i, 7>>] /\\ [k EXCEPT ![4] = <<4, 8>>] # [k EXCEPT ![4][2] = 9] \n" + + "================================="; final String expected = "MACHINE Testing\n" + "CONSTANTS k\n" - + "PROPERTIES " - + "k : INTEGER +-> (INTEGER +-> INTEGER) & (k = %(i).(i : {3, 4} | [i,7]) & k <+ {(4,[4,8])} /= k <+ {(4,k(4) <+ {(2,9)})}) \n" - + "END"; + + "PROPERTIES " + + "k : INTEGER +-> (INTEGER +-> INTEGER) & (k = %(i).(i : {3, 4} | [i,7]) & k <+ {(4,[4,8])} /= k <+ {(4,k(4) <+ {(2,9)})}) \n" + + "END"; compare(expected, module); } - + @Test public void testFunctionExceptNested() throws Exception { ToolIO.reset(); final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k \n" - + "ASSUME k = [i \\in {3,4} |-> <<i, 7>>] /\\ k # [k EXCEPT ![4][2] = 8] \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k \n" + + "ASSUME k = [i \\in {3,4} |-> <<i, 7>>] /\\ k # [k EXCEPT ![4][2] = 8] \n" + + "================================="; final String expected = "MACHINE Testing\n" + "CONSTANTS k\n" - + "PROPERTIES " - + "k : INTEGER +-> (INTEGER +-> INTEGER) & (k = %(i).(i : {3, 4} | [i,7]) & k /= k <+ {(4,k(4) <+ {(2,8)})}) \n" - + "END"; + + "PROPERTIES " + + "k : INTEGER +-> (INTEGER +-> INTEGER) & (k = %(i).(i : {3, 4} | [i,7]) & k /= k <+ {(4,k(4) <+ {(2,8)})}) \n" + + "END"; compare(expected, module); } - + @Test public void testFunctionExceptNested2() throws Exception { ToolIO.reset(); final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k \n" - + "ASSUME k = [i \\in {3,4} |-> << <<8>> >>] /\\ k # [k EXCEPT ![4][1][1] = 7] \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k \n" + + "ASSUME k = [i \\in {3,4} |-> << <<8>> >>] /\\ k # [k EXCEPT ![4][1][1] = 7] \n" + + "================================="; final String expected = "MACHINE Testing\n" + "CONSTANTS k\n" - + "PROPERTIES " - + "k : INTEGER +-> (INTEGER +-> (INTEGER +-> INTEGER)) & (k = %(i).(i : {3, 4} | [[8]]) & k /= k <+ {(4,k(4) <+ {(1,(k(4))(1) <+ {(1,7)})})}) \n" - + "END"; + + "PROPERTIES " + + "k : INTEGER +-> (INTEGER +-> (INTEGER +-> INTEGER)) & (k = %(i).(i : {3, 4} | [[8]]) & k /= k <+ {(4,k(4) <+ {(1,(k(4))(1) <+ {(1,7)})})}) \n" + + "END"; compare(expected, module); } } diff --git a/src/test/java/de/tla2b/prettyprintb/ExtensibleRecordTest.java b/src/test/java/de/tla2b/prettyprintb/ExtensibleRecordTest.java index 8f9b37bbfb562eff92907337eae5c6036fb6cb4e..021710bca18515c22b717edf199767dc56861cd2 100644 --- a/src/test/java/de/tla2b/prettyprintb/ExtensibleRecordTest.java +++ b/src/test/java/de/tla2b/prettyprintb/ExtensibleRecordTest.java @@ -1,85 +1,85 @@ package de.tla2b.prettyprintb; -import static de.tla2b.util.TestUtil.compare; - import org.junit.Test; +import static de.tla2b.util.TestUtil.compare; + public class ExtensibleRecordTest { @Test public void testRecord1() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME [a |-> 1] = [b |-> TRUE, a |-> 4] \n" - + "================================="; + + "ASSUME [a |-> 1] = [b |-> TRUE, a |-> 4] \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES rec(b:{}, a:{(TRUE,1)}) = rec(b:{(TRUE,TRUE)}, a:{(TRUE,4)}) \n" - + "END"; + + "PROPERTIES rec(b:{}, a:{(TRUE,1)}) = rec(b:{(TRUE,TRUE)}, a:{(TRUE,4)}) \n" + + "END"; compare(expected, module); } @Test public void testRecord2() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME [a |-> 1] = [b |-> TRUE] \n" - + "================================="; + + "ASSUME [a |-> 1] = [b |-> TRUE] \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES rec(b:{}, a:{(TRUE,1)}) = rec(b:{(TRUE,TRUE)}, a:{}) \n" - + "END"; + + "PROPERTIES rec(b:{}, a:{(TRUE,1)}) = rec(b:{(TRUE,TRUE)}, a:{}) \n" + + "END"; compare(expected, module); } @Test public void testSelect() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = [a |-> 1] /\\ k # [b |-> 1] /\\ k.a = 1 \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = [a |-> 1] /\\ k # [b |-> 1] /\\ k.a = 1 \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "CONSTANTS k \n" - + "PROPERTIES k : struct(b:POW(BOOL * INTEGER), a:POW(BOOL * INTEGER)) & ((k = rec(b:{}, a:{(TRUE,1)}) & k /= rec(b:{(TRUE,1)}, a:{})) & (k'a)(TRUE) = 1) \n" - + "END"; + + "CONSTANTS k \n" + + "PROPERTIES k : struct(b:POW(BOOL * INTEGER), a:POW(BOOL * INTEGER)) & ((k = rec(b:{}, a:{(TRUE,1)}) & k /= rec(b:{(TRUE,1)}, a:{})) & (k'a)(TRUE) = 1) \n" + + "END"; compare(expected, module); } @Test public void testSelect2() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME [a |-> 1].b = TRUE \n" - + "================================="; + + "ASSUME [a |-> 1].b = TRUE \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES (rec(a:{(TRUE,1)}, b:{})'b)(TRUE) = TRUE \n" - + "END"; + + "PROPERTIES (rec(a:{(TRUE,1)}, b:{})'b)(TRUE) = TRUE \n" + + "END"; compare(expected, module); } - + @Test public void testStructExpansion() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME [a: {2}] = [a : {1}, b : BOOLEAN] \n" - + "================================="; + + "ASSUME [a: {2}] = [a : {1}, b : BOOLEAN] \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES struct(a:POW(BOOL * {2}), b:POW(BOOL * BOOL)) = struct(a:POW(BOOL * {1}), b:POW(BOOL * BOOL)) \n" - + "END"; + + "PROPERTIES struct(a:POW(BOOL * {2}), b:POW(BOOL * BOOL)) = struct(a:POW(BOOL * {1}), b:POW(BOOL * BOOL)) \n" + + "END"; compare(expected, module); } - + @Test public void testRecExpansion2() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = [a |-> 1] /\\ TRUE = k.b \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = [a |-> 1] /\\ TRUE = k.b \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "CONSTANTS k \n" - + "PROPERTIES k : struct(a:POW(BOOL * INTEGER), b:POW(BOOL * BOOL)) & (k = rec(a:{(TRUE,1)}, b:{}) & TRUE = (k'b)(TRUE)) \n" - + "END"; + + "CONSTANTS k \n" + + "PROPERTIES k : struct(a:POW(BOOL * INTEGER), b:POW(BOOL * BOOL)) & (k = rec(a:{(TRUE,1)}, b:{}) & TRUE = (k'b)(TRUE)) \n" + + "END"; compare(expected, module); } - + } diff --git a/src/test/java/de/tla2b/prettyprintb/ExternelFunctionsTest.java b/src/test/java/de/tla2b/prettyprintb/ExternelFunctionsTest.java index c1efbd9e5c546ec9b8f2949bc5227f6b94a7c9da..43cdcc4f08557ca4f4a45161b0c0e145a9bba6ff 100644 --- a/src/test/java/de/tla2b/prettyprintb/ExternelFunctionsTest.java +++ b/src/test/java/de/tla2b/prettyprintb/ExternelFunctionsTest.java @@ -1,25 +1,25 @@ package de.tla2b.prettyprintb; -import static de.tla2b.util.TestUtil.compare; - import org.junit.Test; +import static de.tla2b.util.TestUtil.compare; + public class ExternelFunctionsTest { - + @Test public void testAssert() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS TLC \n" - + "ASSUME Assert(TRUE, \"abc\") \n" - + "================================="; + + "EXTENDS TLC \n" + + "ASSUME Assert(TRUE, \"abc\") \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "DEFINITIONS " - + "ASSERT_TRUE(P, Msg) == 1 = 1; \n" - + "EXTERNAL_PREDICATE_ASSERT_TRUE == BOOL * STRING; \n" - + "PROPERTIES ASSERT_TRUE(TRUE, \"abc\") \n" - + "END"; + + "DEFINITIONS " + + "ASSERT_TRUE(P, Msg) == 1 = 1; \n" + + "EXTERNAL_PREDICATE_ASSERT_TRUE == BOOL * STRING; \n" + + "PROPERTIES ASSERT_TRUE(TRUE, \"abc\") \n" + + "END"; compare(expected, module); } } diff --git a/src/test/java/de/tla2b/prettyprintb/FunctionTest.java b/src/test/java/de/tla2b/prettyprintb/FunctionTest.java index 0a24a545881b5814218ab442eb807a7fdb33be56..69a65cbad620ee42dc64217a3976cc298a2c2951 100644 --- a/src/test/java/de/tla2b/prettyprintb/FunctionTest.java +++ b/src/test/java/de/tla2b/prettyprintb/FunctionTest.java @@ -1,96 +1,96 @@ package de.tla2b.prettyprintb; -import static de.tla2b.util.TestUtil.compare; - import org.junit.Ignore; import org.junit.Test; +import static de.tla2b.util.TestUtil.compare; + public class FunctionTest { @Test public void testFunctionConstructor() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k\n" - + "ASSUME k = [x \\in {1} |-> TRUE = TRUE] \n" - + "================================="; + + "CONSTANTS k\n" + + "ASSUME k = [x \\in {1} |-> TRUE = TRUE] \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "CONSTANTS k\n" - + "PROPERTIES k : INTEGER +-> BOOL & k = %x.(x : {1}| bool(TRUE = TRUE)) \n" - + "END"; + + "CONSTANTS k\n" + + "PROPERTIES k : INTEGER +-> BOOL & k = %x.(x : {1}| bool(TRUE = TRUE)) \n" + + "END"; compare(expected, module); } @Test public void testFunctionConstructor2() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k\n" - + "ASSUME k = [x,y \\in {1,2} |-> 1] \n" - + "================================="; + + "CONSTANTS k\n" + + "ASSUME k = [x,y \\in {1,2} |-> 1] \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "CONSTANTS k\n" - + "PROPERTIES k : INTEGER * INTEGER +-> INTEGER & k = %x,y.(x : {1,2} & y : {1,2}| 1) \n" - + "END"; + + "CONSTANTS k\n" + + "PROPERTIES k : INTEGER * INTEGER +-> INTEGER & k = %x,y.(x : {1,2} & y : {1,2}| 1) \n" + + "END"; compare(expected, module); } @Test public void testFunctionConstructor3() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k\n" - + "ASSUME k = [x \\in {1}, y \\in BOOLEAN |-> 1] \n" - + "================================="; + + "CONSTANTS k\n" + + "ASSUME k = [x \\in {1}, y \\in BOOLEAN |-> 1] \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "CONSTANTS k\n" - + "PROPERTIES k : INTEGER * BOOL +-> INTEGER & k = %x,y.(x : {1} & y : BOOL| 1) \n" - + "END"; + + "CONSTANTS k\n" + + "PROPERTIES k : INTEGER * BOOL +-> INTEGER & k = %x,y.(x : {1} & y : BOOL| 1) \n" + + "END"; compare(expected, module); } - + @Test public void testFunctionConstructor4() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k\n" - + "ASSUME k = [<<x,y>> \\in {1} \\X {2} |-> x + y] \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k\n" + + "ASSUME k = [<<x,y>> \\in {1} \\X {2} |-> x + y] \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "CONSTANTS k\n" - + "PROPERTIES k : INTEGER * INTEGER +-> INTEGER & k = %(x, y).((x,y) : {1} * {2} | x + y) \n" - + "END"; + + "CONSTANTS k\n" + + "PROPERTIES k : INTEGER * INTEGER +-> INTEGER & k = %(x, y).((x,y) : {1} * {2} | x + y) \n" + + "END"; compare(expected, module); } - + @Test public void testFunctionConstructorTuple() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k\n" - + "ASSUME k = [a \\in {1}, <<b,c>> \\in {2} \\X {3} |-> a + b + c] \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k\n" + + "ASSUME k = [a \\in {1}, <<b,c>> \\in {2} \\X {3} |-> a + b + c] \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "CONSTANTS k\n" - + "PROPERTIES k : INTEGER * (INTEGER * INTEGER) +-> INTEGER & k = %(a, bc).(a : {1} & bc : {2} * {3} | (a + prj1(INTEGER, INTEGER)(bc)) + prj2(INTEGER, INTEGER)(bc)) \n" - + "END"; + + "CONSTANTS k\n" + + "PROPERTIES k : INTEGER * (INTEGER * INTEGER) +-> INTEGER & k = %(a, bc).(a : {1} & bc : {2} * {3} | (a + prj1(INTEGER, INTEGER)(bc)) + prj2(INTEGER, INTEGER)(bc)) \n" + + "END"; compare(expected, module); } - + @Test public void testFunctionConstructorSequence() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k\n" - + "ASSUME k = [<<a>> \\in {<<1>>}, <<b,c>> \\in {2} \\X {3} |-> a + b + c] \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k\n" + + "ASSUME k = [<<a>> \\in {<<1>>}, <<b,c>> \\in {2} \\X {3} |-> a + b + c] \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "CONSTANTS k\n" - + "PROPERTIES k : (INTEGER +-> INTEGER) * (INTEGER * INTEGER) +-> INTEGER & k = %(a, bc).(a : {[1]} & bc : {2} * {3} | (a(1) + prj1(INTEGER, INTEGER)(bc)) + prj2(INTEGER, INTEGER)(bc)) \n" - + "END"; + + "CONSTANTS k\n" + + "PROPERTIES k : (INTEGER +-> INTEGER) * (INTEGER * INTEGER) +-> INTEGER & k = %(a, bc).(a : {[1]} & bc : {2} * {3} | (a(1) + prj1(INTEGER, INTEGER)(bc)) + prj2(INTEGER, INTEGER)(bc)) \n" + + "END"; compare(expected, module); } @@ -102,19 +102,19 @@ public class FunctionTest { @Test public void testRecursiveFunction() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k, k2, k3 \n" - + "fact[n \\in {1,2}] == IF n = 0 THEN 1 ELSE n+ fact[n-1] \n" - + "ASSUME k = fact /\\ fact[k2] = k3 \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k, k2, k3 \n" + + "fact[n \\in {1,2}] == IF n = 0 THEN 1 ELSE n+ fact[n-1] \n" + + "ASSUME k = fact /\\ fact[k2] = k3 \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "CONSTANTS k,k2,k3\n" - + "PROPERTIES k : POW(INTEGER*INTEGER) & k2 : INTEGER & k3 : INTEGER \n" - + " & k = fact & fact(k2) = k3 \n" - + "DEFINITIONS IF_THEN_ELSE(P, a, b) == (%t_.(t_=TRUE & P = TRUE | a )\\/%t_.(t_=TRUE & not(P= TRUE) | b ))(TRUE); \n" - + "fact == %n.(n : {1, 2}| IF_THEN_ELSE(bool(n = 0), 1, n + fact(n - 1))) \n" - + "END"; + + "CONSTANTS k,k2,k3\n" + + "PROPERTIES k : POW(INTEGER*INTEGER) & k2 : INTEGER & k3 : INTEGER \n" + + " & k = fact & fact(k2) = k3 \n" + + "DEFINITIONS IF_THEN_ELSE(P, a, b) == (%t_.(t_=TRUE & P = TRUE | a )\\/%t_.(t_=TRUE & not(P= TRUE) | b ))(TRUE); \n" + + "fact == %n.(n : {1, 2}| IF_THEN_ELSE(bool(n = 0), 1, n + fact(n - 1))) \n" + + "END"; compare(expected, module); } @@ -124,48 +124,48 @@ public class FunctionTest { @Test public void testFunctionCall() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "ASSUME [x,y \\in {1,2} |-> x+y] [1,2] = 3 \n" - + "================================="; + + "EXTENDS Naturals \n" + + "ASSUME [x,y \\in {1,2} |-> x+y] [1,2] = 3 \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES %x,y.(x : {1,2} & y : {1,2}| x + y) (1, 2) = 3 \n" - + "END"; + + "PROPERTIES %x,y.(x : {1,2} & y : {1,2}| x + y) (1, 2) = 3 \n" + + "END"; compare(expected, module); } @Test public void testFunctionCall2() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME[x \\in {1} |-> TRUE][1] \n" - + "================================="; + + "ASSUME[x \\in {1} |-> TRUE][1] \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES %x.(x : {1}| TRUE)(1) = TRUE\n" + "END"; + + "PROPERTIES %x.(x : {1}| TRUE)(1) = TRUE\n" + "END"; compare(expected, module); } @Test public void testDomain() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME DOMAIN[x \\in {1} |-> x] = {1} \n" - + "================================="; + + "ASSUME DOMAIN[x \\in {1} |-> x] = {1} \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES dom(%x.(x : {1}| x)) = {1}" + "END"; + + "PROPERTIES dom(%x.(x : {1}| x)) = {1}" + "END"; compare(expected, module); } @Test public void testSetOfFunction() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = [BOOLEAN -> {1}] \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = [BOOLEAN -> {1}] \n" + + "================================="; final String expected = "MACHINE Testing\n" + "CONSTANTS k\n" - + "PROPERTIES k : POW(BOOL +-> INTEGER) & k = BOOL --> {1}" - + "END"; + + "PROPERTIES k : POW(BOOL +-> INTEGER) & k = BOOL --> {1}" + + "END"; compare(expected, module); } diff --git a/src/test/java/de/tla2b/prettyprintb/LogicOperatorsTest.java b/src/test/java/de/tla2b/prettyprintb/LogicOperatorsTest.java index cc0696be07952fad3c4dbd20ee0f610a2d8706d1..8899544f22bb9e2eb152e0a286eed8abe7042466 100644 --- a/src/test/java/de/tla2b/prettyprintb/LogicOperatorsTest.java +++ b/src/test/java/de/tla2b/prettyprintb/LogicOperatorsTest.java @@ -9,33 +9,33 @@ public class LogicOperatorsTest { @Test public void testEquality() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k\n" - + "ASSUME k = (2 # 1)\n" - + "================================="; + + "CONSTANTS k\n" + + "ASSUME k = (2 # 1)\n" + + "================================="; final String expected = "MACHINE Testing\n" + "CONSTANTS k\n" - + "PROPERTIES k : BOOL & k = bool(2 /= 1)\n" + "END"; + + "PROPERTIES k : BOOL & k = bool(2 /= 1)\n" + "END"; compare(expected, module); } @Test public void testEquality2() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k\n" - + "ASSUME k = TRUE\n" - + "================================="; + + "CONSTANTS k\n" + + "ASSUME k = TRUE\n" + + "================================="; final String expected = "MACHINE Testing\n" + "CONSTANTS k\n" - + "PROPERTIES k : BOOL & k = TRUE \n" + "END"; + + "PROPERTIES k : BOOL & k = TRUE \n" + "END"; compare(expected, module); } @Test public void testEquality3() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME TRUE\n" + "================================="; + + "ASSUME TRUE\n" + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES TRUE = TRUE \n" + "END"; + + "PROPERTIES TRUE = TRUE \n" + "END"; compare(expected, module); } @@ -45,25 +45,25 @@ public class LogicOperatorsTest { @Test public void testAnd() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k\n" - + "ASSUME k = (FALSE \\land TRUE) \n" - + "================================="; + + "CONSTANTS k\n" + + "ASSUME k = (FALSE \\land TRUE) \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "CONSTANTS k\n" - + "PROPERTIES k : BOOL & k = bool(FALSE = TRUE & TRUE = TRUE) \n" - + "END"; + + "CONSTANTS k\n" + + "PROPERTIES k : BOOL & k = bool(FALSE = TRUE & TRUE = TRUE) \n" + + "END"; compare(expected, module); } @Test public void testAnd2() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME TRUE /\\ (TRUE \\/ FALSE) \n" - + "================================="; + + "ASSUME TRUE /\\ (TRUE \\/ FALSE) \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES TRUE = TRUE & (TRUE = TRUE or FALSE = TRUE) \n" - + "END"; + + "PROPERTIES TRUE = TRUE & (TRUE = TRUE or FALSE = TRUE) \n" + + "END"; compare(expected, module); } @@ -73,10 +73,10 @@ public class LogicOperatorsTest { @Test public void testNegation() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME \\lnot TRUE \n" + "================================="; + + "ASSUME \\lnot TRUE \n" + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES not(TRUE = TRUE) \n" + "END"; + + "PROPERTIES not(TRUE = TRUE) \n" + "END"; compare(expected, module); } @@ -87,24 +87,24 @@ public class LogicOperatorsTest { @Test public void testImplication() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME TRUE /\\ (TRUE => FALSE) \n" - + "================================="; + + "ASSUME TRUE /\\ (TRUE => FALSE) \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES TRUE = TRUE & (TRUE = TRUE => FALSE = TRUE) \n" - + "END"; + + "PROPERTIES TRUE = TRUE & (TRUE = TRUE => FALSE = TRUE) \n" + + "END"; compare(expected, module); } @Test public void testEquivalence() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME TRUE /\\ (TRUE <=> FALSE) \n" - + "================================="; + + "ASSUME TRUE /\\ (TRUE <=> FALSE) \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES TRUE = TRUE & (TRUE = TRUE <=> FALSE = TRUE) \n" - + "END"; + + "PROPERTIES TRUE = TRUE & (TRUE = TRUE <=> FALSE = TRUE) \n" + + "END"; compare(expected, module); } @@ -114,70 +114,70 @@ public class LogicOperatorsTest { @Test public void testUniversalQuantifier() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME \\A x,y \\in {1,2} : x = 0 \n" - + "================================="; + + "ASSUME \\A x,y \\in {1,2} : x = 0 \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES !x,y.(x : {1, 2} & y : {1, 2} => x = 0) \n" - + "END"; + + "PROPERTIES !x,y.(x : {1, 2} & y : {1, 2} => x = 0) \n" + + "END"; compare(expected, module); } @Test public void testExistentialQuantifier() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME \\E x,y \\in {1,2} : x = 0 \n" - + "================================="; + + "ASSUME \\E x,y \\in {1,2} : x = 0 \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES #x,y.(x : {1, 2} & y : {1, 2} & x = 0) \n" - + "END"; + + "PROPERTIES #x,y.(x : {1, 2} & y : {1, 2} & x = 0) \n" + + "END"; compare(expected, module); } - + @Test public void testExistentialQuantifierSequence() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME \\E <<x>> \\in {<<1>>} : x = 1 \n" - + "================================="; + + "ASSUME \\E <<x>> \\in {<<1>>} : x = 1 \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES #x.([x] : {[1]} & x = 1) \n" - + "END"; + + "PROPERTIES #x.([x] : {[1]} & x = 1) \n" + + "END"; compare(expected, module); } - + @Test public void testExistentialQuantifierTuple() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME \\E <<a,b>> \\in {<<1,TRUE>>} : a = 1 /\\ b = TRUE \n" - + "================================="; + + "ASSUME \\E <<a,b>> \\in {<<1,TRUE>>} : a = 1 /\\ b = TRUE \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES #(a,b).((a,b) : {(1,TRUE)} & (a = 1 & b = TRUE)) \n" - + "END"; + + "PROPERTIES #(a,b).((a,b) : {(1,TRUE)} & (a = 1 & b = TRUE)) \n" + + "END"; compare(expected, module); } - + @Test public void testExistentialQuantifierAll() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME \\E <<a,b>> \\in {<<1,TRUE>>}, <<c>> \\in {<<3>>}, d,e \\in {TRUE}: a= 1 /\\ b = TRUE /\\ c = 3 /\\ d = TRUE /\\ e \n" - + "================================="; + + "ASSUME \\E <<a,b>> \\in {<<1,TRUE>>}, <<c>> \\in {<<3>>}, d,e \\in {TRUE}: a= 1 /\\ b = TRUE /\\ c = 3 /\\ d = TRUE /\\ e \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES #(a,b,c,d,e).(((((a,b) : {(1,TRUE)} & [c] : {[3]}) & d : {TRUE}) & e : {TRUE}) & ((((a = 1 & b = TRUE) & c = 3) & d = TRUE) & e = TRUE)) \n" - + "END"; + + "PROPERTIES #(a,b,c,d,e).(((((a,b) : {(1,TRUE)} & [c] : {[3]}) & d : {TRUE}) & e : {TRUE}) & ((((a = 1 & b = TRUE) & c = 3) & d = TRUE) & e = TRUE)) \n" + + "END"; compare(expected, module); } @Test public void testQuantifier() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals, Sequences \n" - + "CONSTANTS S \n" - + "ASSUME S = {1,2,3} /\\ \\E u \\in Seq(S) : \\A s \\in S : \\E n \\in 1..Len(u) : u[n] = s \n" - + "================================="; + + "EXTENDS Naturals, Sequences \n" + + "CONSTANTS S \n" + + "ASSUME S = {1,2,3} /\\ \\E u \\in Seq(S) : \\A s \\in S : \\E n \\in 1..Len(u) : u[n] = s \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "CONSTANTS S\n" - + "PROPERTIES S : POW(INTEGER) & (S = {1, 2, 3} & #u.(u : seq(S) & !s.(s : S => #n.(n : 1 .. size(u) & u(n) = s)))) \n" - + "END"; + + "CONSTANTS S\n" + + "PROPERTIES S : POW(INTEGER) & (S = {1, 2, 3} & #u.(u : seq(S) & !s.(s : S => #n.(n : 1 .. size(u) & u(n) = s)))) \n" + + "END"; compare(expected, module); } diff --git a/src/test/java/de/tla2b/prettyprintb/MacroTest.java b/src/test/java/de/tla2b/prettyprintb/MacroTest.java index 3eabe27bdbdb49308fef7442fb0ecc05e63975dd..f2e48850eaad5ffaa80744f5249269e8de4c55c6 100644 --- a/src/test/java/de/tla2b/prettyprintb/MacroTest.java +++ b/src/test/java/de/tla2b/prettyprintb/MacroTest.java @@ -1,104 +1,104 @@ package de.tla2b.prettyprintb; -import static de.tla2b.util.TestUtil.compare; - import org.junit.Test; +import static de.tla2b.util.TestUtil.compare; + public class MacroTest { - + @Test public void testRenaming1() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "def(y) == \\A x \\in {1}: y = 3 \n" - + "ASSUME \\E x \\in {3}: def(x) \n" - + "================================="; + + "def(y) == \\A x \\in {1}: y = 3 \n" + + "ASSUME \\E x \\in {3}: def(x) \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "DEFINITIONS def(y) == !(x_1).(x_1 : {1} => y = 3); " - + "PROPERTIES #(x).(x : {3} & def(x)) \n" + "END"; + + "DEFINITIONS def(y) == !(x_1).(x_1 : {1} => y = 3); " + + "PROPERTIES #(x).(x : {3} & def(x)) \n" + "END"; compare(expected, module); } - + @Test public void testRenaming2() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "def(y) == \\A x \\in {1}: y = 3 \n" - + "ASSUME \\E x \\in {2}: def(x+1) \n" - + "================================="; + + "EXTENDS Naturals \n" + + "def(y) == \\A x \\in {1}: y = 3 \n" + + "ASSUME \\E x \\in {2}: def(x+1) \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "DEFINITIONS def(y) == !(x_1).(x_1 : {1} => y = 3); " - + "PROPERTIES #(x).(x : {2} & def(x+1)) \n" + "END"; + + "DEFINITIONS def(y) == !(x_1).(x_1 : {1} => y = 3); " + + "PROPERTIES #(x).(x : {2} & def(x+1)) \n" + "END"; compare(expected, module); } - + @Test public void testRenaming3() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "foo(a) == a \n" - + "def(y) == \\A x \\in {1}: y = 3 \n" - + "ASSUME \\E x \\in {2}: foo(def(x)) \n" - + "================================="; + + "EXTENDS Naturals \n" + + "foo(a) == a \n" + + "def(y) == \\A x \\in {1}: y = 3 \n" + + "ASSUME \\E x \\in {2}: foo(def(x)) \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "DEFINITIONS foo(a) == a; \n" - + "def(y) == !(x_1).(x_1 : {1} => y = 3) \n" - + "PROPERTIES #(x).(x : {2} & foo(bool(def(x))) = TRUE) \n" + "END"; + + "DEFINITIONS foo(a) == a; \n" + + "def(y) == !(x_1).(x_1 : {1} => y = 3) \n" + + "PROPERTIES #(x).(x : {2} & foo(bool(def(x))) = TRUE) \n" + "END"; compare(expected, module); } - + @Test public void testRenaming4() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "def(y) == \\A x \\in {1}: y = 3 \n" - + "foo == \\E x \\in {2}: def(x) \n" - + "ASSUME foo \n" - + "================================="; + + "EXTENDS Naturals \n" + + "def(y) == \\A x \\in {1}: y = 3 \n" + + "foo == \\E x \\in {2}: def(x) \n" + + "ASSUME foo \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "DEFINITIONS \n" - + "def(y) == !(x_1).(x_1 : {1} => y = 3); \n" - + "foo == #(x).(x : {2} & def(x)); \n" - + "PROPERTIES foo \n" + "END"; + + "DEFINITIONS \n" + + "def(y) == !(x_1).(x_1 : {1} => y = 3); \n" + + "foo == #(x).(x : {2} & def(x)); \n" + + "PROPERTIES foo \n" + "END"; compare(expected, module); } - + @Test public void testRenaming5() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "def(y) == \\A x \\in {1}: y = 3 \n" - + "foo(x) == def(x) \n" - + "ASSUME \\E x \\in {2}: foo(x) \n" - + "================================="; + + "EXTENDS Naturals \n" + + "def(y) == \\A x \\in {1}: y = 3 \n" + + "foo(x) == def(x) \n" + + "ASSUME \\E x \\in {2}: foo(x) \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "DEFINITIONS \n" - + "def(y) == !(x_1).(x_1 : {1} => y = 3); \n" - + "foo(x) == def(x); \n" - + "PROPERTIES #(x).(x : {2} & foo(x)) \n" + "END"; + + "DEFINITIONS \n" + + "def(y) == !(x_1).(x_1 : {1} => y = 3); \n" + + "foo(x) == def(x); \n" + + "PROPERTIES #(x).(x : {2} & foo(x)) \n" + "END"; compare(expected, module); } - + @Test public void testRenamingGlobal() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "def(y) == \\A x \\in {1}: y = 3 \n" - + "CONSTANTS x\n" - + "ASSUME x = 3 /\\ def(x) \n" - + "================================="; + + "EXTENDS Naturals \n" + + "def(y) == \\A x \\in {1}: y = 3 \n" + + "CONSTANTS x\n" + + "ASSUME x = 3 /\\ def(x) \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "DEFINITIONS \n" - + "def(y) == !(x_1).(x_1 : {1} => y = 3); \n" - + "CONSTANTS x\n" - + "PROPERTIES x : INTEGER & (x = 3 & def(x)) \n" + "END"; + + "DEFINITIONS \n" + + "def(y) == !(x_1).(x_1 : {1} => y = 3); \n" + + "CONSTANTS x\n" + + "PROPERTIES x : INTEGER & (x = 3 & def(x)) \n" + "END"; compare(expected, module); } - + } diff --git a/src/test/java/de/tla2b/prettyprintb/MiscellaneousConstructsTest.java b/src/test/java/de/tla2b/prettyprintb/MiscellaneousConstructsTest.java index 2b5b32d28220e63b7494ff31ee446341ded71941..abc383ca10d8ccde1d01ec44e5a7c072a7d6919f 100644 --- a/src/test/java/de/tla2b/prettyprintb/MiscellaneousConstructsTest.java +++ b/src/test/java/de/tla2b/prettyprintb/MiscellaneousConstructsTest.java @@ -1,184 +1,183 @@ package de.tla2b.prettyprintb; -import static de.tla2b.util.TestUtil.compare; - import org.junit.Test; +import static de.tla2b.util.TestUtil.compare; + public class MiscellaneousConstructsTest { @Test public void testSimpleLet() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "ASSUME LET foo(a) == a + a IN 4 = foo(2)\n" - + "================================="; + + "EXTENDS Naturals \n" + + "ASSUME LET foo(a) == a + a IN 4 = foo(2)\n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES 4 = 2 + 2 \n" + "END"; + + "PROPERTIES 4 = 2 + 2 \n" + "END"; compare(expected, module); } - + @Test public void testLet2Definitions() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "ASSUME LET foo(a) == a + a bar(b) == b * b IN bar(2) = foo(2)\n" - + "================================="; + + "EXTENDS Naturals \n" + + "ASSUME LET foo(a) == a + a bar(b) == b * b IN bar(2) = foo(2)\n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES 2 * 2 = 2 + 2 \n" + "END"; + + "PROPERTIES 2 * 2 = 2 + 2 \n" + "END"; compare(expected, module); } - + @Test public void testNestedLet() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "ASSUME LET foo(a) == LET bar(b) == b * b IN bar(a+1) IN 9 = foo(2)\n" - + "================================="; + + "EXTENDS Naturals \n" + + "ASSUME LET foo(a) == LET bar(b) == b * b IN bar(a+1) IN 9 = foo(2)\n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES 9 = (2 + 1) * (2 + 1) \n" + "END"; + + "PROPERTIES 9 = (2 + 1) * (2 + 1) \n" + "END"; compare(expected, module); } - + @Test public void testSimpleCase() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "ASSUME 2 = CASE 1 = 1 -> 2 \n" - + "================================="; + + "EXTENDS Naturals \n" + + "ASSUME 2 = CASE 1 = 1 -> 2 \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "DEFINITIONS CHOOSE(X) == \"a member of X\"; EXTERNAL_FUNCTION_CHOOSE(T) == POW(T) --> T;" - + "PROPERTIES 2 = CHOOSE({t_ | 1=1 & t_ = 2}) \n" + "END"; + + "DEFINITIONS CHOOSE(X) == \"a member of X\"; EXTERNAL_FUNCTION_CHOOSE(T) == POW(T) --> T;" + + "PROPERTIES 2 = CHOOSE({t_ | 1=1 & t_ = 2}) \n" + "END"; compare(expected, module); } - + @Test public void testCase2Conditions() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "ASSUME 2 = CASE 1 = 1 -> 2 [] 1 = 2 -> 3\n" - + "================================="; + + "EXTENDS Naturals \n" + + "ASSUME 2 = CASE 1 = 1 -> 2 [] 1 = 2 -> 3\n" + + "================================="; final String expected = "MACHINE Testing\n" - + "DEFINITIONS CHOOSE(X) == \"a member of X\"; EXTERNAL_FUNCTION_CHOOSE(T) == POW(T) --> T;" - + "PROPERTIES 2 = CHOOSE({t_ | (1 = 1 & t_ = 2) or (1 = 2 & t_ = 3)}) \n" + "END"; + + "DEFINITIONS CHOOSE(X) == \"a member of X\"; EXTERNAL_FUNCTION_CHOOSE(T) == POW(T) --> T;" + + "PROPERTIES 2 = CHOOSE({t_ | (1 = 1 & t_ = 2) or (1 = 2 & t_ = 3)}) \n" + "END"; compare(expected, module); } - + @Test public void testCaseOtherCondition() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "ASSUME 4 = CASE 1 = 2 -> 2 [] 1 = 3 -> 3 [] OTHER -> 4\n" - + "================================="; + + "EXTENDS Naturals \n" + + "ASSUME 4 = CASE 1 = 2 -> 2 [] 1 = 3 -> 3 [] OTHER -> 4\n" + + "================================="; final String expected = "MACHINE Testing\n" - + "DEFINITIONS CHOOSE(X) == \"a member of X\"; EXTERNAL_FUNCTION_CHOOSE(T) == POW(T) --> T;" - + "PROPERTIES 4 = CHOOSE({t_ | ((1 = 2 & t_ = 2) or (1 = 3 & t_ = 3)) or (not(1 = 2 or 1 = 3) & t_ = 4)}) \n" + "END"; + + "DEFINITIONS CHOOSE(X) == \"a member of X\"; EXTERNAL_FUNCTION_CHOOSE(T) == POW(T) --> T;" + + "PROPERTIES 4 = CHOOSE({t_ | ((1 = 2 & t_ = 2) or (1 = 3 & t_ = 3)) or (not(1 = 2 or 1 = 3) & t_ = 4)}) \n" + "END"; compare(expected, module); } - + @Test public void testCasePredicate() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "ASSUME CASE 1 = 2 -> TRUE [] TRUE -> 1=1\n" - + "================================="; + + "EXTENDS Naturals \n" + + "ASSUME CASE 1 = 2 -> TRUE [] TRUE -> 1=1\n" + + "================================="; final String expected = "MACHINE Testing\n" - + "DEFINITIONS CHOOSE(X) == \"a member of X\"; EXTERNAL_FUNCTION_CHOOSE(T) == POW(T) --> T;" - + "PROPERTIES CHOOSE({t_ | (1 = 2 & t_ = TRUE) or (TRUE = TRUE & t_ = bool(1 = 1))}) = TRUE \n" + "END"; + + "DEFINITIONS CHOOSE(X) == \"a member of X\"; EXTERNAL_FUNCTION_CHOOSE(T) == POW(T) --> T;" + + "PROPERTIES CHOOSE({t_ | (1 = 2 & t_ = TRUE) or (TRUE = TRUE & t_ = bool(1 = 1))}) = TRUE \n" + "END"; compare(expected, module); } - - + + @Test public void testUnboundedChoose() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME (CHOOSE x : x = 1) = 1\n" - + "================================="; + + "ASSUME (CHOOSE x : x = 1) = 1\n" + + "================================="; final String expected = "MACHINE Testing\n" - + "DEFINITIONS CHOOSE(X) == \"a member of X\"; EXTERNAL_FUNCTION_CHOOSE(T) == POW(T) --> T;" - + "PROPERTIES CHOOSE({x | x = 1}) = 1 \n" + "END"; + + "DEFINITIONS CHOOSE(X) == \"a member of X\"; EXTERNAL_FUNCTION_CHOOSE(T) == POW(T) --> T;" + + "PROPERTIES CHOOSE({x | x = 1}) = 1 \n" + "END"; compare(expected, module); } - + @Test public void testUnboundedChoosePredicate() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME (CHOOSE x : x = TRUE)\n" - + "================================="; + + "ASSUME (CHOOSE x : x = TRUE)\n" + + "================================="; final String expected = "MACHINE Testing\n" - + "DEFINITIONS CHOOSE(X) == \"a member of X\"; EXTERNAL_FUNCTION_CHOOSE(T) == POW(T) --> T;" - + "PROPERTIES CHOOSE({x | x = TRUE}) = TRUE \n" + "END"; + + "DEFINITIONS CHOOSE(X) == \"a member of X\"; EXTERNAL_FUNCTION_CHOOSE(T) == POW(T) --> T;" + + "PROPERTIES CHOOSE({x | x = TRUE}) = TRUE \n" + "END"; compare(expected, module); } - + @Test public void testBoundedChoose() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME (CHOOSE x \\in {1}: TRUE) = 1\n" - + "================================="; + + "ASSUME (CHOOSE x \\in {1}: TRUE) = 1\n" + + "================================="; final String expected = "MACHINE Testing\n" - + "DEFINITIONS CHOOSE(X) == \"a member of X\"; EXTERNAL_FUNCTION_CHOOSE(T) == POW(T) --> T;" - + "PROPERTIES CHOOSE({x | x : {1} & TRUE = TRUE}) = 1 \n" + "END"; + + "DEFINITIONS CHOOSE(X) == \"a member of X\"; EXTERNAL_FUNCTION_CHOOSE(T) == POW(T) --> T;" + + "PROPERTIES CHOOSE({x | x : {1} & TRUE = TRUE}) = 1 \n" + "END"; compare(expected, module); } - - + @Test public void testUnBoundedChooseTuple() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME <<1,TRUE>> = CHOOSE <<a,b>> \\in {<<1,TRUE>>}: TRUE \n" - + "================================="; + + "ASSUME <<1,TRUE>> = CHOOSE <<a,b>> \\in {<<1,TRUE>>}: TRUE \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "DEFINITIONS CHOOSE(X) == \"a member of X\"; EXTERNAL_FUNCTION_CHOOSE(T) == POW(T) --> T;" - + "PROPERTIES (1,TRUE) = CHOOSE({a,b | (a,b) : {(1,TRUE)} & TRUE = TRUE}) \n" + "END"; + + "DEFINITIONS CHOOSE(X) == \"a member of X\"; EXTERNAL_FUNCTION_CHOOSE(T) == POW(T) --> T;" + + "PROPERTIES (1,TRUE) = CHOOSE({a,b | (a,b) : {(1,TRUE)} & TRUE = TRUE}) \n" + "END"; compare(expected, module); } - - + + @Test public void testBoundedChoosePredicate() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME (CHOOSE x \\in {TRUE}: TRUE) = TRUE\n" - + "================================="; + + "ASSUME (CHOOSE x \\in {TRUE}: TRUE) = TRUE\n" + + "================================="; final String expected = "MACHINE Testing\n" - + "DEFINITIONS CHOOSE(X) == \"a member of X\"; EXTERNAL_FUNCTION_CHOOSE(T) == POW(T) --> T;" - + "PROPERTIES CHOOSE({x | x : {TRUE} & TRUE = TRUE}) = TRUE \n" + "END"; + + "DEFINITIONS CHOOSE(X) == \"a member of X\"; EXTERNAL_FUNCTION_CHOOSE(T) == POW(T) --> T;" + + "PROPERTIES CHOOSE({x | x : {TRUE} & TRUE = TRUE}) = TRUE \n" + "END"; compare(expected, module); } - + @Test public void testBoundedChooseTuple() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME <<1,TRUE>> = CHOOSE <<a,b>> \\in {<<1,TRUE>>}: TRUE \n" - + "================================="; + + "ASSUME <<1,TRUE>> = CHOOSE <<a,b>> \\in {<<1,TRUE>>}: TRUE \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "DEFINITIONS CHOOSE(X) == \"a member of X\"; EXTERNAL_FUNCTION_CHOOSE(T) == POW(T) --> T;" - + "PROPERTIES (1,TRUE) = CHOOSE({a,b | (a,b) : {(1,TRUE)} & TRUE = TRUE}) \n" + "END"; + + "DEFINITIONS CHOOSE(X) == \"a member of X\"; EXTERNAL_FUNCTION_CHOOSE(T) == POW(T) --> T;" + + "PROPERTIES (1,TRUE) = CHOOSE({a,b | (a,b) : {(1,TRUE)} & TRUE = TRUE}) \n" + "END"; compare(expected, module); } - + @Test public void testUnboundedChooseTuple() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME <<1,TRUE>> = CHOOSE <<a,b>> : <<a,b>> = <<1,TRUE>>\n" - + "================================="; + + "ASSUME <<1,TRUE>> = CHOOSE <<a,b>> : <<a,b>> = <<1,TRUE>>\n" + + "================================="; final String expected = "MACHINE Testing\n" - + "DEFINITIONS CHOOSE(X) == \"a member of X\"; EXTERNAL_FUNCTION_CHOOSE(T) == POW(T) --> T;" - + "PROPERTIES (1,TRUE) = CHOOSE({a,b | (a,b) = (1,TRUE)}) \n" + "END"; + + "DEFINITIONS CHOOSE(X) == \"a member of X\"; EXTERNAL_FUNCTION_CHOOSE(T) == POW(T) --> T;" + + "PROPERTIES (1,TRUE) = CHOOSE({a,b | (a,b) = (1,TRUE)}) \n" + "END"; compare(expected, module); } } diff --git a/src/test/java/de/tla2b/prettyprintb/OperationsTest.java b/src/test/java/de/tla2b/prettyprintb/OperationsTest.java index 1dd74348d260e781b2809da7d7265b338d5b296d..a5ffe60f30d10566abbd22c8047a60471a2b1ad1 100644 --- a/src/test/java/de/tla2b/prettyprintb/OperationsTest.java +++ b/src/test/java/de/tla2b/prettyprintb/OperationsTest.java @@ -1,16 +1,15 @@ package de.tla2b.prettyprintb; -import java.io.File; - import de.be4.classicalb.core.parser.BParser; import de.be4.classicalb.core.parser.node.Start; import de.be4.classicalb.core.parser.util.PrettyPrinter; import de.tla2b.util.TestUtil; import de.tla2bAst.Translator; - import org.junit.Ignore; import org.junit.Test; +import java.io.File; + import static org.junit.Assert.assertEquals; public class OperationsTest { @@ -22,7 +21,7 @@ public class OperationsTest { Translator t = new Translator("src/test/resources/prettyprint/OperationsTest/OperationsTest.tla"); Start start = t.translate(); String resultTree = TestUtil.getTreeAsString(start); - + PrettyPrinter pp = new PrettyPrinter(); // FIXME Is it intentional that we don't use SuffixIdentifierRenaming here? start.apply(pp); @@ -31,11 +30,11 @@ public class OperationsTest { final BParser parser = new BParser("testcase"); final Start ppStart = parser.parseMachine(pp.getPrettyPrint()); String ppTree = TestUtil.getTreeAsString(ppStart); - + // comparing result with pretty print assertEquals(resultTree, ppTree); - - + + // machine file File expectedMachine = new File("src/test/resources/prettyprint/OperationsTest/OperationsTest.mch"); diff --git a/src/test/java/de/tla2b/prettyprintb/PrecedenceTest.java b/src/test/java/de/tla2b/prettyprintb/PrecedenceTest.java index 2d087c5625cb78c837a6c81f24478f45465605aa..473bc19d3ebb9660f843e1c9aadcc6ea30e58f44 100644 --- a/src/test/java/de/tla2b/prettyprintb/PrecedenceTest.java +++ b/src/test/java/de/tla2b/prettyprintb/PrecedenceTest.java @@ -1,54 +1,54 @@ package de.tla2b.prettyprintb; -import static de.tla2b.util.TestUtil.compare; - import org.junit.Test; +import static de.tla2b.util.TestUtil.compare; + public class PrecedenceTest { @Test public void testPrecedence() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "ASSUME 1 + (2 * 3) = 7 \n" - + "================================="; + + "EXTENDS Naturals \n" + + "ASSUME 1 + (2 * 3) = 7 \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES 1 + 2 * 3 = 7 \n" + "END"; + + "PROPERTIES 1 + 2 * 3 = 7 \n" + "END"; compare(expected, module); } - + @Test public void testPrecedence2() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "ASSUME (1 + 2) * 3 = 9 \n" - + "================================="; + + "EXTENDS Naturals \n" + + "ASSUME (1 + 2) * 3 = 9 \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES (1 + 2) * 3 = 9 \n" + "END"; + + "PROPERTIES (1 + 2) * 3 = 9 \n" + "END"; compare(expected, module); } - + @Test public void testPrecedence3() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "ASSUME (1 + 2) + 3 = 6 \n" - + "================================="; + + "EXTENDS Naturals \n" + + "ASSUME (1 + 2) + 3 = 6 \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES 1 + 2 + 3 = 6 \n" + "END"; + + "PROPERTIES 1 + 2 + 3 = 6 \n" + "END"; compare(expected, module); } - + @Test public void testPrecedence4() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "ASSUME 1 + (2 + 3) = 6 \n" - + "================================="; + + "EXTENDS Naturals \n" + + "ASSUME 1 + (2 + 3) = 6 \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES 1 + (2 + 3) = 6 \n" + "END"; + + "PROPERTIES 1 + (2 + 3) = 6 \n" + "END"; compare(expected, module); } diff --git a/src/test/java/de/tla2b/prettyprintb/RecordTest.java b/src/test/java/de/tla2b/prettyprintb/RecordTest.java index acb40b2ac1acf0fe4643569629ac88a5c2250160..1f05a57763ae303474d79bab3476ed6b13506dd8 100644 --- a/src/test/java/de/tla2b/prettyprintb/RecordTest.java +++ b/src/test/java/de/tla2b/prettyprintb/RecordTest.java @@ -1,12 +1,11 @@ package de.tla2b.prettyprintb; -import static de.tla2b.util.TestUtil.compare; - import org.junit.Ignore; import org.junit.Test; - import util.ToolIO; +import static de.tla2b.util.TestUtil.compare; + public class RecordTest { static { ToolIO.setMode(ToolIO.TOOL); @@ -18,17 +17,17 @@ public class RecordTest { @Test public void testStruct() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = [a : {1}, b : BOOLEAN] \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = [a : {1}, b : BOOLEAN] \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "CONSTANTS k\n" - + "PROPERTIES k : POW(struct(a:INTEGER, b:BOOL)) & k = struct(a : {1}, b : BOOL) \n" - + "END"; + + "CONSTANTS k\n" + + "PROPERTIES k : POW(struct(a:INTEGER, b:BOOL)) & k = struct(a : {1}, b : BOOL) \n" + + "END"; compare(expected, module); } - + /* * Record: [L1 |-> e1, L2 |-> e2] @@ -36,28 +35,28 @@ public class RecordTest { @Test public void testRecord() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = [a |-> 1, b |-> TRUE] \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = [a |-> 1, b |-> TRUE] \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "CONSTANTS k\n" - + "PROPERTIES k : struct(a:INTEGER, b:BOOL) & k = rec(a : 1, b : TRUE) \n" - + "END"; + + "CONSTANTS k\n" + + "PROPERTIES k : struct(a:INTEGER, b:BOOL) & k = rec(a : 1, b : TRUE) \n" + + "END"; compare(expected, module); } - - + + @Ignore @Test public void testRecordExpansion() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME [a|-> 2] = [a |-> 1, b |-> \"abc\"] \n" - + "================================="; + + "ASSUME [a|-> 2] = [a |-> 1, b |-> \"abc\"] \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES rec(a : 2,b : \"\") = rec(a : 1,b : \"abc\") \n" - + "END"; + + "PROPERTIES rec(a : 2,b : \"\") = rec(a : 1,b : \"abc\") \n" + + "END"; compare(expected, module); } @@ -67,26 +66,26 @@ public class RecordTest { @Test public void testRecordSelect() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME [a |-> 1, b |-> TRUE].a = 1 \n" - + "================================="; + + "ASSUME [a |-> 1, b |-> TRUE].a = 1 \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES rec(a : 1, b : TRUE)'a = 1\n" - + "END"; + + "PROPERTIES rec(a : 1, b : TRUE)'a = 1\n" + + "END"; compare(expected, module); } - + @Test public void testRecordSelect2() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = [a |-> 1, b |-> TRUE] /\\ k.b \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = [a |-> 1, b |-> TRUE] /\\ k.b \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "CONSTANTS k\n" - + "PROPERTIES k : struct(a:INTEGER, b:BOOL) & (k = rec(a : 1, b : TRUE) & k'b = TRUE) \n" - + "END"; + + "CONSTANTS k\n" + + "PROPERTIES k : struct(a:INTEGER, b:BOOL) & (k = rec(a : 1, b : TRUE) & k'b = TRUE) \n" + + "END"; compare(expected, module); } @@ -96,13 +95,13 @@ public class RecordTest { @Test public void testRecordExcept() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = [a |-> 1, b |-> TRUE] /\\ k2 = [k EXCEPT !.a = 2] \n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "ASSUME k = [a |-> 1, b |-> TRUE] /\\ k2 = [k EXCEPT !.a = 2] \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "CONSTANTS k, k2\n" - + "PROPERTIES k : struct(a:INTEGER, b:BOOL) & k2 : struct(a:INTEGER, b:BOOL) & (k = rec(a : 1, b : TRUE) & k2 = rec(a : 2, b : k'b)) \n" - + "END"; + + "CONSTANTS k, k2\n" + + "PROPERTIES k : struct(a:INTEGER, b:BOOL) & k2 : struct(a:INTEGER, b:BOOL) & (k = rec(a : 1, b : TRUE) & k2 = rec(a : 2, b : k'b)) \n" + + "END"; compare(expected, module); } @@ -112,16 +111,16 @@ public class RecordTest { @Test public void testRecordExceptAt() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = [a |-> 1, b |-> TRUE] /\\ k2 = [k EXCEPT !.a = @ + 1] \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k, k2 \n" + + "ASSUME k = [a |-> 1, b |-> TRUE] /\\ k2 = [k EXCEPT !.a = @ + 1] \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "CONSTANTS k, k2\n" - + "PROPERTIES k : struct(a:INTEGER, b:BOOL) & k2 : struct(a:INTEGER, b:BOOL) & (k = rec(a : 1, b : TRUE) & k2 = rec(a : k'a + 1, b : k'b)) \n" - + "END"; + + "CONSTANTS k, k2\n" + + "PROPERTIES k : struct(a:INTEGER, b:BOOL) & k2 : struct(a:INTEGER, b:BOOL) & (k = rec(a : 1, b : TRUE) & k2 = rec(a : k'a + 1, b : k'b)) \n" + + "END"; compare(expected, module); } - + } diff --git a/src/test/java/de/tla2b/prettyprintb/RecursiveDefinitionTest.java b/src/test/java/de/tla2b/prettyprintb/RecursiveDefinitionTest.java index 00e01859d48698d11e0a66b4e0c10a3fe2bd24df..65813ee73f1b4fda90abda82daa7b3d94958ba98 100644 --- a/src/test/java/de/tla2b/prettyprintb/RecursiveDefinitionTest.java +++ b/src/test/java/de/tla2b/prettyprintb/RecursiveDefinitionTest.java @@ -1,50 +1,49 @@ package de.tla2b.prettyprintb; -import static de.tla2b.util.TestUtil.compare; - import org.junit.Ignore; import org.junit.Test; +import static de.tla2b.util.TestUtil.compare; + public class RecursiveDefinitionTest { @Ignore @Test public void testRecursiveDefinition() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "RECURSIVE sum(_) \n" - + "sum(S) == IF S = {} THEN 0 ELSE (LET x == CHOOSE a \\in S : TRUE IN x + sum(S \\ {x})) \n" - + "ASSUME sum({1,2,3}) = 6 \n" - + "================================="; + + "EXTENDS Naturals \n" + + "RECURSIVE sum(_) \n" + + "sum(S) == IF S = {} THEN 0 ELSE (LET x == CHOOSE a \\in S : TRUE IN x + sum(S \\ {x})) \n" + + "ASSUME sum({1,2,3}) = 6 \n" + + "================================="; final String expected = "MACHINE Testing\n" + "ABSTRACT_CONSTANTS k\n" - + "PROPERTIES " - + " k : BOOL +-> INTEGER " - + "& k = k <+ {TRUE |-> 0, FALSE |-> 0}" + "END"; + + "PROPERTIES " + + " k : BOOL +-> INTEGER " + + "& k = k <+ {TRUE |-> 0, FALSE |-> 0}" + "END"; compare(expected, module); - + } - + @Ignore @Test public void testRecursiveDefinition2() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "RECURSIVE Sum(_,_) \n" - + " Sum(f,S) == IF S = {} THEN 0 \n" - + " ELSE LET x == CHOOSE x \\in S : TRUE \n" - + " IN f[x] + Sum(f, S \\ {x}) \n" - + "foo[x \\in Nat] == x \n" - + "ASSUME Sum(foo, {1,2,3}) = 6 \n" - + "================================="; + + "EXTENDS Naturals \n" + + "RECURSIVE Sum(_,_) \n" + + " Sum(f,S) == IF S = {} THEN 0 \n" + + " ELSE LET x == CHOOSE x \\in S : TRUE \n" + + " IN f[x] + Sum(f, S \\ {x}) \n" + + "foo[x \\in Nat] == x \n" + + "ASSUME Sum(foo, {1,2,3}) = 6 \n" + + "================================="; final String expected = "MACHINE Testing\n" + "ABSTRACT_CONSTANTS k\n" - + "PROPERTIES " - + " k = k <+ {TRUE |-> 0, FALSE |-> 0}" + "END"; + + "PROPERTIES " + + " k = k <+ {TRUE |-> 0, FALSE |-> 0}" + "END"; compare(expected, module); - + } - - + } diff --git a/src/test/java/de/tla2b/prettyprintb/RecursiveFunctionTest.java b/src/test/java/de/tla2b/prettyprintb/RecursiveFunctionTest.java index 839ddde5b843ff11264a23648953f6610c1d6e9a..947aa2d8b3bab6b2156da09fb9fa6fda48a4c776 100644 --- a/src/test/java/de/tla2b/prettyprintb/RecursiveFunctionTest.java +++ b/src/test/java/de/tla2b/prettyprintb/RecursiveFunctionTest.java @@ -1,24 +1,24 @@ package de.tla2b.prettyprintb; -import static de.tla2b.util.TestUtil.compare; - import org.junit.Ignore; import org.junit.Test; +import static de.tla2b.util.TestUtil.compare; + public class RecursiveFunctionTest { @Ignore @Test public void testRecursiveDefinition() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "sum[S \\in SUBSET(Nat)] == IF S = {} THEN 0 ELSE LET x == CHOOSE a \\in S : TRUE IN x + sum[S \\ {x}] \n" - + "ASSUME sum[{1,2,3}] = 6 \n" - + "================================="; + + "EXTENDS Naturals \n" + + "sum[S \\in SUBSET(Nat)] == IF S = {} THEN 0 ELSE LET x == CHOOSE a \\in S : TRUE IN x + sum[S \\ {x}] \n" + + "ASSUME sum[{1,2,3}] = 6 \n" + + "================================="; final String expected = "MACHINE Testing\n" + "ABSTRACT_CONSTANTS k\n" - + "PROPERTIES " + " k : BOOL +-> INTEGER " - + "& k = k <+ {TRUE |-> 0, FALSE |-> 0}" + "END"; + + "PROPERTIES " + " k : BOOL +-> INTEGER " + + "& k = k <+ {TRUE |-> 0, FALSE |-> 0}" + "END"; compare(expected, module); } @@ -27,15 +27,15 @@ public class RecursiveFunctionTest { @Test public void testFactorial() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "fac[x \\in Nat] == IF x = 1 THEN 1 ELSE x * fac[x-1]\n" - + "ASSUME fac[3] = 6 \n" + "================================="; + + "EXTENDS Naturals \n" + + "fac[x \\in Nat] == IF x = 1 THEN 1 ELSE x * fac[x-1]\n" + + "ASSUME fac[3] = 6 \n" + "================================="; final String expected = "MACHINE Testing\n" - + "ABSTRACT_CONSTANTS fac\n" - + "PROPERTIES " - + "fac = %(x).(x : NATURAL | (%(t_).(t_ = 0 & x = 1 | 1) \\/ %(t_).(t_ = 0 & not(x = 1) | x * fac((x - 1))))(0)) & fac(3) = 6 \n" - + "END"; + + "ABSTRACT_CONSTANTS fac\n" + + "PROPERTIES " + + "fac = %(x).(x : NATURAL | (%(t_).(t_ = 0 & x = 1 | 1) \\/ %(t_).(t_ = 0 & not(x = 1) | x * fac((x - 1))))(0)) & fac(3) = 6 \n" + + "END"; compare(expected, module); } @@ -44,15 +44,15 @@ public class RecursiveFunctionTest { @Test public void testFactorial2() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "fac[x \\in Nat] == 5 + IF x = 1 THEN 1 ELSE x * fac[x-1]\n" - + "ASSUME fac[3] = 56 \n" + "================================="; + + "EXTENDS Naturals \n" + + "fac[x \\in Nat] == 5 + IF x = 1 THEN 1 ELSE x * fac[x-1]\n" + + "ASSUME fac[3] = 56 \n" + "================================="; final String expected = "MACHINE Testing\n" - + "ABSTRACT_CONSTANTS fac\n" - + "PROPERTIES " - + "fac = %(x).(x : NATURAL | 5 + (%(t_).(t_ = 0 & x = 1 | 1) \\/ %(t_).(t_ = 0 & not(x = 1) | x * fac((x - 1))))(0)) & fac(3) = 56 \n" - + "END"; + + "ABSTRACT_CONSTANTS fac\n" + + "PROPERTIES " + + "fac = %(x).(x : NATURAL | 5 + (%(t_).(t_ = 0 & x = 1 | 1) \\/ %(t_).(t_ = 0 & not(x = 1) | x * fac((x - 1))))(0)) & fac(3) = 56 \n" + + "END"; compare(expected, module); } @@ -60,19 +60,18 @@ public class RecursiveFunctionTest { @Test public void testSum() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Integers, FiniteSets \n" - + " Sum[x \\in Nat] == IF x = 0 THEN 0 ELSE x + Sum[x-1] \n" - + "ASSUME 6 = Sum[3] \n" - + "================================="; + + "EXTENDS Integers, FiniteSets \n" + + " Sum[x \\in Nat] == IF x = 0 THEN 0 ELSE x + Sum[x-1] \n" + + "ASSUME 6 = Sum[3] \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "ABSTRACT_CONSTANTS Sum\n" - + "PROPERTIES " - + "Sum = %(x).(x : NATURAL | (%(t_).(t_ = 0 & x = 0 | 0) \\/ %(t_).(t_ = 0 & not(x = 0) | x + Sum((x - 1))))(0)) & 6 = Sum(3) \n" - + "END"; + + "ABSTRACT_CONSTANTS Sum\n" + + "PROPERTIES " + + "Sum = %(x).(x : NATURAL | (%(t_).(t_ = 0 & x = 0 | 0) \\/ %(t_).(t_ = 0 & not(x = 0) | x + Sum((x - 1))))(0)) & 6 = Sum(3) \n" + + "END"; compare(expected, module); } - } diff --git a/src/test/java/de/tla2b/prettyprintb/SetsClauseTest.java b/src/test/java/de/tla2b/prettyprintb/SetsClauseTest.java index 737c0593d5061a27e43bc9324435cd8f79b693cd..6f1b3c59f66a6a0434df89791c9612074ecb5722 100644 --- a/src/test/java/de/tla2b/prettyprintb/SetsClauseTest.java +++ b/src/test/java/de/tla2b/prettyprintb/SetsClauseTest.java @@ -1,23 +1,23 @@ package de.tla2b.prettyprintb; -import static de.tla2b.util.TestUtil.compare; - import org.junit.Test; +import static de.tla2b.util.TestUtil.compare; + public class SetsClauseTest { @Test public void testSetEnumeration() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS S\n" - + "ASSUME S = S\n" - + "================================="; - final String config = "CONSTANTS S = {s1,s2,s3}"; + + "CONSTANTS S\n" + + "ASSUME S = S\n" + + "================================="; + final String config = "CONSTANTS S = {s1,s2,s3}"; - final String expected = "MACHINE Testing\n" - + "SETS ENUM1 = {s1,s2,s3} \n" - + "CONSTANTS S " - + "PROPERTIES S = ENUM1 & S = S \n" + "END"; + final String expected = "MACHINE Testing\n" + + "SETS ENUM1 = {s1,s2,s3} \n" + + "CONSTANTS S " + + "PROPERTIES S = ENUM1 & S = S \n" + "END"; compare(expected, module, config); } } diff --git a/src/test/java/de/tla2b/prettyprintb/SetsTest.java b/src/test/java/de/tla2b/prettyprintb/SetsTest.java index f01df8b44a02c19425dde7231fee76caa020d9ea..8ceb6b12439d4a34eb073e8a1192aeee438ec162 100644 --- a/src/test/java/de/tla2b/prettyprintb/SetsTest.java +++ b/src/test/java/de/tla2b/prettyprintb/SetsTest.java @@ -1,32 +1,32 @@ package de.tla2b.prettyprintb; -import static de.tla2b.util.TestUtil.compare; - import org.junit.Test; +import static de.tla2b.util.TestUtil.compare; + public class SetsTest { @Test public void testSetEnumeration() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k\n" - + "ASSUME k = {1,2,3}\n" - + "================================="; + + "CONSTANTS k\n" + + "ASSUME k = {1,2,3}\n" + + "================================="; final String expected = "MACHINE Testing\n" + "CONSTANTS k\n" - + "PROPERTIES k : POW(INTEGER) & k = {1,2,3} \n" + "END"; + + "PROPERTIES k : POW(INTEGER) & k = {1,2,3} \n" + "END"; compare(expected, module); } @Test public void testSetEnumeration2() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k\n" - + "ASSUME k = {TRUE, 1 = 1}\n" - + "================================="; + + "CONSTANTS k\n" + + "ASSUME k = {TRUE, 1 = 1}\n" + + "================================="; final String expected = "MACHINE Testing\n" + "CONSTANTS k\n" - + "PROPERTIES k : POW(BOOL) & k = {TRUE, bool(1=1)} \n" + "END"; + + "PROPERTIES k : POW(BOOL) & k = {TRUE, bool(1=1)} \n" + "END"; compare(expected, module); } @@ -36,31 +36,31 @@ public class SetsTest { @Test public void testMemberOf() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME TRUE \\in BOOLEAN \n" - + "================================="; + + "ASSUME TRUE \\in BOOLEAN \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES TRUE : BOOL \n" + "END"; + + "PROPERTIES TRUE : BOOL \n" + "END"; compare(expected, module); } @Test public void testMemberOf2() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME 1 \\in {1,2,3} \n" - + "================================="; + + "ASSUME 1 \\in {1,2,3} \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES 1 : {1,2,3} \n" + "END"; + + "PROPERTIES 1 : {1,2,3} \n" + "END"; compare(expected, module); } @Test public void testNotMemberOf() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME 1 \\notin {} \n" - + "================================="; + + "ASSUME 1 \\notin {} \n" + + "================================="; final String expected = "MACHINE Testing\n" + "PROPERTIES 1 /: {} \n" - + "END"; + + "END"; compare(expected, module); } @@ -70,33 +70,33 @@ public class SetsTest { @Test public void testSetDifference() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME {1} = {1,2} \\ {1} \n" - + "================================="; + + "ASSUME {1} = {1,2} \\ {1} \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES {1} = {1,2} - {1} \n" + "END"; + + "PROPERTIES {1} = {1,2} - {1} \n" + "END"; compare(expected, module); } @Test public void testCup() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME {1,2} = {1} \\cup {2} \n" - + "================================="; + + "ASSUME {1,2} = {1} \\cup {2} \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES {1,2} = {1} \\/ {2} \n" + "END"; + + "PROPERTIES {1,2} = {1} \\/ {2} \n" + "END"; compare(expected, module); - } + } @Test public void testCap() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME {1} = {1,2} \\cap {2} \n" - + "================================="; + + "ASSUME {1} = {1,2} \\cap {2} \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES {1} = {1,2} /\\ {2} \n" + "END"; + + "PROPERTIES {1} = {1,2} /\\ {2} \n" + "END"; compare(expected, module); } @@ -106,11 +106,11 @@ public class SetsTest { @Test public void testSubsteq() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME TRUE = ({1} \\subseteq {1,2}) \n" - + "================================="; + + "ASSUME TRUE = ({1} \\subseteq {1,2}) \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES TRUE = bool({1} <: {1,2}) \n" + "END"; + + "PROPERTIES TRUE = bool({1} <: {1,2}) \n" + "END"; compare(expected, module); } @@ -120,11 +120,11 @@ public class SetsTest { @Test public void testSubset() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME {{},{1}} = SUBSET {1,2} \n" - + "================================="; + + "ASSUME {{},{1}} = SUBSET {1,2} \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES {{},{1}} = POW({1,2}) \n" + "END"; + + "PROPERTIES {{},{1}} = POW({1,2}) \n" + "END"; compare(expected, module); } @@ -134,47 +134,47 @@ public class SetsTest { @Test public void testUnion() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME UNION {{1},{2}} = {1,2} \n" - + "================================="; + + "ASSUME UNION {{1},{2}} = {1,2} \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES union({{1},{2}}) = {1,2} \n" + "END"; + + "PROPERTIES union({{1},{2}}) = {1,2} \n" + "END"; compare(expected, module); } - + /* - * Set Constructor + * Set Constructor */ @Test public void testConstructor1() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME {x \\in {1,2} : x = 1} = {1} \n" - + "================================="; + + "ASSUME {x \\in {1,2} : x = 1} = {1} \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES {x | x : {1,2} & x = 1} = {1} \n" + "END"; + + "PROPERTIES {x | x : {1,2} & x = 1} = {1} \n" + "END"; compare(expected, module); } - + @Test public void testConstructor1Tuple() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME {<<a,b>> \\in {<<1,2>>} : a = 1 /\\ b = 2} = {<<1,2>>} \n" - + "================================="; + + "ASSUME {<<a,b>> \\in {<<1,2>>} : a = 1 /\\ b = 2} = {<<1,2>>} \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES {a,b | (a,b) : {(1,2)} & (a = 1 & b = 2)} = {(1,2)} \n" + "END"; + + "PROPERTIES {a,b | (a,b) : {(1,2)} & (a = 1 & b = 2)} = {(1,2)} \n" + "END"; compare(expected, module); } - + @Test public void testConstructor1Tuple3Elements() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME {<<a,b,c>> \\in {<<1,2,3>>} : a = 1 /\\ b = 2} = {<<1,2,3>>} \n" - + "================================="; + + "ASSUME {<<a,b,c>> \\in {<<1,2,3>>} : a = 1 /\\ b = 2} = {<<1,2,3>>} \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES {a,b,c | (a,b,c) : {(1,2,3)} & (a = 1 & b = 2)} = {(1,2,3)} \n" + "END"; + + "PROPERTIES {a,b,c | (a,b,c) : {(1,2,3)} & (a = 1 & b = 2)} = {(1,2,3)} \n" + "END"; compare(expected, module); } @@ -182,36 +182,36 @@ public class SetsTest { @Test public void testConstructor2Simple() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "ASSUME {x + x : x \\in {1}} = {2} \n" - + "================================="; + + "EXTENDS Naturals \n" + + "ASSUME {x + x : x \\in {1}} = {2} \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES UNION(x).(x : {1}| {x + x}) = {2} \n" - + "END"; + + "PROPERTIES UNION(x).(x : {1}| {x + x}) = {2} \n" + + "END"; compare(expected, module); } - + @Test public void testConstructor2() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "ASSUME {x + y: x \\in {1}, y \\in {2} } = {3} \n" - + "================================="; + + "EXTENDS Naturals \n" + + "ASSUME {x + y: x \\in {1}, y \\in {2} } = {3} \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES UNION(x,y).(x : {1} & y : {2} | {x+y}) = {3} \n" - + "END"; + + "PROPERTIES UNION(x,y).(x : {1} & y : {2} | {x+y}) = {3} \n" + + "END"; compare(expected, module); } - + @Test public void testConstructor2Tuple() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "ASSUME {x + y: <<x,y>> \\in {<<1,2>>}} = {3} \n" - + "================================="; + + "EXTENDS Naturals \n" + + "ASSUME {x + y: <<x,y>> \\in {<<1,2>>}} = {3} \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES UNION(x,y).((x|->y) : {(1|->2)} | {x + y}) = {3} \n" - + "END"; + + "PROPERTIES UNION(x,y).((x|->y) : {(1|->2)} | {x + y}) = {3} \n" + + "END"; compare(expected, module); } } diff --git a/src/test/java/de/tla2b/prettyprintb/SimpleModulesTest.java b/src/test/java/de/tla2b/prettyprintb/SimpleModulesTest.java index 97dc470262498e22646cff9ac2b7914f272d5369..4f32ffeedb6d5cb0156e7a08dbb84203857eaead 100644 --- a/src/test/java/de/tla2b/prettyprintb/SimpleModulesTest.java +++ b/src/test/java/de/tla2b/prettyprintb/SimpleModulesTest.java @@ -1,79 +1,79 @@ package de.tla2b.prettyprintb; -import static de.tla2b.util.TestUtil.compare; - import org.junit.Test; +import static de.tla2b.util.TestUtil.compare; + public class SimpleModulesTest { - + @Test public void testSimpleModule() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "================================="; + + "================================="; final String expected = "MACHINE Testing\n" - + "END"; + + "END"; compare(expected, module); } @Test public void testSingleOperator() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals\n" - + "add(a,b) == a + b \n" - + "ASSUME add(1,3) = 4 \n" - + "================================="; + + "EXTENDS Naturals\n" + + "add(a,b) == a + b \n" + + "ASSUME add(1,3) = 4 \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "DEFINITIONS add(a,b) == a + b \n" - + "PROPERTIES add(1,3) = 4\n" - + "END"; + + "DEFINITIONS add(a,b) == a + b \n" + + "PROPERTIES add(1,3) = 4\n" + + "END"; compare(expected, module); } - + @Test public void testVariables() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals\n" - + "VARIABLES x \n" - + "Init == x = 1\n" - + "e1 == x'= 1 \n" - + "e2 == x'= 2 \n" - + "Next == e1 \\/ e2 \n" - + "================================="; + + "EXTENDS Naturals\n" + + "VARIABLES x \n" + + "Init == x = 1\n" + + "e1 == x'= 1 \n" + + "e2 == x'= 2 \n" + + "Next == e1 \\/ e2 \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "VARIABLES x \n" - + "INVARIANT x : INTEGER \n" - + "INITIALISATION x :(x = 1) \n" - + "OPERATIONS \n" - + "e1 = BEGIN x := 1 END; \n" - + "e2 = BEGIN x := 2 END \n" - + "END"; + + "VARIABLES x \n" + + "INVARIANT x : INTEGER \n" + + "INITIALISATION x :(x = 1) \n" + + "OPERATIONS \n" + + "e1 = BEGIN x := 1 END; \n" + + "e2 = BEGIN x := 2 END \n" + + "END"; compare(expected, module); } - + @Test public void testVariables2() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals\n" - + "VARIABLES x \n" - + "Init == x = 1\n" - + "e1 == /\\ 1= 2 /\\ x'+ 1= 1 \n" - + "e2 == x = 1 /\\ x'= 2 \n" - + "Next == e1 \\/ e2 \n" - + "================================="; + + "EXTENDS Naturals\n" + + "VARIABLES x \n" + + "Init == x = 1\n" + + "e1 == /\\ 1= 2 /\\ x'+ 1= 1 \n" + + "e2 == x = 1 /\\ x'= 2 \n" + + "Next == e1 \\/ e2 \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "VARIABLES x \n" - + "INVARIANT x : INTEGER \n" - + "INITIALISATION x :(x = 1) \n" - + "OPERATIONS \n" - + "e1 = ANY x_n WHERE 1 = 2 & x_n : INTEGER & x_n + 1 = 1 THEN x := x_n END; \n" - + "e2 = SELECT x = 1 THEN x := 2 END \n" - + "END"; + + "VARIABLES x \n" + + "INVARIANT x : INTEGER \n" + + "INITIALISATION x :(x = 1) \n" + + "OPERATIONS \n" + + "e1 = ANY x_n WHERE 1 = 2 & x_n : INTEGER & x_n + 1 = 1 THEN x := x_n END; \n" + + "e2 = SELECT x = 1 THEN x := 2 END \n" + + "END"; compare(expected, module); } - + } diff --git a/src/test/java/de/tla2b/prettyprintb/SpecialDefinitions.java b/src/test/java/de/tla2b/prettyprintb/SpecialDefinitions.java index 4be87f509d6df5088fd4f011120aa01497747c0e..35149184eff1c24ca207f0f2fd2bc5b424a631a8 100644 --- a/src/test/java/de/tla2b/prettyprintb/SpecialDefinitions.java +++ b/src/test/java/de/tla2b/prettyprintb/SpecialDefinitions.java @@ -1,24 +1,24 @@ package de.tla2b.prettyprintb; -import static de.tla2b.util.TestUtil.compare; - import org.junit.Test; +import static de.tla2b.util.TestUtil.compare; + public class SpecialDefinitions { - + @Test public void testVisualisationDefinition() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CUSTOM_GRAPH_NODES == { <<a,<<\"lightgray\",b>> >> : a\\in 1..2 , b \\in 1..2} \n" - + "CUSTOM_GRAPH_EDGES == 1..10 \n" - + "================================="; - + + "EXTENDS Naturals \n" + + "CUSTOM_GRAPH_NODES == { <<a,<<\"lightgray\",b>> >> : a\\in 1..2 , b \\in 1..2} \n" + + "CUSTOM_GRAPH_EDGES == 1..10 \n" + + "================================="; + final String expected = "MACHINE Testing\n" - + "DEFINITIONS CUSTOM_GRAPH_NODES == UNION(a,b).(a : 1 .. 2 & b : 1 .. 2 | {(a|->(\"lightgray\"|->b))}); \n" - + "CUSTOM_GRAPH_EDGES == 1 .. 10;" - + "END"; + + "DEFINITIONS CUSTOM_GRAPH_NODES == UNION(a,b).(a : 1 .. 2 & b : 1 .. 2 | {(a|->(\"lightgray\"|->b))}); \n" + + "CUSTOM_GRAPH_EDGES == 1 .. 10;" + + "END"; compare(expected, module); } } diff --git a/src/test/java/de/tla2b/prettyprintb/TupleTest.java b/src/test/java/de/tla2b/prettyprintb/TupleTest.java index c516bf98f3cc0a313c6b8e8327033e8d74952e69..a585a2fb04739523f3a00dd7a46d1e26f2496b7b 100644 --- a/src/test/java/de/tla2b/prettyprintb/TupleTest.java +++ b/src/test/java/de/tla2b/prettyprintb/TupleTest.java @@ -1,159 +1,159 @@ package de.tla2b.prettyprintb; -import static de.tla2b.util.TestUtil.compare; - import org.junit.Ignore; import org.junit.Test; +import static de.tla2b.util.TestUtil.compare; + public class TupleTest { - + @Test public void testTuple() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME <<TRUE,1,TRUE>> /= <<TRUE,1,TRUE>>\n" - + "================================="; + + "ASSUME <<TRUE,1,TRUE>> /= <<TRUE,1,TRUE>>\n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES (TRUE,1,TRUE) /= (TRUE,1,TRUE) \n" + "END"; + + "PROPERTIES (TRUE,1,TRUE) /= (TRUE,1,TRUE) \n" + "END"; compare(expected, module); } @Test public void testCartesianProduct() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME <<TRUE,1>> \\in BOOLEAN \\X {1} \n" - + "================================="; + + "ASSUME <<TRUE,1>> \\in BOOLEAN \\X {1} \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES (TRUE,1) : BOOL*{1} \n" + "END"; + + "PROPERTIES (TRUE,1) : BOOL*{1} \n" + "END"; compare(expected, module); } @Test public void testCartesianProduct2() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = BOOLEAN \\X ({1} \\X BOOLEAN) \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = BOOLEAN \\X ({1} \\X BOOLEAN) \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "CONSTANTS k\n" - + "PROPERTIES k : POW(BOOL * (INTEGER * BOOL)) & k = BOOL*({1}*BOOL) \n" - + "END"; + + "CONSTANTS k\n" + + "PROPERTIES k : POW(BOOL * (INTEGER * BOOL)) & k = BOOL*({1}*BOOL) \n" + + "END"; compare(expected, module); } @Test public void testTupleFunctionCall() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME 1 = <<1,TRUE>>[1] \n" - + "================================="; + + "ASSUME 1 = <<1,TRUE>>[1] \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES 1 = prj1(INTEGER, BOOL)((1,TRUE)) \n" + "END"; + + "PROPERTIES 1 = prj1(INTEGER, BOOL)((1,TRUE)) \n" + "END"; compare(expected, module); } @Test public void testTupleFunctionCall2() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME TRUE = <<1,TRUE>>[2] \n" - + "================================="; + + "ASSUME TRUE = <<1,TRUE>>[2] \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES TRUE = prj2(INTEGER, BOOL)((1,TRUE)) \n" + "END"; + + "PROPERTIES TRUE = prj2(INTEGER, BOOL)((1,TRUE)) \n" + "END"; compare(expected, module); } @Test public void testTupleFunctionCall3() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME 1 = <<1,TRUE,1>>[3] \n" - + "================================="; + + "ASSUME 1 = <<1,TRUE,1>>[3] \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES 1 = prj2(INTEGER * BOOL, INTEGER)((1,TRUE,1)) \n" - + "END"; + + "PROPERTIES 1 = prj2(INTEGER * BOOL, INTEGER)((1,TRUE,1)) \n" + + "END"; compare(expected, module); } @Test public void testTupleFunctionCall4() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME 1 = <<1,TRUE,1>>[1] \n" - + "================================="; + + "ASSUME 1 = <<1,TRUE,1>>[1] \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES 1 = prj1(INTEGER, BOOL)((prj1(INTEGER * BOOL, INTEGER)((1,TRUE,1)))) \n" - + "END"; + + "PROPERTIES 1 = prj1(INTEGER, BOOL)((prj1(INTEGER * BOOL, INTEGER)((1,TRUE,1)))) \n" + + "END"; compare(expected, module); } @Test public void testTupleFunctionCall5() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME 1 = <<1,TRUE,2>>[1] \n" - + "================================="; + + "ASSUME 1 = <<1,TRUE,2>>[1] \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES 1 = prj1(INTEGER, BOOL)((prj1(INTEGER * BOOL, INTEGER)((1,TRUE,2)))) \n" - + "END"; + + "PROPERTIES 1 = prj1(INTEGER, BOOL)((prj1(INTEGER * BOOL, INTEGER)((1,TRUE,2)))) \n" + + "END"; compare(expected, module); } @Test public void testTupleFunctionCall6() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME 1 = <<1,TRUE,2,FALSE>>[1] \n" - + "================================="; + + "ASSUME 1 = <<1,TRUE,2,FALSE>>[1] \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES 1 = prj1(INTEGER, BOOL)((prj1(INTEGER * BOOL, INTEGER)((prj1((INTEGER * BOOL) * INTEGER, BOOL)((1,TRUE,2,FALSE)))))) \n" - + "END"; + + "PROPERTIES 1 = prj1(INTEGER, BOOL)((prj1(INTEGER * BOOL, INTEGER)((prj1((INTEGER * BOOL) * INTEGER, BOOL)((1,TRUE,2,FALSE)))))) \n" + + "END"; compare(expected, module); } - + @Test public void testDomainOfTuple() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME {1,2,3} = DOMAIN <<\"a\", \"b\", \"c\">> \n" - + "================================="; + + "ASSUME {1,2,3} = DOMAIN <<\"a\", \"b\", \"c\">> \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES {1, 2, 3} = dom([\"a\", \"b\", \"c\"]) \n" - + "END"; + + "PROPERTIES {1, 2, 3} = dom([\"a\", \"b\", \"c\"]) \n" + + "END"; compare(expected, module); } @Test public void testTupleCartesianProduct() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME {<<1, 4>>, <<2,3>>} \\notin SUBSET ({1,2} \\X {3,4}) \n" - + "================================="; + + "ASSUME {<<1, 4>>, <<2,3>>} \\notin SUBSET ({1,2} \\X {3,4}) \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES {(1,4), (2,3)} /: POW({1, 2} * {3, 4}) \n" - + "END"; + + "PROPERTIES {(1,4), (2,3)} /: POW({1, 2} * {3, 4}) \n" + + "END"; compare(expected, module); } - + @Ignore @Test public void testAtTuple() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k, k2 \n" - + "ASSUME k =[i \\in Nat |-> <<1, \"s\">>] /\\ k2 = [ k EXCEPT ![22] = <<@[1],\"d\">>] \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k, k2 \n" + + "ASSUME k =[i \\in Nat |-> <<1, \"s\">>] /\\ k2 = [ k EXCEPT ![22] = <<@[1],\"d\">>] \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "CONSTANTS k, k2 \n" - + "PROPERTIES \n" - + "(k : INTEGER +-> INTEGER * STRING & k2 : INTEGER +-> INTEGER * STRING)" - + " & (k = %(i).(i : NATURAL | (1,\"s\")) & k2 = k <+ {(22,( prj1(INTEGER,STRING)(k(22)),\"d\") )}) \n" - + "END"; + + "CONSTANTS k, k2 \n" + + "PROPERTIES \n" + + "(k : INTEGER +-> INTEGER * STRING & k2 : INTEGER +-> INTEGER * STRING)" + + " & (k = %(i).(i : NATURAL | (1,\"s\")) & k2 = k <+ {(22,( prj1(INTEGER,STRING)(k(22)),\"d\") )}) \n" + + "END"; compare(expected, module); } - - + + } diff --git a/src/test/java/de/tla2b/prettyprintb/UnchangedVariableTest.java b/src/test/java/de/tla2b/prettyprintb/UnchangedVariableTest.java index 14e16cb1581377c5b4249f686d827b34b239c875..2f21a706813dbe38134d35c9137c592d7ac3db1a 100644 --- a/src/test/java/de/tla2b/prettyprintb/UnchangedVariableTest.java +++ b/src/test/java/de/tla2b/prettyprintb/UnchangedVariableTest.java @@ -1,27 +1,27 @@ package de.tla2b.prettyprintb; -import static de.tla2b.util.TestUtil.compare; - import org.junit.Test; +import static de.tla2b.util.TestUtil.compare; + public class UnchangedVariableTest { - + @Test public void testUnchangedOnTopLevel() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "VARIABLES x, y \n" - + "Init == x = 1 /\\ y = 1 \n" - + "Next == x < 2 /\\ x' = 1 /\\ UNCHANGED y\n" - + "================================="; - + + "EXTENDS Naturals \n" + + "VARIABLES x, y \n" + + "Init == x = 1 /\\ y = 1 \n" + + "Next == x < 2 /\\ x' = 1 /\\ UNCHANGED y\n" + + "================================="; + final String expected = "MACHINE Testing\n" - + "VARIABLES x, y\n" - + "INVARIANT x : INTEGER & y : INTEGER \n" - + "INITIALISATION x, y:(x = 1 & y = 1) \n" - + "OPERATIONS Next = SELECT x < 2 & TRUE = TRUE & TRUE = TRUE THEN x:= 1 END \n" - + "END"; + + "VARIABLES x, y\n" + + "INVARIANT x : INTEGER & y : INTEGER \n" + + "INITIALISATION x, y:(x = 1 & y = 1) \n" + + "OPERATIONS Next = SELECT x < 2 & TRUE = TRUE & TRUE = TRUE THEN x:= 1 END \n" + + "END"; compare(expected, module); } } diff --git a/src/test/java/de/tla2b/prettyprintb/VariablesTest.java b/src/test/java/de/tla2b/prettyprintb/VariablesTest.java index 6f874eadb3663519e560807aae510209aa26502e..2924f5ace162f845e0bcb2f0c26b28c52b68a038 100644 --- a/src/test/java/de/tla2b/prettyprintb/VariablesTest.java +++ b/src/test/java/de/tla2b/prettyprintb/VariablesTest.java @@ -1,25 +1,25 @@ package de.tla2b.prettyprintb; -import static de.tla2b.util.TestUtil.compare; - import org.junit.Test; +import static de.tla2b.util.TestUtil.compare; + public class VariablesTest { @Test public void testVariables() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "VARIABLES x, y \n" - + "Init == x = 1 /\\ y = 1 \n" - + "================================="; - + + "EXTENDS Naturals \n" + + "VARIABLES x, y \n" + + "Init == x = 1 /\\ y = 1 \n" + + "================================="; + final String expected = "MACHINE Testing\n" - + "VARIABLES x, y\n" - + "INVARIANT x : INTEGER & y : INTEGER \n" - + "INITIALISATION x, y:(x = 1 & y = 1) \n" - + "END"; + + "VARIABLES x, y\n" + + "INVARIANT x : INTEGER & y : INTEGER \n" + + "INITIALISATION x, y:(x = 1 & y = 1) \n" + + "END"; compare(expected, module); } - + } diff --git a/src/test/java/de/tla2b/prettyprintb/standardmodules/ModuleFiniteSetsTest.java b/src/test/java/de/tla2b/prettyprintb/standardmodules/ModuleFiniteSetsTest.java index 22453579c52df6308a52f0e2dc1791272c9da51e..6d7dbd164381b17b1b19d27a9039c4732efed238 100644 --- a/src/test/java/de/tla2b/prettyprintb/standardmodules/ModuleFiniteSetsTest.java +++ b/src/test/java/de/tla2b/prettyprintb/standardmodules/ModuleFiniteSetsTest.java @@ -1,9 +1,8 @@ package de.tla2b.prettyprintb.standardmodules; -import static de.tla2b.util.TestUtil.compare; - import org.junit.Test; +import static de.tla2b.util.TestUtil.compare; public class ModuleFiniteSetsTest { @@ -11,34 +10,34 @@ public class ModuleFiniteSetsTest { @Test public void testIsFiniteSet() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS FiniteSets \n" - + "ASSUME IsFiniteSet({1,2,3}) \n" - + "================================="; + + "EXTENDS FiniteSets \n" + + "ASSUME IsFiniteSet({1,2,3}) \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES {1,2,3} : FIN({1,2,3}) \n" + "END"; + + "PROPERTIES {1,2,3} : FIN({1,2,3}) \n" + "END"; compare(expected, module); } - + @Test public void testIsFiniteSet2() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS FiniteSets, Naturals \n" - + "ASSUME IsFiniteSet(Nat) \n" - + "================================="; + + "EXTENDS FiniteSets, Naturals \n" + + "ASSUME IsFiniteSet(Nat) \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES NATURAL : FIN(NATURAL) \n" + "END"; + + "PROPERTIES NATURAL : FIN(NATURAL) \n" + "END"; compare(expected, module); } - + @Test public void testCardinality() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS FiniteSets, Naturals \n" - + "ASSUME Cardinality({1,2,3}) = 3 \n" - + "================================="; + + "EXTENDS FiniteSets, Naturals \n" + + "ASSUME Cardinality({1,2,3}) = 3 \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES card({1,2,3}) = 3 \n" + "END"; + + "PROPERTIES card({1,2,3}) = 3 \n" + "END"; compare(expected, module); } - + } diff --git a/src/test/java/de/tla2b/prettyprintb/standardmodules/ModuleIntegersTest.java b/src/test/java/de/tla2b/prettyprintb/standardmodules/ModuleIntegersTest.java index 3f09be161893bd24da126d0582ec41135634f0ed..23abdeff1b3ef86113ddbffde27c74d43a33c697 100644 --- a/src/test/java/de/tla2b/prettyprintb/standardmodules/ModuleIntegersTest.java +++ b/src/test/java/de/tla2b/prettyprintb/standardmodules/ModuleIntegersTest.java @@ -1,32 +1,32 @@ package de.tla2b.prettyprintb.standardmodules; -import static de.tla2b.util.TestUtil.compare; - import org.junit.Test; +import static de.tla2b.util.TestUtil.compare; + public class ModuleIntegersTest { @Test public void testUnaryMinus() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Integers \n" - + "ASSUME 1 - 2 = -1 \n" - + "================================="; + + "EXTENDS Integers \n" + + "ASSUME 1 - 2 = -1 \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES 1 - 2 = -1 \n" - + "END"; + + "PROPERTIES 1 - 2 = -1 \n" + + "END"; compare(expected, module); } - + @Test public void testInt() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Integers \n" - + "ASSUME -1 \\in Int \n" - + "================================="; + + "EXTENDS Integers \n" + + "ASSUME -1 \\in Int \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES -1 : INTEGER \n" - + "END"; + + "PROPERTIES -1 : INTEGER \n" + + "END"; compare(expected, module); } } diff --git a/src/test/java/de/tla2b/prettyprintb/standardmodules/ModuleNaturalsTest.java b/src/test/java/de/tla2b/prettyprintb/standardmodules/ModuleNaturalsTest.java index 8503b2e77c58a35514e05d71ba36796fdf40d13a..7f2a682319b19e5c14e18c98f83f2c8258c6d59d 100644 --- a/src/test/java/de/tla2b/prettyprintb/standardmodules/ModuleNaturalsTest.java +++ b/src/test/java/de/tla2b/prettyprintb/standardmodules/ModuleNaturalsTest.java @@ -1,10 +1,9 @@ package de.tla2b.prettyprintb.standardmodules; -import static de.tla2b.util.TestUtil.compare; - import org.junit.Ignore; import org.junit.Test; +import static de.tla2b.util.TestUtil.compare; public class ModuleNaturalsTest { @@ -12,28 +11,28 @@ public class ModuleNaturalsTest { /* * >, <, <=, >= */ - + @Test public void testCompareOperators() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "ASSUME 1 < 2 /\\ 2 > 1 /\\ 1 <= 1 /\\ 1 >= 1 \n" - + "================================="; + + "EXTENDS Naturals \n" + + "ASSUME 1 < 2 /\\ 2 > 1 /\\ 1 <= 1 /\\ 1 >= 1 \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES 1 < 2 & 2 > 1 & 1 <= 1 & 1 >= 1 \n" + "END"; + + "PROPERTIES 1 < 2 & 2 > 1 & 1 <= 1 & 1 >= 1 \n" + "END"; compare(expected, module); } @Test public void testCompareOperators2() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "ASSUME (1 < 2) = (2 > 1) /\\ (1 <= 1) = (1 >= 1) \n" - + "================================="; + + "EXTENDS Naturals \n" + + "ASSUME (1 < 2) = (2 > 1) /\\ (1 <= 1) = (1 >= 1) \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES bool(1 < 2) = bool(2 > 1) & bool(1 <= 1) = bool(1 >= 1) \n" - + "END"; + + "PROPERTIES bool(1 < 2) = bool(2 > 1) & bool(1 <= 1) = bool(1 >= 1) \n" + + "END"; compare(expected, module); } @@ -43,53 +42,53 @@ public class ModuleNaturalsTest { @Test public void testArithmeticOperators() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "ASSUME 1 + 2 = 4-1 /\\ 1 * 2 = 2 /\\ 1 ^ 1 = 1 \n" - + "================================="; + + "EXTENDS Naturals \n" + + "ASSUME 1 + 2 = 4-1 /\\ 1 * 2 = 2 /\\ 1 ^ 1 = 1 \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES 1 + 2 = 4 - 1 & 1 * 2 = 2 & 1 ** 1 = 1 \n" - + "END"; + + "PROPERTIES 1 + 2 = 4 - 1 & 1 * 2 = 2 & 1 ** 1 = 1 \n" + + "END"; compare(expected, module); } /* - * Interval operator: x .. y + * Interval operator: x .. y */ @Test public void testDotDot() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "ASSUME 1 \\in 1 .. 2 \n" - + "================================="; + + "EXTENDS Naturals \n" + + "ASSUME 1 \\in 1 .. 2 \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES 1 : 1..2 \n" - + "END"; + + "PROPERTIES 1 : 1..2 \n" + + "END"; compare(expected, module); } @Test public void testNat() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "ASSUME 1 \\in Nat \n" - + "================================="; + + "EXTENDS Naturals \n" + + "ASSUME 1 \\in Nat \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES 1 : NATURAL \n" - + "END"; + + "PROPERTIES 1 : NATURAL \n" + + "END"; compare(expected, module); } - + @Ignore @Test public void testMod() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals, Integers \n" - + "ASSUME (-3) % 2 = 1 \n" - + "================================="; + + "EXTENDS Naturals, Integers \n" + + "ASSUME (-3) % 2 = 1 \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES -3 - 2 * (-3 \\div 2) = 1 \n" - + "END"; + + "PROPERTIES -3 - 2 * (-3 \\div 2) = 1 \n" + + "END"; compare(expected, module); } - + } diff --git a/src/test/java/de/tla2b/prettyprintb/standardmodules/SequencesTest.java b/src/test/java/de/tla2b/prettyprintb/standardmodules/SequencesTest.java index b179ebce34099b111dda4ccfe5ff44d1335151dc..edf143327cae107fdeb89971d0c925aea05ad108 100644 --- a/src/test/java/de/tla2b/prettyprintb/standardmodules/SequencesTest.java +++ b/src/test/java/de/tla2b/prettyprintb/standardmodules/SequencesTest.java @@ -1,95 +1,95 @@ package de.tla2b.prettyprintb.standardmodules; -import static de.tla2b.util.TestUtil.compare; - import org.junit.Test; +import static de.tla2b.util.TestUtil.compare; + public class SequencesTest { @Test public void testSeq() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "ASSUME <<1,2>> \\in Seq({1,2})\n" - + "================================="; + + "EXTENDS Sequences \n" + + "ASSUME <<1,2>> \\in Seq({1,2})\n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES [1,2] : seq({1,2}) \n" - + "END"; + + "PROPERTIES [1,2] : seq({1,2}) \n" + + "END"; compare(expected, module); } - + @Test public void testLen() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "ASSUME Len(<<1,2>>) = 2\n" - + "================================="; + + "EXTENDS Sequences \n" + + "ASSUME Len(<<1,2>>) = 2\n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES size([1,2]) = 2 \n" - + "END"; + + "PROPERTIES size([1,2]) = 2 \n" + + "END"; compare(expected, module); } - + @Test public void testConcatenation() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "ASSUME <<1,2>> \\o <<3>> = <<1,2,3>>\n" - + "================================="; + + "EXTENDS Sequences \n" + + "ASSUME <<1,2>> \\o <<3>> = <<1,2,3>>\n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES [1,2] ^ [3] = [1,2,3] \n" - + "END"; + + "PROPERTIES [1,2] ^ [3] = [1,2,3] \n" + + "END"; compare(expected, module); } - + @Test public void testAppend() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "ASSUME Append(<<1>>, 2) = <<1,2>> \n" - + "================================="; + + "EXTENDS Sequences \n" + + "ASSUME Append(<<1>>, 2) = <<1,2>> \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES [1] <- 2 = [1,2] \n" - + "END"; + + "PROPERTIES [1] <- 2 = [1,2] \n" + + "END"; compare(expected, module); } - - + + @Test public void testHead() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "ASSUME Head(<<1,2>>) = 1 \n" - + "================================="; + + "EXTENDS Sequences \n" + + "ASSUME Head(<<1,2>>) = 1 \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES first([1,2]) = 1 \n" - + "END"; + + "PROPERTIES first([1,2]) = 1 \n" + + "END"; compare(expected, module); } - + @Test public void testTail() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "ASSUME Tail(<<1,2,3>>) = <<2,3>> \n" - + "================================="; + + "EXTENDS Sequences \n" + + "ASSUME Tail(<<1,2,3>>) = <<2,3>> \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES tail([1,2,3]) = [2,3] \n" - + "END"; + + "PROPERTIES tail([1,2,3]) = [2,3] \n" + + "END"; compare(expected, module); } - + @Test public void testSubSeq() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "ASSUME SubSeq(<<1,2,3,4,5>>, 2, 3) = <<2,3>> \n" - + "================================="; + + "EXTENDS Sequences \n" + + "ASSUME SubSeq(<<1,2,3,4,5>>, 2, 3) = <<2,3>> \n" + + "================================="; final String expected = "MACHINE Testing\n" - + "PROPERTIES %(t_).(t_ : 1 .. (3 - 2) + 1 | [1,2,3,4,5](((t_ + 2) - 1))) = [2,3] \n" - + "END"; + + "PROPERTIES %(t_).(t_ : 1 .. (3 - 2) + 1 | [1,2,3,4,5](((t_ + 2) - 1))) = [2,3] \n" + + "END"; compare(expected, module); } - - + + } diff --git a/src/test/java/de/tla2b/typechecking/BBuiltInsTest.java b/src/test/java/de/tla2b/typechecking/BBuiltInsTest.java index f0847d79f130790b4406c6df0a4b031aaeafaa55..c2821088de12e65204dc7948af9a1ec40f751904 100644 --- a/src/test/java/de/tla2b/typechecking/BBuiltInsTest.java +++ b/src/test/java/de/tla2b/typechecking/BBuiltInsTest.java @@ -1,13 +1,12 @@ package de.tla2b.typechecking; -import static org.junit.Assert.*; - -import org.junit.Test; - import de.tla2b.exceptions.TLA2BException; import de.tla2b.exceptions.TypeErrorException; import de.tla2b.util.TestTypeChecker; import de.tla2b.util.TestUtil; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; public class BBuiltInsTest { @@ -16,70 +15,69 @@ public class BBuiltInsTest { /* * BOOLEAN */ - @Test + @Test public void testBoolean() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = BOOLEAN \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = BOOLEAN \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(BOOL)", t.getConstantType("k")); } - - @Test (expected = TypeErrorException.class) + + @Test(expected = TypeErrorException.class) public void testBooleanException() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME 1 \\in BOOLEAN \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME 1 \\in BOOLEAN \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(BOOL)", t.getConstantType("k")); } - + /* * String */ - @Test + @Test public void testString() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = STRING \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = STRING \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(STRING)", t.getConstantType("k")); } - - @Test (expected = TypeErrorException.class) + + @Test(expected = TypeErrorException.class) public void testUnifyErrorString() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME 1 = STRING \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME 1 = STRING \n" + + "================================="; TestUtil.typeCheckString(module); } - + /* * Bool value: TRUE, FALSE */ - @Test + @Test public void testBoolValue() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = TRUE \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = TRUE \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("BOOL", t.getConstantType("k")); } - - @Test (expected = TypeErrorException.class) + + @Test(expected = TypeErrorException.class) public void testUnifyErrorBoolValue() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME 1 = TRUE \n" - + "================================="; + + "ASSUME 1 = TRUE \n" + + "================================="; TestUtil.typeCheckString(module); } - - - + + } diff --git a/src/test/java/de/tla2b/typechecking/ConfigTest.java b/src/test/java/de/tla2b/typechecking/ConfigTest.java index fbae27a75991e5b4e0714e0a5f8df48247928b9c..0bbed098bb0f0bd67522cfe5652ea6e8e1730c40 100644 --- a/src/test/java/de/tla2b/typechecking/ConfigTest.java +++ b/src/test/java/de/tla2b/typechecking/ConfigTest.java @@ -1,12 +1,11 @@ package de.tla2b.typechecking; -import static org.junit.Assert.assertEquals; - -import org.junit.Test; - import de.tla2b.exceptions.TLA2BException; import de.tla2b.util.TestTypeChecker; import de.tla2b.util.TestUtil; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; public class ConfigTest { @@ -14,7 +13,7 @@ public class ConfigTest { @Test public void TestConAssignment() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" + "================================="; + + "CONSTANTS k \n" + "================================="; final String config = "CONSTANTS k = 1"; TestTypeChecker t = TestUtil.typeCheckString(module, config); assertEquals("INTEGER", t.getConstantType("k")); @@ -23,10 +22,10 @@ public class ConfigTest { @Test public void TestConOverride() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "foo == 1\n" - + "ASSUME k2 = k\n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "foo == 1\n" + + "ASSUME k2 = k\n" + + "================================="; final String config = "CONSTANTS k <- foo"; TestTypeChecker t = TestUtil.typeCheckString(module, config); assertEquals("INTEGER", t.getConstantType("k2")); diff --git a/src/test/java/de/tla2b/typechecking/ConstantTypesTest.java b/src/test/java/de/tla2b/typechecking/ConstantTypesTest.java index 27c2cb966ffed0955f5bfd00d67a01cb4bf7811e..3888fb8adbe3d78fed93013fa842fdd87f3efab5 100644 --- a/src/test/java/de/tla2b/typechecking/ConstantTypesTest.java +++ b/src/test/java/de/tla2b/typechecking/ConstantTypesTest.java @@ -1,13 +1,12 @@ package de.tla2b.typechecking; -import static org.junit.Assert.*; - -import org.junit.Test; - import de.tla2b.exceptions.TLA2BException; import de.tla2b.exceptions.TypeErrorException; import de.tla2b.util.TestTypeChecker; import de.tla2b.util.TestUtil; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; public class ConstantTypesTest { @@ -15,9 +14,9 @@ public class ConstantTypesTest { @Test public void test1() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = 1 /\\ k2 = k\n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "ASSUME k = 1 /\\ k2 = k\n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER", t.getConstantType("k")); assertEquals("INTEGER", t.getConstantType("k2")); @@ -26,9 +25,9 @@ public class ConstantTypesTest { @Test public void test2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = k2 /\\ k = 1\n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "ASSUME k = k2 /\\ k = 1\n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER", t.getConstantType("k")); @@ -38,9 +37,9 @@ public class ConstantTypesTest { @Test public void test3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3 \n" - + "ASSUME k = k2 /\\ k = k3 /\\ k3 = 1\n" - + "================================="; + + "CONSTANTS k, k2, k3 \n" + + "ASSUME k = k2 /\\ k = k3 /\\ k3 = 1\n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER", t.getConstantType("k")); assertEquals("INTEGER", t.getConstantType("k2")); @@ -50,16 +49,16 @@ public class ConstantTypesTest { @Test public void worstCaseUnification() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS a, b, c, d, e, f, g, h \n" - + "ASSUME a = b \n" - + "ASSUME c = d \n" - + "ASSUME a = c \n" - + "ASSUME e = f \n" - + "ASSUME g = h \n" - + "ASSUME e = g \n" - + "ASSUME a = e \n" - + "ASSUME h = 1 \n" - + "================================="; + + "CONSTANTS a, b, c, d, e, f, g, h \n" + + "ASSUME a = b \n" + + "ASSUME c = d \n" + + "ASSUME a = c \n" + + "ASSUME e = f \n" + + "ASSUME g = h \n" + + "ASSUME e = g \n" + + "ASSUME a = e \n" + + "ASSUME h = 1 \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER", t.getConstantType("a")); @@ -75,25 +74,25 @@ public class ConstantTypesTest { @Test(expected = TypeErrorException.class) public void prime() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "Next == 1' = 1 \n" + "================================="; + + "Next == 1' = 1 \n" + "================================="; TestUtil.typeCheckString(module); } @Test(expected = TypeErrorException.class) public void prime2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k\n" - + "foo == k' = 1 \n" - + "================================="; + + "CONSTANTS k\n" + + "foo == k' = 1 \n" + + "================================="; TestUtil.typeCheckString(module); } @Test public void ifThenElse() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2\n" - + "ASSUME k = IF 1 = 1 THEN k2 ELSE 1 \n" - + "================================="; + + "CONSTANTS k, k2\n" + + "ASSUME k = IF 1 = 1 THEN k2 ELSE 1 \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER", t.getConstantType("k")); assertEquals("INTEGER", t.getConstantType("k2")); diff --git a/src/test/java/de/tla2b/typechecking/DefinitionsTest.java b/src/test/java/de/tla2b/typechecking/DefinitionsTest.java index 444012592c452a88c9ccd102e1e0af7205c6a672..8f2dc45fd46616f1b8a5436cd10192b981b23e06 100644 --- a/src/test/java/de/tla2b/typechecking/DefinitionsTest.java +++ b/src/test/java/de/tla2b/typechecking/DefinitionsTest.java @@ -1,12 +1,12 @@ package de.tla2b.typechecking; -import static org.junit.Assert.*; - -import org.junit.Test; - import de.tla2b.exceptions.TLA2BException; import de.tla2b.util.TestTypeChecker; import de.tla2b.util.TestUtil; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; public class DefinitionsTest { @@ -17,9 +17,9 @@ public class DefinitionsTest { @Test public void testDefinition() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "foo(a,b) == a = 1 /\\ b = TRUE \n" - + "Next == foo(1,TRUE) \n" - + "================================="; + + "foo(a,b) == a = 1 /\\ b = TRUE \n" + + "Next == foo(1,TRUE) \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("BOOL", t.getDefinitionType("foo")); assertEquals("INTEGER", t.getDefinitionParamType("foo", "a")); @@ -29,11 +29,11 @@ public class DefinitionsTest { @Test public void testDefinition2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "foo(a,b) == a = k /\\ b = k2 \n" - + "bar == k = 1 /\\ k2 = TRUE \n" - + "ASSUME foo(1,FALSE) /\\ bar \n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "foo(a,b) == a = k /\\ b = k2 \n" + + "bar == k = 1 /\\ k2 = TRUE \n" + + "ASSUME foo(1,FALSE) /\\ bar \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("BOOL", t.getDefinitionType("foo")); assertEquals("INTEGER", t.getDefinitionParamType("foo", "a")); @@ -45,10 +45,10 @@ public class DefinitionsTest { @Test public void testDefinition3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "foo == k \n" - + "bar == foo = 1 \n" - + "ASSUME bar \n" + "================================="; + + "CONSTANTS k \n" + + "foo == k \n" + + "bar == foo = 1 \n" + + "ASSUME bar \n" + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER", t.getDefinitionType("foo")); assertEquals("BOOL", t.getDefinitionType("bar")); @@ -57,10 +57,10 @@ public class DefinitionsTest { @Test public void testDefinition4() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "foo(var, value) == var = value \n" - + "ASSUME foo(k,1) /\\ foo(k2,TRUE) \n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "foo(var, value) == var = value \n" + + "ASSUME foo(k,1) /\\ foo(k2,TRUE) \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("BOOL", t.getDefinitionType("foo")); assertEquals("INTEGER", t.getConstantType("k")); @@ -74,10 +74,10 @@ public class DefinitionsTest { @Test public void testDefinitionCall() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "foo(a) == TRUE \n" - + "bar == foo(1) \n" - + "ASSUME bar \n" - + "================================="; + + "foo(a) == TRUE \n" + + "bar == foo(1) \n" + + "ASSUME bar \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("BOOL", t.getDefinitionType("foo")); assertEquals("BOOL", t.getDefinitionType("bar")); @@ -86,11 +86,11 @@ public class DefinitionsTest { @Test public void testDefinitionCall2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "foo(a) == a \n" - + "bar == foo(1) \n" - + "baz == foo(TRUE) \n" - + "ASSUME baz /\\ bar = bar" - + "================================="; + + "foo(a) == a \n" + + "bar == foo(1) \n" + + "baz == foo(TRUE) \n" + + "ASSUME baz /\\ bar = bar" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertTrue(t.getDefinitionType("foo").startsWith("UNTYPED")); assertEquals("INTEGER", t.getDefinitionType("bar")); @@ -100,12 +100,12 @@ public class DefinitionsTest { @Test public void testDefinitionCall3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "foo(a) == a \n" - + "bar == foo(1) \n" - + "baz == k = foo(k2) /\\ k2 = bar \n" - + "ASSUME baz \n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "foo(a) == a \n" + + "bar == foo(1) \n" + + "baz == k = foo(k2) /\\ k2 = bar \n" + + "ASSUME baz \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertTrue(t.getDefinitionType("foo").startsWith("UNTYPED")); assertEquals("INTEGER", t.getDefinitionType("bar")); @@ -117,12 +117,12 @@ public class DefinitionsTest { @Test public void testDefinitionCall4() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "foo(a,b) == a \\cup b \n" - + "bar == foo({1}, k) \n" - + "baz == foo({TRUE}, k2)\n" - + "ASSUME baz = baz /\\ bar = bar" - + "================================="; + + "CONSTANTS k, k2 \n" + + "foo(a,b) == a \\cup b \n" + + "bar == foo({1}, k) \n" + + "baz == foo({TRUE}, k2)\n" + + "ASSUME baz = baz /\\ bar = bar" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertTrue(t.getDefinitionType("foo").startsWith("POW(UNTYPED")); assertEquals("POW(INTEGER)", t.getDefinitionType("bar")); @@ -134,11 +134,11 @@ public class DefinitionsTest { @Test public void testDefinitionCall5() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "foo(a,b) == a = b \n" - + "bar == foo(1,k) \n" - + "ASSUME bar \n" - + "================================="; + + "CONSTANTS k \n" + + "foo(a,b) == a = b \n" + + "bar == foo(1,k) \n" + + "ASSUME bar \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("BOOL", t.getDefinitionType("foo")); assertEquals("INTEGER", t.getConstantType("k")); @@ -147,11 +147,11 @@ public class DefinitionsTest { @Test public void testDefinitionCall6() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "foo(a,b) == a = b \n" - + "bar == foo(k, k2) /\\ k2 = 1 \n" - + "ASSUME bar \n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "foo(a,b) == a = b \n" + + "bar == foo(k, k2) /\\ k2 = 1 \n" + + "ASSUME bar \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("BOOL", t.getDefinitionType("foo")); assertTrue(t.getDefinitionParamType("foo", "a").startsWith("UNTYPED")); @@ -164,16 +164,16 @@ public class DefinitionsTest { @Test public void testDefinitionCall7() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3 \n" - + "foo(a,b) == a \\cup b \n" - + "bar(x,y) == x = foo(y, k) /\\ y ={1} \n" - + "ASSUME bar(k2,k3) \n" + "================================="; + + "CONSTANTS k, k2, k3 \n" + + "foo(a,b) == a \\cup b \n" + + "bar(x,y) == x = foo(y, k) /\\ y ={1} \n" + + "ASSUME bar(k2,k3) \n" + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertTrue(t.getDefinitionType("foo").startsWith("POW(UNTYPED")); assertTrue(t.getDefinitionParamType("foo", "a").startsWith( - "POW(UNTYPED")); + "POW(UNTYPED")); assertTrue(t.getDefinitionParamType("foo", "b").startsWith( - "POW(UNTYPED")); + "POW(UNTYPED")); assertEquals("BOOL", t.getDefinitionType("bar")); assertEquals("POW(INTEGER)", t.getDefinitionParamType("bar", "x")); assertEquals("POW(INTEGER)", t.getDefinitionParamType("bar", "y")); @@ -183,11 +183,11 @@ public class DefinitionsTest { @Test public void testDefinitionCall8() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "foo(a) == k = a \n" - + "bar == foo(k2)\n" - + "baz == k2 = 1 \n" - + "ASSUME bar /\\ baz \n" + "================================="; + + "CONSTANTS k, k2 \n" + + "foo(a) == k = a \n" + + "bar == foo(k2)\n" + + "baz == k2 = 1 \n" + + "ASSUME bar /\\ baz \n" + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER", t.getConstantType("k")); assertEquals("INTEGER", t.getConstantType("k2")); @@ -200,10 +200,10 @@ public class DefinitionsTest { @Test public void testDefinitionCall9() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "foo(a,b) == a = b \n" - + "ASSUME foo(k, 1) /\\ foo(k2, TRUE) \n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "foo(a,b) == a = b \n" + + "ASSUME foo(k, 1) /\\ foo(k2, TRUE) \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER", t.getConstantType("k")); assertEquals("BOOL", t.getConstantType("k2")); @@ -215,9 +215,9 @@ public class DefinitionsTest { @Test public void testDefinitionCall10() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "foo(a,b) == a= 1 /\\ b = TRUE \n" - + "ASSUME foo(1, TRUE) \n" - + "================================="; + + "foo(a,b) == a= 1 /\\ b = TRUE \n" + + "ASSUME foo(1, TRUE) \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("BOOL", t.getDefinitionType("foo")); assertEquals("INTEGER", t.getDefinitionParamType("foo", "a")); diff --git a/src/test/java/de/tla2b/typechecking/ExceptTest.java b/src/test/java/de/tla2b/typechecking/ExceptTest.java index 360d0fdd2f4998c62c811ce11bf3478ce9e34c80..8c308d627dd74f72e69b8ef4e6ec19ce11a72443 100644 --- a/src/test/java/de/tla2b/typechecking/ExceptTest.java +++ b/src/test/java/de/tla2b/typechecking/ExceptTest.java @@ -1,13 +1,12 @@ package de.tla2b.typechecking; -import static org.junit.Assert.assertEquals; - -import org.junit.Test; - import de.tla2b.exceptions.TLA2BException; import de.tla2b.exceptions.TypeErrorException; import de.tla2b.util.TestTypeChecker; import de.tla2b.util.TestUtil; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; public class ExceptTest { @@ -15,9 +14,9 @@ public class ExceptTest { @Test public void testFunction() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = [k2 EXCEPT ![TRUE] = 0] \n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "ASSUME k = [k2 EXCEPT ![TRUE] = 0] \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(BOOL*INTEGER)", t.getConstantType("k")); @@ -27,118 +26,118 @@ public class ExceptTest { @Test public void testFunctionRecord() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = [k EXCEPT ![1] = [a|-> 1, b |-> TRUE], ![1].b = k2 ] " - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k, k2 \n" + + "ASSUME k = [k EXCEPT ![1] = [a|-> 1, b |-> TRUE], ![1].b = k2 ] " + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*struct(a:INTEGER,b:BOOL))", - t.getConstantType("k")); + t.getConstantType("k")); assertEquals("BOOL", t.getConstantType("k2")); } @Test public void testFunctionRecord2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = [k EXCEPT ![1].a = 2, ![1].b = k2 ] /\\ k2 = TRUE \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k, k2 \n" + + "ASSUME k = [k EXCEPT ![1].a = 2, ![1].b = k2 ] /\\ k2 = TRUE \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*struct(a:INTEGER,b:BOOL))", - t.getConstantType("k")); + t.getConstantType("k")); } @Test public void testRecord() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k \n" - + "ASSUME k = [k EXCEPT !.a = 2, !.b = TRUE] \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k \n" + + "ASSUME k = [k EXCEPT !.a = 2, !.b = TRUE] \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("struct(a:INTEGER,b:BOOL)", t.getConstantType("k")); } - @Test (expected = TypeErrorException.class) + @Test(expected = TypeErrorException.class) public void testRecordOrFunction() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS a, b \n" - + "ASSUME a = [a EXCEPT !.a = 1, !.b = 1] \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS a, b \n" + + "ASSUME a = [a EXCEPT !.a = 1, !.b = 1] \n" + + "================================="; TestUtil.typeCheckString(module); } @Test(expected = TypeErrorException.class) public void testRecordAtTypeError() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS r, r2\n" - + "ASSUME r = [a |-> TRUE] \n" - + "/\\ r2 = [r EXCEPT !.a = 1 = @] \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS r, r2\n" + + "ASSUME r = [a |-> TRUE] \n" + + "/\\ r2 = [r EXCEPT !.a = 1 = @] \n" + + "================================="; TestUtil.typeCheckString(module); } @Test(expected = TypeErrorException.class) public void testRecordAtTypeError2() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS r, r2\n" - + "ASSUME r = [x \\in {1,2}|->TRUE] \n" - + "/\\ r2 = [r EXCEPT ![1] = 1 = @] \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS r, r2\n" + + "ASSUME r = [x \\in {1,2}|->TRUE] \n" + + "/\\ r2 = [r EXCEPT ![1] = 1 = @] \n" + + "================================="; TestUtil.typeCheckString(module); } @Test(expected = TypeErrorException.class) public void testRecordAtTypeError3() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS r, r2\n" - + "ASSUME r = [x \\in {1,2}|->TRUE] \n" - + "/\\ r2 = [r EXCEPT ![1] = @ + 1] \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS r, r2\n" + + "ASSUME r = [x \\in {1,2}|->TRUE] \n" + + "/\\ r2 = [r EXCEPT ![1] = @ + 1] \n" + + "================================="; TestUtil.typeCheckString(module); } @Test public void testRecordAt() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k\n" - + "ASSUME k = [k EXCEPT ![1] = @ = @] \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k\n" + + "ASSUME k = [k EXCEPT ![1] = @ = @] \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k")); } - + @Test public void testRecordExcept() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k\n" - + "ASSUME k = [ [a |-> [i \\in 1..1 |-> i], b |-> [i \\in 1..1 |-> 2]] EXCEPT !.a[1] = 1].a[1] \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k\n" + + "ASSUME k = [ [a |-> [i \\in 1..1 |-> i], b |-> [i \\in 1..1 |-> 2]] EXCEPT !.a[1] = 1].a[1] \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER", t.getConstantType("k")); } - + @Test public void testAtTuple() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k, k2\n" - + "ASSUME k = [i \\in Nat |-> <<1, \"s\">>] /\\ k2 = [ k EXCEPT ![22] = <<@[1],\"d\">>] \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k, k2\n" + + "ASSUME k = [i \\in Nat |-> <<1, \"s\">>] /\\ k2 = [ k EXCEPT ![22] = <<@[1],\"d\">>] \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*(INTEGER*STRING))", t.getConstantType("k")); assertEquals("POW(INTEGER*(INTEGER*STRING))", t.getConstantType("k2")); } - + } diff --git a/src/test/java/de/tla2b/typechecking/ExtendsTest.java b/src/test/java/de/tla2b/typechecking/ExtendsTest.java index 05e397e455024fad57ee94c7ba4317bd3f9fe44c..cabb6376e922cc5e117aa860e104aace9721d382 100644 --- a/src/test/java/de/tla2b/typechecking/ExtendsTest.java +++ b/src/test/java/de/tla2b/typechecking/ExtendsTest.java @@ -1,11 +1,10 @@ package de.tla2b.typechecking; -import static org.junit.Assert.assertEquals; - -import org.junit.Test; - import de.tla2b.util.TestTypeChecker; import de.tla2b.util.TestUtil; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; public class ExtendsTest { diff --git a/src/test/java/de/tla2b/typechecking/FunctionTest.java b/src/test/java/de/tla2b/typechecking/FunctionTest.java index 6102665347ab99be8c467130bc0785cdffd037a0..896633b24f61186e6764af86386d0b7705fba6e0 100644 --- a/src/test/java/de/tla2b/typechecking/FunctionTest.java +++ b/src/test/java/de/tla2b/typechecking/FunctionTest.java @@ -1,13 +1,12 @@ package de.tla2b.typechecking; -import static org.junit.Assert.assertEquals; - -import org.junit.Test; - import de.tla2b.exceptions.TLA2BException; import de.tla2b.exceptions.TypeErrorException; import de.tla2b.util.TestTypeChecker; import de.tla2b.util.TestUtil; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; public class FunctionTest { @@ -20,10 +19,10 @@ public class FunctionTest { public void testSimpleFunctionConstructor() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k \n" - + "ASSUME k = [x \\in {1} |-> 1] \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k \n" + + "ASSUME k = [x \\in {1} |-> 1] \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*INTEGER)", t.getConstantType("k")); } @@ -32,9 +31,9 @@ public class FunctionTest { public void testFunctionConstructor() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, S \n" - + "ASSUME k = [x \\in S |-> x = k2] /\\ k2 = 1 \n" - + "================================="; + + "CONSTANTS k, k2, S \n" + + "ASSUME k = [x \\in S |-> x = k2] /\\ k2 = 1 \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k")); assertEquals("INTEGER", t.getConstantType("k2")); @@ -45,9 +44,9 @@ public class FunctionTest { public void testFunctionConstructorTwoVariables() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = [x,y \\in {1} |-> TRUE] \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = [x,y \\in {1} |-> TRUE] \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*INTEGER*BOOL)", t.getConstantType("k")); } @@ -56,9 +55,9 @@ public class FunctionTest { public void testFunctionConstructor2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = [<<x,y>> \\in {<<1,TRUE>>} |-> TRUE] \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = [<<x,y>> \\in {<<1,TRUE>>} |-> TRUE] \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL*BOOL)", t.getConstantType("k")); } @@ -67,20 +66,20 @@ public class FunctionTest { public void testFunctionConstructor6() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = [x \\in {1}, <<y,z>> \\in {<<1,TRUE>>} |-> TRUE] \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = [x \\in {1}, <<y,z>> \\in {<<1,TRUE>>} |-> TRUE] \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*(INTEGER*BOOL)*BOOL)", t.getConstantType("k")); } @Test public void testFunctionConstructorTwoVariables2() - throws TLA2BException { + throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = [x \\in {1}, y \\in BOOLEAN |-> TRUE] \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = [x \\in {1}, y \\in BOOLEAN |-> TRUE] \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL*BOOL)", t.getConstantType("k")); @@ -90,19 +89,19 @@ public class FunctionTest { public void testFunctionConstructorFail() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = [<<x,y>> \\in {1} |-> TRUE] \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = [<<x,y>> \\in {1} |-> TRUE] \n" + + "================================="; TestUtil.typeCheckString(module); } - @Test (expected = TypeErrorException.class) + @Test(expected = TypeErrorException.class) public void testFunctionConstructorFail2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = [<<x,y,z>> \\in ({1} \\times {1}) |-> TRUE] \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = [<<x,y,z>> \\in ({1} \\times {1}) |-> TRUE] \n" + + "================================="; TestUtil.typeCheckString(module); } @@ -110,9 +109,9 @@ public class FunctionTest { public void testFunctionConstructor3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, S, S2 \n" - + "ASSUME k = [x,y \\in S, z \\in S2 |-> z] /\\ S = BOOLEAN /\\ S2 = {1} \n" - + "================================="; + + "CONSTANTS k, S, S2 \n" + + "ASSUME k = [x,y \\in S, z \\in S2 |-> z] /\\ S = BOOLEAN /\\ S2 = {1} \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(BOOL*BOOL*INTEGER*INTEGER)", t.getConstantType("k")); assertEquals("POW(BOOL)", t.getConstantType("S")); @@ -123,9 +122,9 @@ public class FunctionTest { public void testFunctionConstructor4() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, S, S2 \n" - + "ASSUME [x \\in S |-> k] = [x \\in S2 |-> x=k2] /\\ k2 = 1 \n" - + "================================="; + + "CONSTANTS k, k2, S, S2 \n" + + "ASSUME [x \\in S |-> k] = [x \\in S2 |-> x=k2] /\\ k2 = 1 \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("BOOL", t.getConstantType("k")); assertEquals("INTEGER", t.getConstantType("k2")); @@ -137,9 +136,9 @@ public class FunctionTest { public void testFunctionConstructor5() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS S, S2 \n" - + "ASSUME [x \\in S, y \\in S2 |-> 1] = [x,y \\in {1} |-> 1] \n" - + "================================="; + + "CONSTANTS S, S2 \n" + + "ASSUME [x \\in S, y \\in S2 |-> 1] = [x,y \\in {1} |-> 1] \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER)", t.getConstantType("S")); assertEquals("POW(INTEGER)", t.getConstantType("S2")); @@ -149,9 +148,9 @@ public class FunctionTest { public void testFunctionConstructorException() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, S, S2 \n" - + "ASSUME [x \\in S, y \\in S2 |-> 1] = [x \\in {1} |-> 1] \n" - + "================================="; + + "CONSTANTS k, k2, S, S2 \n" + + "ASSUME [x \\in S, y \\in S2 |-> 1] = [x \\in {1} |-> 1] \n" + + "================================="; TestUtil.typeCheckString(module); } @@ -162,11 +161,11 @@ public class FunctionTest { public void testRecursiveFunction() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k, k2, k3 \n" - + "fact[n \\in {1,2}] == IF n = 0 THEN 1 ELSE n+ fact[n-1] \n" - + "ASSUME k = fact /\\ fact[k2] = k3 \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k, k2, k3 \n" + + "fact[n \\in {1,2}] == IF n = 0 THEN 1 ELSE n+ fact[n-1] \n" + + "ASSUME k = fact /\\ fact[k2] = k3 \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*INTEGER)", t.getConstantType("k")); assertEquals("INTEGER", t.getConstantType("k2")); @@ -180,9 +179,9 @@ public class FunctionTest { @Test public void testFunctionCall() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k \n" - + "ASSUME k[1] = TRUE \n" + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k \n" + + "ASSUME k[1] = TRUE \n" + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k")); } @@ -190,10 +189,10 @@ public class FunctionTest { @Test public void testFunctionCall2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k \n" - + "ASSUME k[1,TRUE,2] = TRUE \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k \n" + + "ASSUME k[1,TRUE,2] = TRUE \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL*INTEGER*BOOL)", t.getConstantType("k")); } @@ -201,10 +200,10 @@ public class FunctionTest { @Test public void testFunctionCall3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3, S \n" - + "ASSUME k[k2,TRUE] = k3 \n" - + "ASSUME k = [x \\in {1}, y \\in S |-> 1]\n" - + "================================="; + + "CONSTANTS k, k2, k3, S \n" + + "ASSUME k[k2,TRUE] = k3 \n" + + "ASSUME k = [x \\in {1}, y \\in S |-> 1]\n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL*INTEGER)", t.getConstantType("k")); assertEquals("INTEGER", t.getConstantType("k2")); @@ -215,9 +214,9 @@ public class FunctionTest { @Test public void testFunctionCall4() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k[(TRUE /\\ TRUE)] = 2 \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k[(TRUE /\\ TRUE)] = 2 \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(BOOL*INTEGER)", t.getConstantType("k")); } @@ -226,10 +225,10 @@ public class FunctionTest { public void testFunctionCallException() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3, S \n" - + "ASSUME k = [x \\in {1} |-> 1]\n" - + "ASSUME k[k2,TRUE] = k3 \n" - + "================================="; + + "CONSTANTS k, k2, k3, S \n" + + "ASSUME k = [x \\in {1} |-> 1]\n" + + "ASSUME k[k2,TRUE] = k3 \n" + + "================================="; TestUtil.typeCheckString(module); } @@ -239,10 +238,10 @@ public class FunctionTest { @Test public void testDomain() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = [x \\in {1}, y \\in BOOLEAN |-> 1]\n" - + "ASSUME k2 = DOMAIN k \n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "ASSUME k = [x \\in {1}, y \\in BOOLEAN |-> 1]\n" + + "ASSUME k2 = DOMAIN k \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL*INTEGER)", t.getConstantType("k")); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k2")); @@ -251,10 +250,10 @@ public class FunctionTest { @Test public void testDomain2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = [x \\in {1}, y \\in BOOLEAN |-> 1]\n" - + "ASSUME k2 = DOMAIN k \n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "ASSUME k = [x \\in {1}, y \\in BOOLEAN |-> 1]\n" + + "ASSUME k2 = DOMAIN k \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL*INTEGER)", t.getConstantType("k")); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k2")); @@ -266,9 +265,9 @@ public class FunctionTest { @Test public void testSetOfFunction() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = [BOOLEAN -> {1}] \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = [BOOLEAN -> {1}] \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(POW(BOOL*INTEGER))", t.getConstantType("k")); } @@ -276,9 +275,9 @@ public class FunctionTest { @Test public void testSetOfFunction2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS S, S2 \n" - + "ASSUME [x \\in BOOLEAN |-> 1] \\in [S -> S2] \n" - + "================================="; + + "CONSTANTS S, S2 \n" + + "ASSUME [x \\in BOOLEAN |-> 1] \\in [S -> S2] \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(BOOL)", t.getConstantType("S")); assertEquals("POW(INTEGER)", t.getConstantType("S2")); @@ -291,9 +290,9 @@ public class FunctionTest { * A set of tuple is not a function in TLA+ */ final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS S, S2 \n" - + "ASSUME {1} \\X BOOLEAN \\in [S -> S2] \n" - + "================================="; + + "CONSTANTS S, S2 \n" + + "ASSUME {1} \\X BOOLEAN \\in [S -> S2] \n" + + "================================="; TestUtil.typeCheckString(module); } @@ -303,9 +302,9 @@ public class FunctionTest { @Test public void testFunctionExcept() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = [k2 EXCEPT ![TRUE] = 0] \n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "ASSUME k = [k2 EXCEPT ![TRUE] = 0] \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); @@ -316,9 +315,9 @@ public class FunctionTest { @Test public void testFunctionExcept2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3 \n" - + "ASSUME k = [k2 EXCEPT ![TRUE,1] = k3] /\\ k3 = 1 \n" - + "================================="; + + "CONSTANTS k, k2, k3 \n" + + "ASSUME k = [k2 EXCEPT ![TRUE,1] = k3] /\\ k3 = 1 \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(BOOL*INTEGER*INTEGER)", t.getConstantType("k")); assertEquals("POW(BOOL*INTEGER*INTEGER)", t.getConstantType("k2")); @@ -329,10 +328,10 @@ public class FunctionTest { @Test public void testFunctionExcept3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3, k4, k5 \n" - + "ASSUME k = [k2 EXCEPT ![k3,k4] = k5]\n" - + "ASSUME k2 = [x \\in {1}, y \\in BOOLEAN |-> 1]" - + "================================="; + + "CONSTANTS k, k2, k3, k4, k5 \n" + + "ASSUME k = [k2 EXCEPT ![k3,k4] = k5]\n" + + "ASSUME k2 = [x \\in {1}, y \\in BOOLEAN |-> 1]" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL*INTEGER)", t.getConstantType("k")); assertEquals("POW(INTEGER*BOOL*INTEGER)", t.getConstantType("k2")); @@ -345,10 +344,10 @@ public class FunctionTest { @Test public void testFunctionExcept4() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3, k4, k5 \n" - + "ASSUME k = [k2 EXCEPT ![k3,k4] = k5]\n" - + "ASSUME k = [x \\in {1}, y \\in BOOLEAN |-> 1]" - + "================================="; + + "CONSTANTS k, k2, k3, k4, k5 \n" + + "ASSUME k = [k2 EXCEPT ![k3,k4] = k5]\n" + + "ASSUME k = [x \\in {1}, y \\in BOOLEAN |-> 1]" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL*INTEGER)", t.getConstantType("k")); assertEquals("POW(INTEGER*BOOL*INTEGER)", t.getConstantType("k2")); @@ -360,9 +359,9 @@ public class FunctionTest { @Test public void testFunctionExcept6() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3, k4\n" - + "ASSUME k = [k2 EXCEPT ![k3] = k4, ![1] = TRUE ]\n" - + "================================="; + + "CONSTANTS k, k2, k3, k4\n" + + "ASSUME k = [k2 EXCEPT ![k3] = k4, ![1] = TRUE ]\n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k")); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k2")); @@ -373,22 +372,22 @@ public class FunctionTest { @Test public void testFunctionExcept5() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = [k2 EXCEPT ![1][1] = 2]\n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "ASSUME k = [k2 EXCEPT ![1][1] = 2]\n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*POW(INTEGER*INTEGER))", - t.getConstantType("k")); + t.getConstantType("k")); assertEquals("POW(INTEGER*POW(INTEGER*INTEGER))", - t.getConstantType("k2")); + t.getConstantType("k2")); } @Test public void testFunctionExcept7() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = [k2 EXCEPT ![<<1,2>>] = 2]\n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "ASSUME k = [k2 EXCEPT ![<<1,2>>] = 2]\n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*INTEGER*INTEGER)", t.getConstantType("k")); } @@ -400,9 +399,9 @@ public class FunctionTest { @Test public void testAt2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2,k3 \n" - + "ASSUME k = [k2 EXCEPT ![1] = TRUE, ![2] = @=k3] \n" - + "================================="; + + "CONSTANTS k, k2,k3 \n" + + "ASSUME k = [k2 EXCEPT ![1] = TRUE, ![2] = @=k3] \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k")); assertEquals("BOOL", t.getConstantType("k3")); @@ -411,9 +410,9 @@ public class FunctionTest { @Test(expected = TypeErrorException.class) public void testAtException() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = [k2 EXCEPT ![1] = TRUE, ![2] = @=1] \n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "ASSUME k = [k2 EXCEPT ![1] = TRUE, ![2] = @=1] \n" + + "================================="; TestUtil.typeCheckString(module); } diff --git a/src/test/java/de/tla2b/typechecking/InstanceTest.java b/src/test/java/de/tla2b/typechecking/InstanceTest.java index 159380b7acc1d548d65d5f274d069b7699c596eb..22795acd8f2008b1c9a177da52a1e0184d5f7b4c 100644 --- a/src/test/java/de/tla2b/typechecking/InstanceTest.java +++ b/src/test/java/de/tla2b/typechecking/InstanceTest.java @@ -1,10 +1,10 @@ package de.tla2b.typechecking; -import static org.junit.Assert.assertEquals; -import org.junit.Test; - import de.tla2b.util.TestTypeChecker; import de.tla2b.util.TestUtil; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; public class InstanceTest { diff --git a/src/test/java/de/tla2b/typechecking/LogicOperatorsTest.java b/src/test/java/de/tla2b/typechecking/LogicOperatorsTest.java index 554a2021f33507deef9b900427b1ea95b8147755..5af94a9eb50ccca51eb68e77507254ba4af81566 100644 --- a/src/test/java/de/tla2b/typechecking/LogicOperatorsTest.java +++ b/src/test/java/de/tla2b/typechecking/LogicOperatorsTest.java @@ -1,95 +1,94 @@ package de.tla2b.typechecking; -import static org.junit.Assert.*; - -import org.junit.Test; - import de.tla2b.exceptions.TLA2BException; import de.tla2b.exceptions.TypeErrorException; import de.tla2b.util.TestTypeChecker; import de.tla2b.util.TestUtil; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; public class LogicOperatorsTest { - + /* * equality and disequality: =, #, */ @Test public void testEquality() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2\n" - + "ASSUME k = (k2 = 1)\n" - + "================================="; + + "CONSTANTS k, k2\n" + + "ASSUME k = (k2 = 1)\n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("BOOL", t.getConstantType("k")); assertEquals("INTEGER", t.getConstantType("k2")); } - - @Test (expected = TypeErrorException.class) + + @Test(expected = TypeErrorException.class) public void testEqualityError() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME 1 = TRUE\n" - + "================================="; + + "ASSUME 1 = TRUE\n" + + "================================="; TestUtil.typeCheckString(module); } - @Test (expected = TypeErrorException.class) + + @Test(expected = TypeErrorException.class) public void testEqualityError2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME 1 = (1=1)\n" - + "================================="; + + "ASSUME 1 = (1=1)\n" + + "================================="; TestUtil.typeCheckString(module); } - - - + + /* * Logic Operators: \neg, \lnot, \land, \cl, \lor, \dl, \equiv, => */ @Test public void testLogicOperators() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3\n" - + "ASSUME k = (k2 \\land k3) \n" - + "================================="; - + + "CONSTANTS k, k2, k3\n" + + "ASSUME k = (k2 \\land k3) \n" + + "================================="; + TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("BOOL", t.getConstantType("k")); assertEquals("BOOL", t.getConstantType("k2")); assertEquals("BOOL", t.getConstantType("k3")); } - - @Test (expected = TypeErrorException.class) + + @Test(expected = TypeErrorException.class) public void testLogicOperatorsError() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3\n" - + "ASSUME 1 = (k2 \\land k3) \n" - + "================================="; + + "CONSTANTS k, k2, k3\n" + + "ASSUME 1 = (k2 \\land k3) \n" + + "================================="; TestUtil.typeCheckString(module); } - + /* - * Quantification: \A x \in S : P or \E x \in S : P. + * Quantification: \A x \in S : P or \E x \in S : P. */ - - @Test + + @Test public void testQuantification() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, S\n" - + "ASSUME k = (\\A x \\in S : x = k2) /\\ k2 = 1 \n" - + "================================="; + + "CONSTANTS k, k2, S\n" + + "ASSUME k = (\\A x \\in S : x = k2) /\\ k2 = 1 \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("BOOL", t.getConstantType("k")); assertEquals("INTEGER", t.getConstantType("k2")); assertEquals("POW(INTEGER)", t.getConstantType("S")); } - + @Test(expected = TypeErrorException.class) public void testQuantificationException() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME \\A <<x,y>> \\in {1} : TRUE \n" - + "================================="; + + "ASSUME \\A <<x,y>> \\in {1} : TRUE \n" + + "================================="; TestUtil.typeCheckString(module); } } diff --git a/src/test/java/de/tla2b/typechecking/MiscellaneousConstructsTest.java b/src/test/java/de/tla2b/typechecking/MiscellaneousConstructsTest.java index e23b5247d1d9e0b92d85dc7e633fcc7674a0e46e..f52c3ca54ea222e2b3e8cf9feb1cc8994245fcb4 100644 --- a/src/test/java/de/tla2b/typechecking/MiscellaneousConstructsTest.java +++ b/src/test/java/de/tla2b/typechecking/MiscellaneousConstructsTest.java @@ -1,12 +1,11 @@ package de.tla2b.typechecking; -import static org.junit.Assert.assertEquals; - -import org.junit.Test; - import de.tla2b.exceptions.TLA2BException; import de.tla2b.util.TestTypeChecker; import de.tla2b.util.TestUtil; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; public class MiscellaneousConstructsTest { @@ -17,16 +16,16 @@ public class MiscellaneousConstructsTest { @Test public void testIfThenElse() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3, k4 \n" - + "ASSUME k = (IF k2 THEN k3 ELSE k4) /\\ k4 = 1 \n" - + "================================="; + + "CONSTANTS k, k2, k3, k4 \n" + + "ASSUME k = (IF k2 THEN k3 ELSE k4) /\\ k4 = 1 \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); - assertEquals("INTEGER",t.getConstantType("k")); - assertEquals("BOOL",t.getConstantType("k2")); - assertEquals("INTEGER",t.getConstantType("k3")); - assertEquals("INTEGER",t.getConstantType("k4")); + assertEquals("INTEGER", t.getConstantType("k")); + assertEquals("BOOL", t.getConstantType("k2")); + assertEquals("INTEGER", t.getConstantType("k3")); + assertEquals("INTEGER", t.getConstantType("k4")); } - + /* * IF THEN ELSE @@ -34,111 +33,111 @@ public class MiscellaneousConstructsTest { @Test public void testCase() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3, e1, e2 \n" - + "ASSUME k = (CASE k2 -> e1 [] k3 -> e2) /\\ e2 = 1 \n" - + "================================="; - TestTypeChecker t =TestUtil.typeCheckString(module); - assertEquals("INTEGER",t.getConstantType("k")); - assertEquals("BOOL",t.getConstantType("k2")); - assertEquals("BOOL",t.getConstantType("k3")); - assertEquals("INTEGER",t.getConstantType("e1")); - assertEquals("INTEGER",t.getConstantType("e2")); + + "CONSTANTS k, k2, k3, e1, e2 \n" + + "ASSUME k = (CASE k2 -> e1 [] k3 -> e2) /\\ e2 = 1 \n" + + "================================="; + TestTypeChecker t = TestUtil.typeCheckString(module); + assertEquals("INTEGER", t.getConstantType("k")); + assertEquals("BOOL", t.getConstantType("k2")); + assertEquals("BOOL", t.getConstantType("k3")); + assertEquals("INTEGER", t.getConstantType("e1")); + assertEquals("INTEGER", t.getConstantType("e2")); } - + @Test public void testCase2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3, e1, e2, e3 \n" - + "ASSUME k = (CASE k2 -> e1 [] k3 -> e2 [] OTHER -> e3) /\\ e2 = 1 \n" - + "================================="; - TestTypeChecker t =TestUtil.typeCheckString(module); - assertEquals("INTEGER",t.getConstantType("k")); - assertEquals("BOOL",t.getConstantType("k2")); - assertEquals("BOOL",t.getConstantType("k3")); - assertEquals("INTEGER",t.getConstantType("e1")); - assertEquals("INTEGER",t.getConstantType("e2")); - assertEquals("INTEGER",t.getConstantType("e3")); + + "CONSTANTS k, k2, k3, e1, e2, e3 \n" + + "ASSUME k = (CASE k2 -> e1 [] k3 -> e2 [] OTHER -> e3) /\\ e2 = 1 \n" + + "================================="; + TestTypeChecker t = TestUtil.typeCheckString(module); + assertEquals("INTEGER", t.getConstantType("k")); + assertEquals("BOOL", t.getConstantType("k2")); + assertEquals("BOOL", t.getConstantType("k3")); + assertEquals("INTEGER", t.getConstantType("e1")); + assertEquals("INTEGER", t.getConstantType("e2")); + assertEquals("INTEGER", t.getConstantType("e3")); } - + /* * LET d == exp IN e */ @Test public void testLetIn() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3 \n" - + "ASSUME k = (LET d == k2 IN d = k3) /\\ k2 = 1 \n" - + "================================="; - TestTypeChecker t =TestUtil.typeCheckString(module); - assertEquals("BOOL",t.getConstantType("k")); - assertEquals("INTEGER",t.getConstantType("k2")); - assertEquals("INTEGER",t.getConstantType("k3")); + + "CONSTANTS k, k2, k3 \n" + + "ASSUME k = (LET d == k2 IN d = k3) /\\ k2 = 1 \n" + + "================================="; + TestTypeChecker t = TestUtil.typeCheckString(module); + assertEquals("BOOL", t.getConstantType("k")); + assertEquals("INTEGER", t.getConstantType("k2")); + assertEquals("INTEGER", t.getConstantType("k3")); } - + @Test public void testLetIn2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3 \n" - + "ASSUME k = (LET d == k2 d2 == k3 IN d = d2) /\\ k2 = 1 \n" - + "================================="; - TestTypeChecker t =TestUtil.typeCheckString(module); - assertEquals("BOOL",t.getConstantType("k")); - assertEquals("INTEGER",t.getConstantType("k2")); - assertEquals("INTEGER",t.getConstantType("k3")); + + "CONSTANTS k, k2, k3 \n" + + "ASSUME k = (LET d == k2 d2 == k3 IN d = d2) /\\ k2 = 1 \n" + + "================================="; + TestTypeChecker t = TestUtil.typeCheckString(module); + assertEquals("BOOL", t.getConstantType("k")); + assertEquals("INTEGER", t.getConstantType("k2")); + assertEquals("INTEGER", t.getConstantType("k3")); } - + @Test public void testLetIn3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3, k4 \n" - + "ASSUME k = (LET d(a,b) == a=k2/\\b=k3 IN d(1,k4)) /\\ k4 = TRUE \n" - + "================================="; - TestTypeChecker t =TestUtil.typeCheckString(module); - assertEquals("BOOL",t.getConstantType("k")); - assertEquals("INTEGER",t.getConstantType("k2")); - assertEquals("BOOL",t.getConstantType("k3")); - assertEquals("BOOL",t.getConstantType("k4")); + + "CONSTANTS k, k2, k3, k4 \n" + + "ASSUME k = (LET d(a,b) == a=k2/\\b=k3 IN d(1,k4)) /\\ k4 = TRUE \n" + + "================================="; + TestTypeChecker t = TestUtil.typeCheckString(module); + assertEquals("BOOL", t.getConstantType("k")); + assertEquals("INTEGER", t.getConstantType("k2")); + assertEquals("BOOL", t.getConstantType("k3")); + assertEquals("BOOL", t.getConstantType("k4")); } - + @Test public void testBoundedChoose() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = CHOOSE x \\in {1}: TRUE \n" - + "================================="; - TestTypeChecker t =TestUtil.typeCheckString(module); - assertEquals("INTEGER",t.getConstantType("k")); + + "CONSTANTS k \n" + + "ASSUME k = CHOOSE x \\in {1}: TRUE \n" + + "================================="; + TestTypeChecker t = TestUtil.typeCheckString(module); + assertEquals("INTEGER", t.getConstantType("k")); } - + @Test public void testUnboundedChoose() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = CHOOSE x : x = 1 \n" - + "================================="; - TestTypeChecker t =TestUtil.typeCheckString(module); - assertEquals("INTEGER",t.getConstantType("k")); + + "CONSTANTS k \n" + + "ASSUME k = CHOOSE x : x = 1 \n" + + "================================="; + TestTypeChecker t = TestUtil.typeCheckString(module); + assertEquals("INTEGER", t.getConstantType("k")); } - + @Test public void testUnboundedChooseTuple() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = CHOOSE <<a,b>> : <<a,b>> = <<1,TRUE>> \n" - + "================================="; - TestTypeChecker t =TestUtil.typeCheckString(module); - assertEquals("INTEGER*BOOL",t.getConstantType("k")); + + "CONSTANTS k \n" + + "ASSUME k = CHOOSE <<a,b>> : <<a,b>> = <<1,TRUE>> \n" + + "================================="; + TestTypeChecker t = TestUtil.typeCheckString(module); + assertEquals("INTEGER*BOOL", t.getConstantType("k")); } - + @Test public void testBoundedChooseTuple() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = CHOOSE <<a,b>> \\in {<<1,TRUE>>}: TRUE \n" - + "================================="; - TestTypeChecker t =TestUtil.typeCheckString(module); - assertEquals("INTEGER*BOOL",t.getConstantType("k")); + + "CONSTANTS k \n" + + "ASSUME k = CHOOSE <<a,b>> \\in {<<1,TRUE>>}: TRUE \n" + + "================================="; + TestTypeChecker t = TestUtil.typeCheckString(module); + assertEquals("INTEGER*BOOL", t.getConstantType("k")); } - - + + } diff --git a/src/test/java/de/tla2b/typechecking/OpArgTest.java b/src/test/java/de/tla2b/typechecking/OpArgTest.java index 5c0abe06e76de4bfcfae97786c6cd98d2bfa3774..bbfeb6e3a2191db0034f8795f7ca449ffed5c114 100644 --- a/src/test/java/de/tla2b/typechecking/OpArgTest.java +++ b/src/test/java/de/tla2b/typechecking/OpArgTest.java @@ -1,21 +1,20 @@ package de.tla2b.typechecking; -import static org.junit.Assert.assertEquals; - -import org.junit.Test; - import de.tla2b.exceptions.ConfigFileErrorException; import de.tla2b.util.TestTypeChecker; import de.tla2b.util.TestUtil; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; public class OpArgTest { @Test public void TestConOverridenByLessOp() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k(_,_), k2 \n" - + "ASSUME k2 = k(1,2)\n" + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k(_,_), k2 \n" + + "ASSUME k2 = k(1,2)\n" + "================================="; final String config = "CONSTANTS k <- <"; TestTypeChecker t = TestUtil.typeCheckString(module, config); assertEquals("BOOL", t.getConstantType("k2")); @@ -24,9 +23,9 @@ public class OpArgTest { @Test(expected = ConfigFileErrorException.class) public void TestOverridenConstantWrongArityException() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k(_,_) \n" - + "def == TRUE /\\ FALSE \n" - + "================================="; + + "CONSTANTS k(_,_) \n" + + "def == TRUE /\\ FALSE \n" + + "================================="; final String config = "CONSTANTS k <- def"; TestUtil.typeCheckString(module, config); } @@ -34,10 +33,10 @@ public class OpArgTest { @Test(expected = ConfigFileErrorException.class) public void TestOverridenDefWrongArityException() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "foo(a, b) == a /\\ b \n" - + "def == TRUE /\\ FALSE \n" - + "ASSUME foo(TRUE, FALSE) \n" - + "================================="; + + "foo(a, b) == a /\\ b \n" + + "def == TRUE /\\ FALSE \n" + + "ASSUME foo(TRUE, FALSE) \n" + + "================================="; final String config = "CONSTANTS foo <- def"; TestUtil.typeCheckString(module, config); } @@ -45,10 +44,10 @@ public class OpArgTest { @Test public void TestOverridenByDef() throws Exception { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k(_,_), k2 \n" - + "def(a,b) == a /\\ b \n" - + "ASSUME k2 = k(TRUE,TRUE)\n" - + "================================="; + + "CONSTANTS k(_,_), k2 \n" + + "def(a,b) == a /\\ b \n" + + "ASSUME k2 = k(TRUE,TRUE)\n" + + "================================="; final String config = "CONSTANTS k <- def"; TestTypeChecker t = TestUtil.typeCheckString(module, config); assertEquals("BOOL", t.getConstantType("k2")); diff --git a/src/test/java/de/tla2b/typechecking/SetTest.java b/src/test/java/de/tla2b/typechecking/SetTest.java index dec46415c3bf6e891716a323f5248132e00d87a1..66a95f4267ef1c0dcdaadb3c117ea21cbfd458a8 100644 --- a/src/test/java/de/tla2b/typechecking/SetTest.java +++ b/src/test/java/de/tla2b/typechecking/SetTest.java @@ -1,13 +1,12 @@ package de.tla2b.typechecking; -import static org.junit.Assert.*; - -import org.junit.Test; - import de.tla2b.exceptions.TLA2BException; import de.tla2b.exceptions.TypeErrorException; import de.tla2b.util.TestTypeChecker; import de.tla2b.util.TestUtil; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; public class SetTest { @@ -18,9 +17,9 @@ public class SetTest { @Test public void testSetEnumeration() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3\n" - + "ASSUME k = {k2, k3} /\\ k3 = 1\n" - + "================================="; + + "CONSTANTS k, k2, k3\n" + + "ASSUME k = {k2, k3} /\\ k3 = 1\n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER)", t.getConstantType("k")); @@ -32,9 +31,9 @@ public class SetTest { @Test public void testSetEnumeration2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3\n" - + "ASSUME k = {k2, k3} /\\ k = {1}\n" - + "================================="; + + "CONSTANTS k, k2, k3\n" + + "ASSUME k = {k2, k3} /\\ k = {1}\n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER)", t.getConstantType("k")); @@ -45,9 +44,9 @@ public class SetTest { @Test public void testSetEnumeration3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3\n" - + "ASSUME k = {k2,{k3}} /\\ k3 = 1\n" - + "================================="; + + "CONSTANTS k, k2, k3\n" + + "ASSUME k = {k2,{k3}} /\\ k3 = 1\n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(POW(INTEGER))", t.getConstantType("k")); @@ -58,9 +57,9 @@ public class SetTest { @Test public void testSetEnumeration4() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2\n" - + "ASSUME k = {{1},{k2}}\n" - + "================================="; + + "CONSTANTS k, k2\n" + + "ASSUME k = {{1},{k2}}\n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(POW(INTEGER))", t.getConstantType("k")); @@ -71,9 +70,9 @@ public class SetTest { public void testSetEnumerationException() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2\n" - + "ASSUME k = {1, TRUE}\n" - + "================================="; + + "CONSTANTS k, k2\n" + + "ASSUME k = {1, TRUE}\n" + + "================================="; TestUtil.typeCheckString(module); } @@ -82,9 +81,9 @@ public class SetTest { public void testSetEnumerationException2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2\n" - + "ASSUME 1 = {1, 2}\n" - + "================================="; + + "CONSTANTS k, k2\n" + + "ASSUME 1 = {1, 2}\n" + + "================================="; TestUtil.typeCheckString(module); } @@ -94,9 +93,9 @@ public class SetTest { @Test public void testElementOfSet() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2\n" - + "ASSUME k \\in {k2} /\\ k2 = 1 \n" - + "================================="; + + "CONSTANTS k, k2\n" + + "ASSUME k \\in {k2} /\\ k2 = 1 \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER", t.getConstantType("k")); assertEquals("INTEGER", t.getConstantType("k2")); @@ -105,9 +104,9 @@ public class SetTest { @Test public void testElementOfSet2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2\n" - + "ASSUME k \\in {k2} /\\ k = 1 \n" - + "================================="; + + "CONSTANTS k, k2\n" + + "ASSUME k \\in {k2} /\\ k = 1 \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER", t.getConstantType("k")); assertEquals("INTEGER", t.getConstantType("k2")); @@ -116,9 +115,9 @@ public class SetTest { @Test public void testElementOfSet3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k \\in {<<TRUE>>}\n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k \\in {<<TRUE>>}\n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k")); @@ -128,8 +127,8 @@ public class SetTest { public void testElementOfSetError() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME 1 = (1 \\in {1}) \n" - + "================================="; + + "ASSUME 1 = (1 \\in {1}) \n" + + "================================="; TestUtil.typeCheckString(module); } @@ -137,7 +136,7 @@ public class SetTest { public void testElementOfSetError2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME 1 \\in 1 \n" + "================================="; + + "ASSUME 1 \\in 1 \n" + "================================="; TestUtil.typeCheckString(module); } @@ -147,9 +146,9 @@ public class SetTest { @Test public void testSetOperators() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3\n" - + "ASSUME k = (k2 \\cup k3) /\\ k3 = {1} \n" - + "================================="; + + "CONSTANTS k, k2, k3\n" + + "ASSUME k = (k2 \\cup k3) /\\ k3 = {1} \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER)", t.getConstantType("k")); assertEquals("POW(INTEGER)", t.getConstantType("k2")); @@ -159,9 +158,9 @@ public class SetTest { @Test public void testSetOperators2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2\n" - + "ASSUME k = (k \\cup k2) /\\ k2 = {1} \n" - + "================================="; + + "CONSTANTS k, k2\n" + + "ASSUME k = (k \\cup k2) /\\ k2 = {1} \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER)", t.getConstantType("k")); assertEquals("POW(INTEGER)", t.getConstantType("k2")); @@ -171,9 +170,9 @@ public class SetTest { public void testSetOperatorsException() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2\n" - + "ASSUME 1 = k \\cup k2 \n" - + "================================="; + + "CONSTANTS k, k2\n" + + "ASSUME 1 = k \\cup k2 \n" + + "================================="; TestUtil.typeCheckString(module); } @@ -181,9 +180,9 @@ public class SetTest { public void testSetOperatorsException2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k\n" - + "ASSUME k = {1} \\cup {TRUE} \n" - + "================================="; + + "CONSTANTS k\n" + + "ASSUME k = {1} \\cup {TRUE} \n" + + "================================="; TestUtil.typeCheckString(module); } @@ -193,10 +192,10 @@ public class SetTest { @Test public void testSubsetOf() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, S\n" - + "ASSUME k = {x \\in S : x = 1} \n" - + "================================="; - TestTypeChecker t =TestUtil.typeCheckString(module); + + "CONSTANTS k, S\n" + + "ASSUME k = {x \\in S : x = 1} \n" + + "================================="; + TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER)", t.getConstantType("k")); assertEquals("POW(INTEGER)", t.getConstantType("S")); } @@ -204,9 +203,9 @@ public class SetTest { @Test public void testSubsetOf2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2\n" - + "ASSUME k = {x \\in {TRUE} : x = k2} \n" - + "================================="; + + "CONSTANTS k, k2\n" + + "ASSUME k = {x \\in {TRUE} : x = k2} \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(BOOL)", t.getConstantType("k")); assertEquals("BOOL", t.getConstantType("k2")); @@ -215,9 +214,9 @@ public class SetTest { @Test public void testSubsetOf3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, S, k2\n" - + "ASSUME k = {x \\in S : x = k2} /\\ k2 = TRUE \n" - + "================================="; + + "CONSTANTS k, S, k2\n" + + "ASSUME k = {x \\in S : x = k2} /\\ k2 = TRUE \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(BOOL)", t.getConstantType("k")); assertEquals("POW(BOOL)", t.getConstantType("S")); @@ -227,21 +226,21 @@ public class SetTest { @Test public void testSubsetOf4() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, S\n" - + "ASSUME k = {x \\in S : TRUE} /\\ k = {TRUE} \n" - + "================================="; + + "CONSTANTS k, S\n" + + "ASSUME k = {x \\in S : TRUE} /\\ k = {TRUE} \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(BOOL)", t.getConstantType("k")); assertEquals("POW(BOOL)", t.getConstantType("S")); } - @Test (expected = TypeErrorException.class) + @Test(expected = TypeErrorException.class) public void testSubsetOfException() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k\n" - + "ASSUME k = {<<x,y>> \\in {TRUE} : TRUE} \n" - + "================================="; + + "CONSTANTS k\n" + + "ASSUME k = {<<x,y>> \\in {TRUE} : TRUE} \n" + + "================================="; TestUtil.typeCheckString(module); } @@ -249,67 +248,67 @@ public class SetTest { public void testSubsetOfException2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k\n" - + "ASSUME k = {x \\in 1 : TRUE} \n" - + "================================="; + + "CONSTANTS k\n" + + "ASSUME k = {x \\in 1 : TRUE} \n" + + "================================="; TestUtil.typeCheckString(module); } - @Test (expected = TypeErrorException.class) + @Test(expected = TypeErrorException.class) public void testSubsetOfException3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k\n" - + "ASSUME k = {x \\in {} : 1 = 1} \n" - + "================================="; + + "CONSTANTS k\n" + + "ASSUME k = {x \\in {} : 1 = 1} \n" + + "================================="; TestUtil.typeCheckString(module); } - @Test + @Test public void testSubsetOfTuple() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k\n" - + "ASSUME k = {<<x,y>> \\in {1} \\times {TRUE} : TRUE} \n" - + "================================="; + + "CONSTANTS k\n" + + "ASSUME k = {<<x,y>> \\in {1} \\times {TRUE} : TRUE} \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k")); } - - @Test + + @Test public void testSubsetOfTuple2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, S, S2\n" - + "ASSUME k = {<<x,y>> \\in S \\times S2 : x = 1 /\\ y = TRUE} \n" - + "================================="; + + "CONSTANTS k, S, S2\n" + + "ASSUME k = {<<x,y>> \\in S \\times S2 : x = 1 /\\ y = TRUE} \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k")); assertEquals("POW(INTEGER)", t.getConstantType("S")); assertEquals("POW(BOOL)", t.getConstantType("S2")); } - - @Test + + @Test public void testSubsetOfTuple3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, S\n" - + "ASSUME k = {<<x,y>> \\in S : x = 1 /\\ y = TRUE} \n" - + "================================="; + + "CONSTANTS k, S\n" + + "ASSUME k = {<<x,y>> \\in S : x = 1 /\\ y = TRUE} \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k")); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("S")); } - + /* * set constructor: {e : x \in S} */ @Test public void testSetOfAll() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, S, k2\n" - + "ASSUME k = {x = k2 : x \\in S} /\\ k2 = 1 \n" - + "================================="; + + "CONSTANTS k, S, k2\n" + + "ASSUME k = {x = k2 : x \\in S} /\\ k2 = 1 \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(BOOL)", t.getConstantType("k")); assertEquals("POW(INTEGER)", t.getConstantType("S")); @@ -319,9 +318,9 @@ public class SetTest { @Test public void testSetOfAll2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, S\n" - + "ASSUME k = {{x} : x \\in S} /\\ S = {1} \n" - + "================================="; + + "CONSTANTS k, S\n" + + "ASSUME k = {{x} : x \\in S} /\\ S = {1} \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(POW(INTEGER))", t.getConstantType("k")); assertEquals("POW(INTEGER)", t.getConstantType("S")); @@ -330,9 +329,9 @@ public class SetTest { @Test public void testSetOfAll3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, S, k2\n" - + "ASSUME k = { x = y /\\ y = k2 : x,y \\in S} /\\ k2 = 1 \n" - + "================================="; + + "CONSTANTS k, S, k2\n" + + "ASSUME k = { x = y /\\ y = k2 : x,y \\in S} /\\ k2 = 1 \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(BOOL)", t.getConstantType("k")); assertEquals("POW(INTEGER)", t.getConstantType("S")); @@ -342,9 +341,9 @@ public class SetTest { @Test public void testSetOfAll4() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, S, S2, k2, k3\n" - + "ASSUME k = { x = k2 /\\ y /\\ z = k3 : x \\in S, y,z \\in S2 } /\\ k2 = TRUE \n" - + "================================="; + + "CONSTANTS k, S, S2, k2, k3\n" + + "ASSUME k = { x = k2 /\\ y /\\ z = k3 : x \\in S, y,z \\in S2 } /\\ k2 = TRUE \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(BOOL)", t.getConstantType("k")); assertEquals("POW(BOOL)", t.getConstantType("S")); @@ -356,9 +355,9 @@ public class SetTest { public void testSetOfAllException() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, S\n" - + "ASSUME 1 = {x : x \\in S} \n" - + "================================="; + + "CONSTANTS k, S\n" + + "ASSUME 1 = {x : x \\in S} \n" + + "================================="; TestUtil.typeCheckString(module); } @@ -366,9 +365,9 @@ public class SetTest { public void testSetOfAllException2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, S\n" - + "ASSUME k = {x : x \\in 1} \n" - + "================================="; + + "CONSTANTS k, S\n" + + "ASSUME k = {x : x \\in 1} \n" + + "================================="; TestUtil.typeCheckString(module); } @@ -376,9 +375,9 @@ public class SetTest { public void testSetOfAllException3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, S\n" - + "ASSUME k = {x : <<x,y>> \\in S} \n" - + "================================="; + + "CONSTANTS k, S\n" + + "ASSUME k = {x : <<x,y>> \\in S} \n" + + "================================="; TestUtil.typeCheckString(module); } @@ -388,9 +387,9 @@ public class SetTest { @Test public void testSubset() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = SUBSET k2 /\\ k2 = 1 \n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "ASSUME k = SUBSET k2 /\\ k2 = 1 \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER)", t.getConstantType("k")); assertEquals("INTEGER", t.getConstantType("k2")); @@ -399,9 +398,9 @@ public class SetTest { @Test public void testSubset2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = SUBSET k2 /\\ k = {1} \n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "ASSUME k = SUBSET k2 /\\ k = {1} \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER)", t.getConstantType("k")); assertEquals("INTEGER", t.getConstantType("k2")); @@ -410,9 +409,9 @@ public class SetTest { @Test(expected = TypeErrorException.class) public void testSubsetException() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME 1 = SUBSET k \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME 1 = SUBSET k \n" + + "================================="; TestUtil.typeCheckString(module); } @@ -422,9 +421,9 @@ public class SetTest { @Test public void testUnion() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = UNION k2 /\\ k = {1} \n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "ASSUME k = UNION k2 /\\ k = {1} \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER)", t.getConstantType("k")); assertEquals("POW(POW(INTEGER))", t.getConstantType("k2")); @@ -433,9 +432,9 @@ public class SetTest { @Test public void testUnion2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = UNION k2 /\\ k2 = {{1},{2}} \n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "ASSUME k = UNION k2 /\\ k2 = {{1},{2}} \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER)", t.getConstantType("k")); assertEquals("POW(POW(INTEGER))", t.getConstantType("k2")); @@ -444,18 +443,18 @@ public class SetTest { @Test(expected = TypeErrorException.class) public void testUnionException() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = UNION k2 /\\ k = 1 \n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "ASSUME k = UNION k2 /\\ k = 1 \n" + + "================================="; TestUtil.typeCheckString(module); } @Test(expected = TypeErrorException.class) public void testUnionException2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = UNION k2 /\\ k2 = {1,2} \n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "ASSUME k = UNION k2 /\\ k2 = {1,2} \n" + + "================================="; TestUtil.typeCheckString(module); } @@ -465,9 +464,9 @@ public class SetTest { @Test public void testSubseteq() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3 \n" - + "ASSUME k = (k2 \\subseteq k3) /\\ k3 = {1} \n" - + "================================="; + + "CONSTANTS k, k2, k3 \n" + + "ASSUME k = (k2 \\subseteq k3) /\\ k3 = {1} \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("BOOL", t.getConstantType("k")); assertEquals("POW(INTEGER)", t.getConstantType("k2")); @@ -478,9 +477,9 @@ public class SetTest { public void testSubseteqException() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = (k2 \\subseteq 1) \n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "ASSUME k = (k2 \\subseteq 1) \n" + + "================================="; TestUtil.typeCheckString(module); } @@ -488,9 +487,9 @@ public class SetTest { public void testSubseteqException2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "ASSUME 1 = (k \\subseteq k2) \n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "ASSUME 1 = (k \\subseteq k2) \n" + + "================================="; TestUtil.typeCheckString(module); } diff --git a/src/test/java/de/tla2b/typechecking/StringTest.java b/src/test/java/de/tla2b/typechecking/StringTest.java index d6f55367ee980e1f6d851033d68789d00a6ee1d3..7674cc692f7443226f7a84ddc95bf0b357387c45 100644 --- a/src/test/java/de/tla2b/typechecking/StringTest.java +++ b/src/test/java/de/tla2b/typechecking/StringTest.java @@ -1,17 +1,16 @@ package de.tla2b.typechecking; -import static org.junit.Assert.assertEquals; - -import org.junit.Test; - import de.tla2b.exceptions.TLA2BException; import de.tla2b.exceptions.TypeErrorException; import de.tla2b.util.TestTypeChecker; import de.tla2b.util.TestUtil; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; public class StringTest { - + /* * a String: "abc" */ @@ -19,71 +18,70 @@ public class StringTest { @Test public void testAString() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = \"abc\" \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = \"abc\" \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("STRING", t.getConstantType("k")); } - - @Test (expected = TypeErrorException.class) + + @Test(expected = TypeErrorException.class) public void testAStringException() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME 1 = \"abc\" \n" - + "================================="; + + "ASSUME 1 = \"abc\" \n" + + "================================="; TestUtil.typeCheckString(module); } - + @Test public void testStringAsSequence() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "ASSUME \"a\" \\o \"bc\" = \"abc\" \n" - + "================================="; + + "EXTENDS Sequences \n" + + "ASSUME \"a\" \\o \"bc\" = \"abc\" \n" + + "================================="; TestUtil.typeCheckString(module); } - + @Test public void testStringAsSequence2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "ASSUME SubSeq(\"abc\",1,1) = \"a\" \n" - + "================================="; + + "EXTENDS Sequences \n" + + "ASSUME SubSeq(\"abc\",1,1) = \"a\" \n" + + "================================="; TestUtil.typeCheckString(module); } - + @Test public void testStringAsSequence3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "ASSUME Len(\"abc\") = 3 \n" - + "================================="; + + "EXTENDS Sequences \n" + + "ASSUME Len(\"abc\") = 3 \n" + + "================================="; TestUtil.typeCheckString(module); } - - + + /* * STRING */ - @Test + @Test public void testString() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = STRING \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = STRING \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(STRING)", t.getConstantType("k")); } - - @Test (expected = TypeErrorException.class) + + @Test(expected = TypeErrorException.class) public void testStringException() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME 1 = STRING \n" - + "================================="; + + "ASSUME 1 = STRING \n" + + "================================="; TestUtil.typeCheckString(module); } - - - + + } diff --git a/src/test/java/de/tla2b/typechecking/StructTest.java b/src/test/java/de/tla2b/typechecking/StructTest.java index bffb148b7dde748fc2bb8751d1eaef8a6b090342..c60bd8840f13f5119a62d9965956f7c9a0377c73 100644 --- a/src/test/java/de/tla2b/typechecking/StructTest.java +++ b/src/test/java/de/tla2b/typechecking/StructTest.java @@ -1,15 +1,14 @@ package de.tla2b.typechecking; -import static org.junit.Assert.assertEquals; - -import org.junit.Test; - import de.tla2b.exceptions.TLA2BException; import de.tla2b.exceptions.TypeErrorException; import de.tla2b.util.TestTypeChecker; import de.tla2b.util.TestUtil; +import org.junit.Test; import util.ToolIO; +import static org.junit.Assert.assertEquals; + public class StructTest { static { ToolIO.setMode(ToolIO.TOOL); @@ -21,9 +20,9 @@ public class StructTest { @Test public void testStruct() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = [a : {1}, b : BOOLEAN] \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = [a : {1}, b : BOOLEAN] \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(struct(a:INTEGER,b:BOOL))", t.getConstantType("k")); } @@ -32,21 +31,21 @@ public class StructTest { public void testStruct2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3 \n" - + "ASSUME k = [a : k2, b : k3] /\\ k2 = {1} /\\ k3 = BOOLEAN \n" - + "================================="; + + "CONSTANTS k, k2, k3 \n" + + "ASSUME k = [a : k2, b : k3] /\\ k2 = {1} /\\ k3 = BOOLEAN \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); - + assertEquals("POW(struct(a:INTEGER,b:BOOL))", t.getConstantType("k")); } @Test public void testStruct3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "ASSUME [a : {1}, b : BOOLEAN] = [a : k, b : k2] \n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "ASSUME [a : {1}, b : BOOLEAN] = [a : k, b : k2] \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER)", t.getConstantType("k")); assertEquals("POW(BOOL)", t.getConstantType("k2")); @@ -55,26 +54,26 @@ public class StructTest { @Test(expected = TypeErrorException.class) public void testStructException() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME 1 = [a : 1, b : TRUE] \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME 1 = [a : 1, b : TRUE] \n" + + "================================="; TestUtil.typeCheckString(module); } @Test(expected = TypeErrorException.class) public void testStructException2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME [a : {1}, b : BOOLEAN] = [a : BOOLEAN, b : BOOLEAN] \n" - + "================================="; + + "ASSUME [a : {1}, b : BOOLEAN] = [a : BOOLEAN, b : BOOLEAN] \n" + + "================================="; TestUtil.typeCheckString(module); } @Test(expected = TypeErrorException.class) public void testStructException3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "ASSUME [aa : {1}, b : BOOLEAN] = [a : {1}, b : BOOLEAN] \n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "ASSUME [aa : {1}, b : BOOLEAN] = [a : {1}, b : BOOLEAN] \n" + + "================================="; TestUtil.typeCheckString(module); } @@ -86,9 +85,9 @@ public class StructTest { @Test public void testRecord() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = [a |-> 1, b |-> TRUE] \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = [a |-> 1, b |-> TRUE] \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("struct(a:INTEGER,b:BOOL)", t.getConstantType("k")); @@ -97,9 +96,9 @@ public class StructTest { @Test public void testRecord2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3 \n" - + "ASSUME k = [a |-> k2, b |-> k3] /\\ k2 = 1 /\\ k3 = TRUE \n" - + "================================="; + + "CONSTANTS k, k2, k3 \n" + + "ASSUME k = [a |-> k2, b |-> k3] /\\ k2 = 1 /\\ k3 = TRUE \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("struct(a:INTEGER,b:BOOL)", t.getConstantType("k")); } @@ -107,17 +106,17 @@ public class StructTest { @Test(expected = TypeErrorException.class) public void testRecordException() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME 1 = [b |-> 1, a |-> TRUE] \n" - + "================================="; + + "ASSUME 1 = [b |-> 1, a |-> TRUE] \n" + + "================================="; TestUtil.typeCheckString(module); } @Test public void testRecord3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "ASSUME [a |-> k, b |-> k2] \\in [a: {1}, b: BOOLEAN] \n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "ASSUME [a |-> k, b |-> k2] \\in [a: {1}, b: BOOLEAN] \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER", t.getConstantType("k")); assertEquals("BOOL", t.getConstantType("k2")); @@ -130,9 +129,9 @@ public class StructTest { @Test public void testRecordSelect() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = [a |-> 1, b |-> TRUE] /\\ k2 = k.a \n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "ASSUME k = [a |-> 1, b |-> TRUE] /\\ k2 = k.a \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("struct(a:INTEGER,b:BOOL)", t.getConstantType("k")); assertEquals("INTEGER", t.getConstantType("k2")); @@ -141,9 +140,9 @@ public class StructTest { @Test public void testRecordSelect2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "ASSUME k2 = k.a /\\ k = [a |-> 1, b |-> TRUE] \n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "ASSUME k2 = k.a /\\ k = [a |-> 1, b |-> TRUE] \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("struct(a:INTEGER,b:BOOL)", t.getConstantType("k")); assertEquals("INTEGER", t.getConstantType("k2")); @@ -152,11 +151,11 @@ public class StructTest { @Test public void testRecordSelect3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3 \n" - + "ASSUME k = [a |-> k2, b |-> k3] /\\ k.a = 1 /\\ k.b = TRUE \n" - + "================================="; + + "CONSTANTS k, k2, k3 \n" + + "ASSUME k = [a |-> k2, b |-> k3] /\\ k.a = 1 /\\ k.b = TRUE \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); - + assertEquals("struct(a:INTEGER,b:BOOL)", t.getConstantType("k")); assertEquals("INTEGER", t.getConstantType("k2")); assertEquals("BOOL", t.getConstantType("k3")); @@ -165,9 +164,9 @@ public class StructTest { @Test public void testRecordSelect4() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3 \n" - + "ASSUME k \\in [a : k2, b : k3] /\\ k.a = 1 /\\ k.b = TRUE \n" - + "================================="; + + "CONSTANTS k, k2, k3 \n" + + "ASSUME k \\in [a : k2, b : k3] /\\ k.a = 1 /\\ k.b = TRUE \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("struct(a:INTEGER,b:BOOL)", t.getConstantType("k")); assertEquals("POW(INTEGER)", t.getConstantType("k2")); @@ -178,18 +177,18 @@ public class StructTest { public void testRecordSelectException3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = [a |-> 1] /\\ TRUE = k.b \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = [a |-> 1] /\\ TRUE = k.b \n" + + "================================="; TestUtil.typeCheckString(module); } @Test public void testRecordSelect5() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME 1 = k.a /\\ TRUE = k.b /\\ k = [a |-> 1] \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME 1 = k.a /\\ TRUE = k.b /\\ k = [a |-> 1] \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("struct(a:INTEGER,b:BOOL)", t.getConstantType("k")); } @@ -198,9 +197,9 @@ public class StructTest { public void testRecordSelectException() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME TRUE = k.a /\\ k = [a |-> 1] \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME TRUE = k.a /\\ k = [a |-> 1] \n" + + "================================="; TestUtil.typeCheckString(module); } @@ -209,9 +208,9 @@ public class StructTest { TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = [a |-> 1] /\\ TRUE = k.a \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = [a |-> 1] /\\ TRUE = k.a \n" + + "================================="; TestUtil.typeCheckString(module); } @@ -222,9 +221,9 @@ public class StructTest { @Test public void testRecordExcept() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3, k4 \n" - + "ASSUME k = [a|-> k2, b|-> k3] /\\ k4 = [k EXCEPT !.a = 1, !.b = TRUE]\n" - + "================================="; + + "CONSTANTS k, k2, k3, k4 \n" + + "ASSUME k = [a|-> k2, b|-> k3] /\\ k4 = [k EXCEPT !.a = 1, !.b = TRUE]\n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("struct(a:INTEGER,b:BOOL)", t.getConstantType("k")); assertEquals("struct(a:INTEGER,b:BOOL)", t.getConstantType("k4")); @@ -235,9 +234,9 @@ public class StructTest { @Test public void testRecordExcept2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "ASSUME k.a = 1/\\ k2 = [k EXCEPT !.a = 1, !.b = TRUE] /\\ k2 = [a|->2, b |-> FALSE]\n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "ASSUME k.a = 1/\\ k2 = [k EXCEPT !.a = 1, !.b = TRUE] /\\ k2 = [a|->2, b |-> FALSE]\n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("struct(a:INTEGER,b:BOOL)", t.getConstantType("k")); assertEquals("struct(a:INTEGER,b:BOOL)", t.getConstantType("k2")); @@ -250,9 +249,9 @@ public class StructTest { @Test public void testRecordExceptAt() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3 \n" - + "ASSUME k = [a|-> TRUE] /\\ k2 = [k EXCEPT !.a = @ = k3]\n" - + "================================="; + + "CONSTANTS k, k2, k3 \n" + + "ASSUME k = [a|-> TRUE] /\\ k2 = [k EXCEPT !.a = @ = k3]\n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("struct(a:BOOL)", t.getConstantType("k")); assertEquals("struct(a:BOOL)", t.getConstantType("k2")); @@ -263,19 +262,19 @@ public class StructTest { public void testRecordExceptAtException() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3 \n" - + "ASSUME k = [a|-> TRUE] /\\ k2 = [k EXCEPT !.a = @ = 1]\n" - + "================================="; + + "CONSTANTS k, k2, k3 \n" + + "ASSUME k = [a|-> TRUE] /\\ k2 = [k EXCEPT !.a = @ = 1]\n" + + "================================="; TestUtil.typeCheckString(module); } - - @Test (expected = TypeErrorException.class) + + @Test(expected = TypeErrorException.class) public void testRecord5() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = [k EXCEPT !.a = 1] /\\ k ={k2} \n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "ASSUME k = [k EXCEPT !.a = 1] /\\ k ={k2} \n" + + "================================="; TestUtil.typeCheckString(module); } } diff --git a/src/test/java/de/tla2b/typechecking/TupleTest.java b/src/test/java/de/tla2b/typechecking/TupleTest.java index f418326a0ff6ca0a9d6dc6f9ea6fff13ea649484..63fd765fa123a464b35286f5cc059718bb0df35f 100644 --- a/src/test/java/de/tla2b/typechecking/TupleTest.java +++ b/src/test/java/de/tla2b/typechecking/TupleTest.java @@ -1,13 +1,12 @@ package de.tla2b.typechecking; -import static org.junit.Assert.assertEquals; - -import org.junit.Test; - import de.tla2b.exceptions.TLA2BException; import de.tla2b.exceptions.TypeErrorException; import de.tla2b.util.TestTypeChecker; import de.tla2b.util.TestUtil; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; public class TupleTest { @@ -15,35 +14,35 @@ public class TupleTest { @Test public void testSimpleTuple() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k \n" - + "ASSUME k = <<1,TRUE>> \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k \n" + + "ASSUME k = <<1,TRUE>> \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER*BOOL", t.getConstantType("k")); } - - + + @Test public void testTupleFunctionCall() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k \n" - + "ASSUME k = <<1,TRUE,1>>[2] \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k \n" + + "ASSUME k = <<1,TRUE,1>>[2] \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("BOOL", t.getConstantType("k")); } - + @Test public void testTupleFunctionCall2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k \n" - + "ASSUME k = <<1,TRUE,\"str\">>[3] \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k \n" + + "ASSUME k = <<1,TRUE,\"str\">>[3] \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("STRING", t.getConstantType("k")); @@ -52,22 +51,22 @@ public class TupleTest { @Test public void testTuple3Components() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k \n" - + "ASSUME k = <<1,TRUE,1>> \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k \n" + + "ASSUME k = <<1,TRUE,1>> \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER*BOOL*INTEGER", t.getConstantType("k")); } - + @Test public void testTuple3Components2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k \n" - + "ASSUME k = <<1,1,1>> \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k \n" + + "ASSUME k = <<1,1,1>> \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*INTEGER)", t.getConstantType("k")); @@ -77,9 +76,9 @@ public class TupleTest { public void testTupleComponentsOfTheSameType() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k \n" - + "ASSUME k = <<1,1>> \n" + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k \n" + + "ASSUME k = <<1,1>> \n" + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*INTEGER)", t.getConstantType("k")); @@ -88,10 +87,10 @@ public class TupleTest { @Test public void testTuple1() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = <<1,k2>> /\\ k2 = TRUE \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k, k2 \n" + + "ASSUME k = <<1,k2>> /\\ k2 = TRUE \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER*BOOL", t.getConstantType("k")); @@ -101,10 +100,10 @@ public class TupleTest { @Test public void testCartesianProduct() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k \n" - + "ASSUME k = {1} \\times BOOLEAN \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k \n" + + "ASSUME k = {1} \\times BOOLEAN \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k")); @@ -114,9 +113,9 @@ public class TupleTest { public void testTupleSingleElement() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = <<TRUE>> \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = <<TRUE>> \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k")); @@ -125,9 +124,9 @@ public class TupleTest { @Test(expected = TypeErrorException.class) public void testTuple2Elements() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3 \n" - + "ASSUME k = <<k2, k3>> /\\ k3 = TRUE \n" - + "================================="; + + "CONSTANTS k, k2, k3 \n" + + "ASSUME k = <<k2, k3>> /\\ k3 = TRUE \n" + + "================================="; TestUtil.typeCheckString(module); } @@ -135,9 +134,9 @@ public class TupleTest { @Test public void testUnifyTuple3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2, k3 \n" - + "ASSUME k = <<k2, <<k3>> >> /\\ k3 = TRUE /\\ k2 = 1\n" - + "================================="; + + "CONSTANTS k, k2, k3 \n" + + "ASSUME k = <<k2, <<k3>> >> /\\ k3 = TRUE /\\ k2 = 1\n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER*POW(INTEGER*BOOL)", t.getConstantType("k")); @@ -148,9 +147,9 @@ public class TupleTest { @Test(expected = TypeErrorException.class) public void testUnifyTuple4() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k \\in <<TRUE>>\n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k \\in <<TRUE>>\n" + + "================================="; TestUtil.typeCheckString(module); } @@ -162,9 +161,9 @@ public class TupleTest { public void testCartesianProduct2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = BOOLEAN \\X {1} \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = BOOLEAN \\X {1} \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(BOOL*INTEGER)", t.getConstantType("k")); } @@ -173,9 +172,9 @@ public class TupleTest { public void testCartesianProduct3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k, k2 \n" - + "ASSUME BOOLEAN \\X {1} = k \\X k2 \n" - + "================================="; + + "CONSTANTS k, k2 \n" + + "ASSUME BOOLEAN \\X {1} = k \\X k2 \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(BOOL)", t.getConstantType("k")); assertEquals("POW(INTEGER)", t.getConstantType("k2")); @@ -185,9 +184,9 @@ public class TupleTest { public void testCartesianProductException() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = BOOLEAN \\X 1 \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = BOOLEAN \\X 1 \n" + + "================================="; TestUtil.typeCheckString(module); } diff --git a/src/test/java/de/tla2b/typechecking/TupleVsSequenceTest.java b/src/test/java/de/tla2b/typechecking/TupleVsSequenceTest.java index 235215b7d67266284e277dbf0658762b70cfaba4..5a379ab9256b0c48644ec768625d2f2674289e47 100644 --- a/src/test/java/de/tla2b/typechecking/TupleVsSequenceTest.java +++ b/src/test/java/de/tla2b/typechecking/TupleVsSequenceTest.java @@ -1,91 +1,90 @@ package de.tla2b.typechecking; -import static org.junit.Assert.assertEquals; - -import org.junit.Test; - import de.tla2b.exceptions.TLA2BException; import de.tla2b.exceptions.TypeErrorException; import de.tla2b.util.TestTypeChecker; import de.tla2b.util.TestUtil; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; public class TupleVsSequenceTest { - @Test + @Test public void testTupleVsSequence() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k \n" - + "ASSUME k = Append(<<>>, TRUE) \n" - + "================================="; + + "EXTENDS Sequences \n" + + "CONSTANTS k \n" + + "ASSUME k = Append(<<>>, TRUE) \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k")); } - - @Test + + @Test public void testTupleVsSequence2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = Append(<<1,2,3>>, k2) \n" - + "================================="; + + "EXTENDS Sequences \n" + + "CONSTANTS k, k2 \n" + + "ASSUME k = Append(<<1,2,3>>, k2) \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*INTEGER)", t.getConstantType("k")); assertEquals("INTEGER", t.getConstantType("k2")); } - - @Test + + @Test public void testTupleVsSequence3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS a, b, c\n" - + "ASSUME <<1,2,3,4>> = <<a,b,c>> \n" - + "================================="; + + "CONSTANTS a, b, c\n" + + "ASSUME <<1,2,3,4>> = <<a,b,c>> \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER", t.getConstantType("a")); assertEquals("INTEGER", t.getConstantType("b")); assertEquals("INTEGER", t.getConstantType("c")); } - - @Test + + @Test public void testTupleVsSequence4() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS a, b, c\n" - + "ASSUME a = 1 /\\ b = TRUE /\\ c = <<a,b>>\n" - + "================================="; + + "CONSTANTS a, b, c\n" + + "ASSUME a = 1 /\\ b = TRUE /\\ c = <<a,b>>\n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER", t.getConstantType("a")); assertEquals("BOOL", t.getConstantType("b")); assertEquals("INTEGER*BOOL", t.getConstantType("c")); } - - @Test + + @Test public void testTupleVsSequence5() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k\n" - + "ASSUME k = <<1,2>> /\\ k \\in {1} \\X {2} \n" - + "================================="; + + "CONSTANTS k\n" + + "ASSUME k = <<1,2>> /\\ k \\in {1} \\X {2} \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER*INTEGER", t.getConstantType("k")); } - - - @Test + + + @Test public void testTupleVsSequence6() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k\n" - + "ASSUME {k} = {<<x, y>> \\in {1} \\X {2}: TRUE} \n" - + "================================="; + + "CONSTANTS k\n" + + "ASSUME {k} = {<<x, y>> \\in {1} \\X {2}: TRUE} \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER*INTEGER", t.getConstantType("k")); } - @Test (expected = TypeErrorException.class) + @Test(expected = TypeErrorException.class) public void testTupleVsSequence7() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "ASSUME 1 = <<1,TRUE>>[3] \n" - + "================================="; + + "ASSUME 1 = <<1,TRUE>>[3] \n" + + "================================="; TestUtil.typeCheckString(module); } - + } diff --git a/src/test/java/de/tla2b/typechecking/TypeConflictsTest.java b/src/test/java/de/tla2b/typechecking/TypeConflictsTest.java index d4e18e6635281a9de681edfb319093338f196c89..2aa15d623e9854cb33ac54263dfaa23c74d4486b 100644 --- a/src/test/java/de/tla2b/typechecking/TypeConflictsTest.java +++ b/src/test/java/de/tla2b/typechecking/TypeConflictsTest.java @@ -1,10 +1,9 @@ package de.tla2b.typechecking; -import org.junit.Test; - import de.tla2b.exceptions.TLA2BException; import de.tla2b.exceptions.TypeErrorException; import de.tla2b.util.TestUtil; +import org.junit.Test; public class TypeConflictsTest { @@ -12,9 +11,9 @@ public class TypeConflictsTest { @Test(expected = TypeErrorException.class) public void testTypeConflict1() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = {k} \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = {k} \n" + + "================================="; TestUtil.typeCheckString(module); } @@ -22,50 +21,50 @@ public class TypeConflictsTest { @Test(expected = TypeErrorException.class) public void testTypeConflict2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME {k} = k \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME {k} = k \n" + + "================================="; TestUtil.typeCheckString(module); } - + @Test(expected = TypeErrorException.class) public void testTypeConflict3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME {{k}} = k \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME {{k}} = k \n" + + "================================="; TestUtil.typeCheckString(module); } - + @Test(expected = TypeErrorException.class) public void testTypeConflict4() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS k \n" - + "ASSUME k = [a |-> k] \n" - + "================================="; + + "CONSTANTS k \n" + + "ASSUME k = [a |-> k] \n" + + "================================="; TestUtil.typeCheckString(module); } - + @Test(expected = TypeErrorException.class) public void testTypeConflict5() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Integers \n" - + "CONSTANTS k \n" - + "ASSUME k = [x \\in {} |-> k] \n" - + "================================="; + + "EXTENDS Integers \n" + + "CONSTANTS k \n" + + "ASSUME k = [x \\in {} |-> k] \n" + + "================================="; TestUtil.typeCheckString(module); } - + @Test(expected = TypeErrorException.class) public void testTypeConflict6() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "CONSTANTS a,b \n" - + "ASSUME a = [x|->1] /\\ b = [y|->a, x|->1] /\\ a=b \n" - + "================================="; + + "CONSTANTS a,b \n" + + "ASSUME a = [x|->1] /\\ b = [y|->a, x|->1] /\\ a=b \n" + + "================================="; TestUtil.typeCheckString(module); } diff --git a/src/test/java/de/tla2b/typechecking/standardmodules/TestModuleFiniteSets.java b/src/test/java/de/tla2b/typechecking/standardmodules/TestModuleFiniteSets.java index ca60a3ccd9dbfcb00b9c0a68adc6671fce508ed8..dc7f3dc3c5cfe99b7bcd6550632d5b4dbc9161ac 100644 --- a/src/test/java/de/tla2b/typechecking/standardmodules/TestModuleFiniteSets.java +++ b/src/test/java/de/tla2b/typechecking/standardmodules/TestModuleFiniteSets.java @@ -1,13 +1,12 @@ package de.tla2b.typechecking.standardmodules; -import static org.junit.Assert.*; - -import org.junit.Test; - import de.tla2b.exceptions.TLA2BException; import de.tla2b.exceptions.TypeErrorException; import de.tla2b.util.TestTypeChecker; import de.tla2b.util.TestUtil; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; public class TestModuleFiniteSets { @@ -18,10 +17,10 @@ public class TestModuleFiniteSets { @Test public void unifyIsFiniteSet() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS FiniteSets \n" - + "CONSTANTS k \n" - + "ASSUME k = IsFiniteSet({1,2,3}) \n" - + "================================="; + + "EXTENDS FiniteSets \n" + + "CONSTANTS k \n" + + "ASSUME k = IsFiniteSet({1,2,3}) \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("BOOL", t.getConstantType("k")); } @@ -29,10 +28,10 @@ public class TestModuleFiniteSets { @Test public void unifyIsFiniteSet2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS FiniteSets \n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = IsFiniteSet(k2) /\\ k2 = {1} \n" - + "================================="; + + "EXTENDS FiniteSets \n" + + "CONSTANTS k, k2 \n" + + "ASSUME k = IsFiniteSet(k2) /\\ k2 = {1} \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("BOOL", t.getConstantType("k")); assertEquals("POW(INTEGER)", t.getConstantType("k2")); @@ -42,10 +41,10 @@ public class TestModuleFiniteSets { @Test public void unifyIsFiniteSet3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS FiniteSets \n" - + "CONSTANTS k \n" - + "ASSUME k = IsFiniteSet({}) \n" - + "================================="; + + "EXTENDS FiniteSets \n" + + "CONSTANTS k \n" + + "ASSUME k = IsFiniteSet({}) \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("BOOL", t.getConstantType("k")); } @@ -53,18 +52,18 @@ public class TestModuleFiniteSets { @Test(expected = TypeErrorException.class) public void unifyErrorIsFiniteSet() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS FiniteSets \n" - + "ASSUME IsFiniteSet(1)\n" - + "================================="; + + "EXTENDS FiniteSets \n" + + "ASSUME IsFiniteSet(1)\n" + + "================================="; TestUtil.typeCheckString(module); } @Test(expected = TypeErrorException.class) public void unifyErrorIsFiniteSet2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS FiniteSets \n" - + "ASSUME 1 = IsFiniteSet({1})\n" - + "================================="; + + "EXTENDS FiniteSets \n" + + "ASSUME 1 = IsFiniteSet({1})\n" + + "================================="; TestUtil.typeCheckString(module); } @@ -74,10 +73,10 @@ public class TestModuleFiniteSets { @Test public void unifyCardinality() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS FiniteSets \n" - + "CONSTANTS k \n" - + "ASSUME k = Cardinality({1,2,3}) \n" - + "================================="; + + "EXTENDS FiniteSets \n" + + "CONSTANTS k \n" + + "ASSUME k = Cardinality({1,2,3}) \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER", t.getConstantType("k")); } @@ -85,10 +84,10 @@ public class TestModuleFiniteSets { @Test public void unifyCardinality2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS FiniteSets \n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = Cardinality(k2) /\\ k2 = {1} \n" - + "================================="; + + "EXTENDS FiniteSets \n" + + "CONSTANTS k, k2 \n" + + "ASSUME k = Cardinality(k2) /\\ k2 = {1} \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER", t.getConstantType("k")); assertEquals("POW(INTEGER)", t.getConstantType("k2")); @@ -97,18 +96,18 @@ public class TestModuleFiniteSets { @Test(expected = TypeErrorException.class) public void unifyErrorCardinality() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS FiniteSets \n" - + "ASSUME Cardinality(1)\n" - + "================================="; + + "EXTENDS FiniteSets \n" + + "ASSUME Cardinality(1)\n" + + "================================="; TestUtil.typeCheckString(module); } @Test(expected = TypeErrorException.class) public void unifyErrorCardinality2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS FiniteSets \n" - + "ASSUME TRUE = Cardinality({1})\n" - + "================================="; + + "EXTENDS FiniteSets \n" + + "ASSUME TRUE = Cardinality({1})\n" + + "================================="; TestUtil.typeCheckString(module); } diff --git a/src/test/java/de/tla2b/typechecking/standardmodules/TestModuleIntegers.java b/src/test/java/de/tla2b/typechecking/standardmodules/TestModuleIntegers.java index 96064e743d18e5f60905b90363c052a3e85f7bb1..4a8b79d799891c8f15b0e44077fb8c2b1e98c0c0 100644 --- a/src/test/java/de/tla2b/typechecking/standardmodules/TestModuleIntegers.java +++ b/src/test/java/de/tla2b/typechecking/standardmodules/TestModuleIntegers.java @@ -1,13 +1,12 @@ package de.tla2b.typechecking.standardmodules; -import static org.junit.Assert.*; - -import org.junit.Test; - import de.tla2b.exceptions.TLA2BException; import de.tla2b.exceptions.TypeErrorException; import de.tla2b.util.TestTypeChecker; import de.tla2b.util.TestUtil; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; public class TestModuleIntegers { @@ -18,9 +17,9 @@ public class TestModuleIntegers { @Test public void unifyInt() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Integers \n" - + "CONSTANTS k \n" - + "ASSUME k = Int \n" + "================================="; + + "EXTENDS Integers \n" + + "CONSTANTS k \n" + + "ASSUME k = Int \n" + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER)", t.getConstantType("k")); } @@ -28,9 +27,9 @@ public class TestModuleIntegers { @Test(expected = TypeErrorException.class) public void unifyErrorInt() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Integers \n" - + "ASSUME TRUE \\in Int \n" - + "================================="; + + "EXTENDS Integers \n" + + "ASSUME TRUE \\in Int \n" + + "================================="; TestUtil.typeCheckString(module); } @@ -41,9 +40,9 @@ public class TestModuleIntegers { @Test public void unifyUnaryMinus() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Integers \n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = -k2 \n" + "================================="; + + "EXTENDS Integers \n" + + "CONSTANTS k, k2 \n" + + "ASSUME k = -k2 \n" + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER", t.getConstantType("k")); @@ -53,9 +52,9 @@ public class TestModuleIntegers { @Test(expected = TypeErrorException.class) public void unifyErrorUnaryMinus() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Integers \n" - + "ASSUME TRUE = -1 \n" - + "================================="; + + "EXTENDS Integers \n" + + "ASSUME TRUE = -1 \n" + + "================================="; TestUtil.typeCheckString(module); } diff --git a/src/test/java/de/tla2b/typechecking/standardmodules/TestModuleNaturals.java b/src/test/java/de/tla2b/typechecking/standardmodules/TestModuleNaturals.java index d2cb4faea76bc67d2beb2f0b55f97efee011b133..6fa6a8b47ac08698bf2608561652f079609c2b60 100644 --- a/src/test/java/de/tla2b/typechecking/standardmodules/TestModuleNaturals.java +++ b/src/test/java/de/tla2b/typechecking/standardmodules/TestModuleNaturals.java @@ -1,13 +1,12 @@ package de.tla2b.typechecking.standardmodules; -import static org.junit.Assert.assertEquals; - -import org.junit.Test; - import de.tla2b.exceptions.TLA2BException; import de.tla2b.exceptions.TypeErrorException; import de.tla2b.util.TestTypeChecker; import de.tla2b.util.TestUtil; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; public class TestModuleNaturals { @@ -19,10 +18,10 @@ public class TestModuleNaturals { public void testRelationalOperators() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k, k2, k3 \n" - + "ASSUME k = (k2 > k3) \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k, k2, k3 \n" + + "ASSUME k = (k2 > k3) \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("BOOL", t.getConstantType("k")); assertEquals("INTEGER", t.getConstantType("k2")); @@ -33,9 +32,9 @@ public class TestModuleNaturals { public void testRelationalOperatorsException() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k, k2 \n" - + "ASSUME 1 = (2 > 1) \n" + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k, k2 \n" + + "ASSUME 1 = (2 > 1) \n" + "================================="; TestUtil.typeCheckString(module); } @@ -46,9 +45,9 @@ public class TestModuleNaturals { public void testArithmeticOperators() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k, k2, k3 \n" - + "ASSUME k = k2 + k3 \n" + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k, k2, k3 \n" + + "ASSUME k = k2 + k3 \n" + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER", t.getConstantType("k")); @@ -60,10 +59,10 @@ public class TestModuleNaturals { public void testArithmeticOperatorsException() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k, k2 \n" - + "ASSUME TRUE = 1 + 1 \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k, k2 \n" + + "ASSUME TRUE = 1 + 1 \n" + + "================================="; TestUtil.typeCheckString(module); } @@ -74,10 +73,10 @@ public class TestModuleNaturals { @Test public void testDotDot() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k, k2, k3 \n" - + "ASSUME k = k2 .. k3 \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k, k2, k3 \n" + + "ASSUME k = k2 .. k3 \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER)", t.getConstantType("k")); assertEquals("INTEGER", t.getConstantType("k2")); @@ -87,10 +86,10 @@ public class TestModuleNaturals { @Test(expected = TypeErrorException.class) public void testDotDotException() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k2, k3 \n" - + "ASSUME TRUE \\in k2 .. k3 \n" - + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k2, k3 \n" + + "ASSUME TRUE \\in k2 .. k3 \n" + + "================================="; TestUtil.typeCheckString(module); } @@ -100,9 +99,9 @@ public class TestModuleNaturals { @Test public void testNat() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "CONSTANTS k \n" - + "ASSUME k = Nat \n" + "================================="; + + "EXTENDS Naturals \n" + + "CONSTANTS k \n" + + "ASSUME k = Nat \n" + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER)", t.getConstantType("k")); } @@ -110,9 +109,9 @@ public class TestModuleNaturals { @Test(expected = TypeErrorException.class) public void unifyErrorNat() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Naturals \n" - + "ASSUME TRUE \\in Nat \n" - + "================================="; + + "EXTENDS Naturals \n" + + "ASSUME TRUE \\in Nat \n" + + "================================="; TestUtil.typeCheckString(module); } diff --git a/src/test/java/de/tla2b/typechecking/standardmodules/TestModuleReals.java b/src/test/java/de/tla2b/typechecking/standardmodules/TestModuleReals.java index 73f6fa45ac3d348fd3d618fdfcac4ebdc528654d..01500661376e5e12fd514b414224f4895360d552 100644 --- a/src/test/java/de/tla2b/typechecking/standardmodules/TestModuleReals.java +++ b/src/test/java/de/tla2b/typechecking/standardmodules/TestModuleReals.java @@ -17,9 +17,9 @@ public class TestModuleReals { @Test public void unifyReal() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Reals \n" - + "CONSTANTS k \n" - + "ASSUME k = Real \n" + "================================="; + + "EXTENDS Reals \n" + + "CONSTANTS k \n" + + "ASSUME k = Real \n" + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(REAL)", t.getConstantType("k")); } @@ -27,9 +27,9 @@ public class TestModuleReals { @Test(expected = TypeErrorException.class) public void unifyErrorReal() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Reals \n" - + "ASSUME TRUE \\in Real \n" - + "================================="; + + "EXTENDS Reals \n" + + "ASSUME TRUE \\in Real \n" + + "================================="; TestUtil.typeCheckString(module); } @@ -40,9 +40,9 @@ public class TestModuleReals { @Test public void unifyUnaryMinusReal() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Reals \n" - + "CONSTANTS k \n" - + "ASSUME k = -1.0 \n" + "================================="; + + "EXTENDS Reals \n" + + "CONSTANTS k \n" + + "ASSUME k = -1.0 \n" + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("REAL", t.getConstantType("k")); @@ -60,9 +60,9 @@ public class TestModuleReals { @Test(expected = TypeErrorException.class) public void unifyErrorUnaryMinusReal() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Reals \n" - + "ASSUME TRUE = -1.0 \n" - + "================================="; + + "EXTENDS Reals \n" + + "ASSUME TRUE = -1.0 \n" + + "================================="; TestUtil.typeCheckString(module); } diff --git a/src/test/java/de/tla2b/typechecking/standardmodules/TestModuleSequences.java b/src/test/java/de/tla2b/typechecking/standardmodules/TestModuleSequences.java index 5b9df09a862ef8716066608374653806bb59f0c0..f43627c869206a8ae7d35e4b4af320ee00771959 100644 --- a/src/test/java/de/tla2b/typechecking/standardmodules/TestModuleSequences.java +++ b/src/test/java/de/tla2b/typechecking/standardmodules/TestModuleSequences.java @@ -1,13 +1,12 @@ package de.tla2b.typechecking.standardmodules; -import static org.junit.Assert.*; - -import org.junit.Test; - import de.tla2b.exceptions.TLA2BException; import de.tla2b.exceptions.TypeErrorException; import de.tla2b.util.TestTypeChecker; import de.tla2b.util.TestUtil; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; public class TestModuleSequences { @@ -15,337 +14,336 @@ public class TestModuleSequences { /* * Seq(S): The set of all sequences of elements in S. */ - @Test + @Test public void testSeq() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k \n" - + "ASSUME k = Seq({TRUE}) \n" - + "================================="; + + "EXTENDS Sequences \n" + + "CONSTANTS k \n" + + "ASSUME k = Seq({TRUE}) \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(POW(INTEGER*BOOL))", t.getConstantType("k")); } - - @Test + + @Test public void testSeq2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k \n" - + "ASSUME <<k>> \\in Seq({TRUE}) \n" - + "================================="; + + "EXTENDS Sequences \n" + + "CONSTANTS k \n" + + "ASSUME <<k>> \\in Seq({TRUE}) \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("BOOL", t.getConstantType("k")); } - - - - @Test (expected = TypeErrorException.class) + + + @Test(expected = TypeErrorException.class) public void testSeqException() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "ASSUME 1 = Seq({1}) \n" - + "================================="; + + "EXTENDS Sequences \n" + + "ASSUME 1 = Seq({1}) \n" + + "================================="; TestUtil.typeCheckString(module); } - @Test (expected = TypeErrorException.class) + @Test(expected = TypeErrorException.class) public void testSeqException2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k \n" - + "ASSUME k = Seq(1) \n" - + "================================="; + + "EXTENDS Sequences \n" + + "CONSTANTS k \n" + + "ASSUME k = Seq(1) \n" + + "================================="; TestUtil.typeCheckString(module); } - - + + /* * Len(S) */ - @Test + @Test public void testLen() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k \n" - + "ASSUME k = Len(<<1,2,3>>) \n" - + "================================="; + + "EXTENDS Sequences \n" + + "CONSTANTS k \n" + + "ASSUME k = Len(<<1,2,3>>) \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER", t.getConstantType("k")); } - - @Test (expected = TypeErrorException.class) + + @Test(expected = TypeErrorException.class) public void testLenException() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k \n" - + "ASSUME TRUE = Len(<<1,2,3>>) \n" - + "================================="; + + "EXTENDS Sequences \n" + + "CONSTANTS k \n" + + "ASSUME TRUE = Len(<<1,2,3>>) \n" + + "================================="; TestUtil.typeCheckString(module); } - - @Test (expected = TypeErrorException.class) + + @Test(expected = TypeErrorException.class) public void testLenException2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k \n" - + "ASSUME 3 = Len({1,2,3}) \n" - + "================================="; + + "EXTENDS Sequences \n" + + "CONSTANTS k \n" + + "ASSUME 3 = Len({1,2,3}) \n" + + "================================="; TestUtil.typeCheckString(module); } - - @Test (expected = TypeErrorException.class) + + @Test(expected = TypeErrorException.class) public void testUnifyErrorLen2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k \n" - + "ASSUME 1 = Len(1) \n" - + "================================="; + + "EXTENDS Sequences \n" + + "CONSTANTS k \n" + + "ASSUME 1 = Len(1) \n" + + "================================="; TestUtil.typeCheckString(module); } - - + + /* * s \o s2 - concatenation of s and s2 */ - @Test + @Test public void testUnifyConcatenation() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = k2 \\o <<TRUE>> \n" - + "================================="; + + "EXTENDS Sequences \n" + + "CONSTANTS k, k2 \n" + + "ASSUME k = k2 \\o <<TRUE>> \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k")); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k2")); } - - @Test + + @Test public void testUnifyConcatenation2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k, k2 \n" - + "ASSUME <<TRUE>> = k \\o k2 \n" - + "================================="; + + "EXTENDS Sequences \n" + + "CONSTANTS k, k2 \n" + + "ASSUME <<TRUE>> = k \\o k2 \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k")); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k2")); } - - @Test + + @Test public void testUnifyConcatenation3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k, k2, k3 \n" - + "ASSUME k= k2 \\o k3 /\\ k3 = <<TRUE>> \n" - + "================================="; + + "EXTENDS Sequences \n" + + "CONSTANTS k, k2, k3 \n" + + "ASSUME k= k2 \\o k3 /\\ k3 = <<TRUE>> \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k")); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k2")); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k3")); } - - @Test (expected = TypeErrorException.class) + + @Test(expected = TypeErrorException.class) public void testUnifyErrorConcatenation() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = 1 \\o k2 \n" - + "================================="; + + "EXTENDS Sequences \n" + + "CONSTANTS k, k2 \n" + + "ASSUME k = 1 \\o k2 \n" + + "================================="; TestUtil.typeCheckString(module); } - - @Test (expected = TypeErrorException.class) + + @Test(expected = TypeErrorException.class) public void testUnifyErrorConcatenation2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k, k2 \n" - + "ASSUME 1 = k \\o k2 \n" - + "================================="; + + "EXTENDS Sequences \n" + + "CONSTANTS k, k2 \n" + + "ASSUME 1 = k \\o k2 \n" + + "================================="; TestUtil.typeCheckString(module); } - - @Test (expected = TypeErrorException.class) + + @Test(expected = TypeErrorException.class) public void testUnifyErrorConcatenation3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k, k2 \n" - + "ASSUME <<TRUE>> = <<1>> \\o <<2>> \n" - + "================================="; + + "EXTENDS Sequences \n" + + "CONSTANTS k, k2 \n" + + "ASSUME <<TRUE>> = <<1>> \\o <<2>> \n" + + "================================="; TestUtil.typeCheckString(module); } - - + + /* * Append(s, e) */ - @Test + @Test public void testUnifyAppend() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k, k2, k3 \n" - + "ASSUME k = Append(k2, k3) /\\ k3 = TRUE \n" - + "================================="; - + + "EXTENDS Sequences \n" + + "CONSTANTS k, k2, k3 \n" + + "ASSUME k = Append(k2, k3) /\\ k3 = TRUE \n" + + "================================="; + TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k")); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k2")); assertEquals("BOOL", t.getConstantType("k3")); } - - @Test + + @Test public void testUnifyAppend2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k, k2, k3 \n" - + "ASSUME k = Append(k2, k3) /\\ k = <<TRUE>> \n" - + "================================="; - + + "EXTENDS Sequences \n" + + "CONSTANTS k, k2, k3 \n" + + "ASSUME k = Append(k2, k3) /\\ k = <<TRUE>> \n" + + "================================="; + TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k")); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k2")); assertEquals("BOOL", t.getConstantType("k3")); } - - @Test + + @Test public void testUnifyAppend3() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = Append(k2, 1) \n" - + "================================="; - + + "EXTENDS Sequences \n" + + "CONSTANTS k, k2 \n" + + "ASSUME k = Append(k2, 1) \n" + + "================================="; + TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*INTEGER)", t.getConstantType("k")); assertEquals("POW(INTEGER*INTEGER)", t.getConstantType("k2")); } - - @Test (expected = TypeErrorException.class) + + @Test(expected = TypeErrorException.class) public void testUnifyErrorAppend() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k, k2, k3 \n" - + "ASSUME k = Append(1, k3) \n" - + "================================="; - + + "EXTENDS Sequences \n" + + "CONSTANTS k, k2, k3 \n" + + "ASSUME k = Append(1, k3) \n" + + "================================="; + TestUtil.typeCheckString(module); } - + /* * Head(s): the first element of the seq */ - @Test + @Test public void testUnifyHead() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = Head(k2) /\\ k2 = <<1>> \n" - + "================================="; + + "EXTENDS Sequences \n" + + "CONSTANTS k, k2 \n" + + "ASSUME k = Head(k2) /\\ k2 = <<1>> \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER", t.getConstantType("k")); assertEquals("POW(INTEGER*INTEGER)", t.getConstantType("k2")); } - - @Test + + @Test public void testUnifyHead2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = Head(k2) /\\ k = 1 \n" - + "================================="; + + "EXTENDS Sequences \n" + + "CONSTANTS k, k2 \n" + + "ASSUME k = Head(k2) /\\ k = 1 \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER", t.getConstantType("k")); assertEquals("POW(INTEGER*INTEGER)", t.getConstantType("k2")); } - - @Test (expected = TypeErrorException.class) + + @Test(expected = TypeErrorException.class) public void testUnifyErrorHead() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k \n" - + "ASSUME k = Head(1) \n" - + "================================="; + + "EXTENDS Sequences \n" + + "CONSTANTS k \n" + + "ASSUME k = Head(1) \n" + + "================================="; TestUtil.typeCheckString(module); } - + /* * Tail(s): the sequence without the first element */ - @Test + @Test public void testUnifyTail() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = Tail(k2) /\\ k = <<TRUE>> \n" - + "================================="; + + "EXTENDS Sequences \n" + + "CONSTANTS k, k2 \n" + + "ASSUME k = Tail(k2) /\\ k = <<TRUE>> \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k")); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k2")); } - - @Test + + @Test public void testUnifyTail2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k, k2 \n" - + "ASSUME k = Tail(k2) /\\ k2 = <<TRUE>> \n" - + "================================="; - + + "EXTENDS Sequences \n" + + "CONSTANTS k, k2 \n" + + "ASSUME k = Tail(k2) /\\ k2 = <<TRUE>> \n" + + "================================="; + TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k")); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k2")); } - - @Test (expected = TypeErrorException.class) + + @Test(expected = TypeErrorException.class) public void testUnifyErrorTail() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k \n" - + "ASSUME k = Tail(1) \n" - + "================================="; + + "EXTENDS Sequences \n" + + "CONSTANTS k \n" + + "ASSUME k = Tail(1) \n" + + "================================="; TestUtil.typeCheckString(module); } - + /* * SubSeq(s,m,n): The sequence <<s[m], s[m+1], ... , s[n]>> */ - @Test + @Test public void testUnifySubSeq() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k, k2, m, n \n" - + "ASSUME k = SubSeq(k2, m, n) /\\ k = <<TRUE>> \n" - + "================================="; + + "EXTENDS Sequences \n" + + "CONSTANTS k, k2, m, n \n" + + "ASSUME k = SubSeq(k2, m, n) /\\ k = <<TRUE>> \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k")); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k2")); assertEquals("INTEGER", t.getConstantType("m")); assertEquals("INTEGER", t.getConstantType("n")); } - - @Test + + @Test public void testUnifySubSeq2() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k, k2, m, n \n" - + "ASSUME k = SubSeq(k2, m, n) /\\ k2= <<TRUE>> \n" - + "================================="; + + "EXTENDS Sequences \n" + + "CONSTANTS k, k2, m, n \n" + + "ASSUME k = SubSeq(k2, m, n) /\\ k2= <<TRUE>> \n" + + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k")); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k2")); assertEquals("INTEGER", t.getConstantType("m")); assertEquals("INTEGER", t.getConstantType("n")); } - - @Test (expected = TypeErrorException.class) + + @Test(expected = TypeErrorException.class) public void testUnifyErrorSubSeq() throws TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" - + "EXTENDS Sequences \n" - + "CONSTANTS k, k2, m, n \n" - + "ASSUME k = SubSeq(1, m, n) \n" - + "================================="; - + + "EXTENDS Sequences \n" + + "CONSTANTS k, k2, m, n \n" + + "ASSUME k = SubSeq(1, m, n) \n" + + "================================="; + TestUtil.typeCheckString(module); } } diff --git a/src/test/java/de/tla2b/util/TestTypeChecker.java b/src/test/java/de/tla2b/util/TestTypeChecker.java index a71588336f87ac3845f72f337e8d76f9f3b1a805..72743d9aaef8edf0885eb4976a22844fcdc73fd4 100644 --- a/src/test/java/de/tla2b/util/TestTypeChecker.java +++ b/src/test/java/de/tla2b/util/TestTypeChecker.java @@ -1,24 +1,20 @@ package de.tla2b.util; -import java.util.Hashtable; - import de.tla2b.exceptions.TLA2BException; import de.tla2b.global.TranslationGlobals; import de.tla2b.types.TLAType; import de.tla2bAst.Translator; -import tla2sany.semantic.FormalParamNode; -import tla2sany.semantic.ModuleNode; -import tla2sany.semantic.OpDeclNode; -import tla2sany.semantic.OpDefNode; -import tla2sany.semantic.SemanticNode; +import tla2sany.semantic.*; + +import java.util.Hashtable; public class TestTypeChecker implements TranslationGlobals { - public ModuleNode moduleNode; public final int toolId = 5; private final Hashtable<String, TLAType> constants; private final Hashtable<String, TLAType> variables; private final Hashtable<String, DefCon> definitions; + public ModuleNode moduleNode; public TestTypeChecker() { constants = new Hashtable<>(); @@ -27,15 +23,15 @@ public class TestTypeChecker implements TranslationGlobals { } public void startTest(String moduleString, String configString) - throws TLA2BException { + throws TLA2BException { Translator translator = new Translator(moduleString, configString); translator.translate(); moduleNode = translator.getModuleNode(); init(); } - + public void start(String moduleFileName) - throws TLA2BException { + throws TLA2BException { Translator translator = new Translator(moduleFileName); translator.translate(); moduleNode = translator.getModuleNode(); @@ -43,22 +39,22 @@ public class TestTypeChecker implements TranslationGlobals { } - private TLAType getBType(SemanticNode node){ + private TLAType getBType(SemanticNode node) { TLAType type = (TLAType) node.getToolObject(toolId); return type; } - + private void init() { for (int i = 0; i < moduleNode.getConstantDecls().length; i++) { OpDeclNode con = moduleNode.getConstantDecls()[i]; constants.put(con.getName().toString(), - getBType(con)); + getBType(con)); } for (int i = 0; i < moduleNode.getVariableDecls().length; i++) { OpDeclNode var = moduleNode.getVariableDecls()[i]; variables.put(var.getName().toString(), - getBType(var)); + getBType(var)); } for (int i = 0; i < moduleNode.getOpDefs().length; i++) { @@ -68,36 +64,36 @@ public class TestTypeChecker implements TranslationGlobals { continue; if (STANDARD_MODULES.contains(def - .getOriginallyDefinedInModuleNode().getName().toString()) - || STANDARD_MODULES.contains(def.getSource() - .getOriginallyDefinedInModuleNode().getName() - .toString())) { + .getOriginallyDefinedInModuleNode().getName().toString()) + || STANDARD_MODULES.contains(def.getSource() + .getOriginallyDefinedInModuleNode().getName() + .toString())) { continue; } for (int j = 0; j < def.getParams().length; j++) { FormalParamNode p = def.getParams()[j]; defCon.parameters.put(p.getName().toString(), - getBType(p)); + getBType(p)); } definitions.put(def.getName().toString(), defCon); } } - + public String getConstantType(String conName) { return constants.get(conName).toString(); } - - public String getVariableType(String varName){ + + public String getVariableType(String varName) { return variables.get(varName).toString(); } - public String getDefinitionType(String defName){ + public String getDefinitionType(String defName) { return definitions.get(defName).getType().toString(); } - public String getDefinitionParamType(String defName, String paramName){ + public String getDefinitionParamType(String defName, String paramName) { return definitions.get(defName).getParams().get(paramName).toString(); } diff --git a/src/test/java/de/tla2b/util/TestUtil.java b/src/test/java/de/tla2b/util/TestUtil.java index cd9752edb130c1045e81c748e7be62c7fc192240..81fa3ca6cca5f7b3d62000180530744bb4bab08e 100644 --- a/src/test/java/de/tla2b/util/TestUtil.java +++ b/src/test/java/de/tla2b/util/TestUtil.java @@ -1,9 +1,5 @@ package de.tla2b.util; -import java.io.File; -import java.util.ArrayList; -import java.util.List; - import de.be4.classicalb.core.parser.BParser; import de.be4.classicalb.core.parser.analysis.prolog.ASTProlog; import de.be4.classicalb.core.parser.exceptions.BCompoundException; @@ -14,10 +10,13 @@ import de.be4.classicalb.core.parser.util.SuffixIdentifierRenaming; import de.prob.prolog.output.PrologTermStringOutput; import de.tla2b.exceptions.TLA2BException; import de.tla2bAst.Translator; - import util.FileUtil; import util.ToolIO; +import java.io.File; +import java.util.ArrayList; +import java.util.List; + import static org.junit.Assert.assertEquals; public class TestUtil { @@ -26,7 +25,7 @@ public class TestUtil { public static List<File> getModulesRecursively(String path) { File root = new File(path); File[] list = root.listFiles(); - + List<File> files = new ArrayList<>(); if (list == null) { return files;