Skip to content
Snippets Groups Projects
Select Git revision
  • abc8e917d57b416ec49b4904eb1441bd0143cfef
  • master default protected
2 results

Update_Scheme.py

Blame
  • 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);
    	}
    }