Select Git revision
Update_Scheme.py
-
Laura Christine Kühle authoredLaura Christine Kühle authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
ModuleAndExpressionTest.java 3.84 KiB
package de.tla2b.expression;
import de.tla2b.exceptions.ExpressionTranslationException;
import org.junit.Test;
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"
+ "===============";
compareExprIncludingModel("k = 1", "k = 1", module);
}
@Test
public void testVar() throws Exception {
String module = "---- MODULE Testing ----\n"
+ "VARIABLES v \n"
+ "Init == v = 4.0 \n"
+ "Next == v' = 5.0"
+ "===============";
compareExprIncludingModel("v = 4.0", "v = 4.0", module);
}
@Test(expected = ExpressionTranslationException.class)
public void testConTypeError() throws Exception {
String module = "---- MODULE Testing ----\n"
+ "CONSTANTS k \n"
+ "ASSUME k = 4"
+ "===============";
compareExprIncludingModel(null, "k = TRUE", module);
}
@Test(expected = ExpressionTranslationException.class)
public void testVarTypeError() throws Exception {
String module = "---- MODULE Testing ----\n"
+ "VARIABLES v \n"
+ "Init == v = 4.0 \n"
+ "Next == v' = 5.0"
+ "===============";
compareExprIncludingModel(null, "v = TRUE", module);
}
@Test
public void testConAdditionalFreeVariable() throws Exception {
String module = "---- MODULE Testing ----\n"
+ "CONSTANTS k \n"
+ "ASSUME k = 4"
+ "===============";
compareExprIncludingModel("k = s", "k = s", module);
}
@Test
public void testVarAdditionalFreeVariable() throws Exception {
String module = "---- MODULE Testing ----\n"
+ "VARIABLES v \n"
+ "Init == v = 4.0 \n"
+ "Next == v' = 5.0"
+ "===============";
compareExprIncludingModel("v = s", "v = s", module);
}
@Test(expected = ExpressionTranslationException.class)
public void testAdditionalFreeVariableError() throws Exception {
String module = "---- MODULE Testing ----\n"
+ "CONSTANTS k \n"
+ "ASSUME k = 4"
+ "===============";
compareExprIncludingModel(null, "s = TRUE /\\ k = s", module);
}
@Test
public void testWithDefinitions() throws Exception {
String module = "---- MODULE Testing ----\n"
+ "EXTENDS Naturals \n"
+ "CONSTANTS k \n"
+ "ASSUME k = 4 \n"
+ "InnerDef(b) == b*5 \n"
+ "HelpDef(a,b) == a+InnerDef(b) \n"
+ "Init == 1 = HelpDef(1,1) \n" // to get defs into translated B definitions
+ "===============";
compareExprIncludingModel("HelpDef(k,k)", "HelpDef(k,k)", module);
}
@Test
public void testWithDefinitionsAndFreeVariables() throws Exception {
String module = "---- MODULE Testing ----\n"
+ "EXTENDS Naturals \n"
+ "CONSTANTS k \n"
+ "ASSUME k = 4 \n"
+ "InnerDef(b) == b*5 \n"
+ "HelpDef(a,b) == a+InnerDef(b) \n"
+ "SecondDef(x) == x \n"
+ "Init == 1.0 = SecondDef(1.0) /\\ 1 = HelpDef(1,1) \n" // to get defs into translated B definitions
+ "===============";
compareExprIncludingModel("s = 5 & t = 10 & w : REAL & v = HelpDef(s,t) & w = SecondDef(s)",
"s = 5 /\\ t = 10 /\\ w \\in Real /\\ v = HelpDef(s,t) /\\ w = SecondDef(s)", module);
}
@Test(expected = ExpressionTranslationException.class)
public void testWithDefinitionError() throws Exception {
String module = "---- MODULE Testing ----\n"
+ "EXTENDS Reals \n"
+ "CONSTANTS k \n"
+ "ASSUME k = 4.0 \n"
+ "HelpDef(a,b) == 0.3*a+2.7*b \n"
+ "Init == 1.0 = HelpDef(1.0,1.0) \n" // to get defs into translated B definitions
+ "===============";
compareExprIncludingModel(null, "s \\in Int /\\ HelpDef(k,s)", module);
}
@Test
public void testReals() throws Exception {
String module = "---- MODULE Testing ----\n"
+ "EXTENDS Reals\n"
+ "CONSTANTS k, t1, t2 \n"
+ "ASSUME k = 2.0 /\\ t1 = k*k /\\ t2 = (k < 5.0)"
+ "===============";
compareExprIncludingModel("t2 = TRUE", "t2 = TRUE", module);
}
}