@Test(expected = TypeErrorException.class) public void testCartesianProductException() throws FrontEndException, TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" + "CONSTANTS k \n" + "ASSUME k = BOOLEAN \\X 1 \n" + "================================="; TestUtil.typeCheckString(module); }
@Test(expected = TypeErrorException.class) public void testTypeConflict6() throws FrontEndException, TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" + "CONSTANTS a,b \n" + "ASSUME a = [x|->1] /\\ b = [y|->a, x|->1] /\\ a=b \n" + "================================="; TestUtil.typeCheckString(module); }
@Test(expected = TypeErrorException.class) public void testTypeConflict4() throws FrontEndException, TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" + "CONSTANTS k \n" + "ASSUME k = [a |-> k] \n" + "================================="; TestUtil.typeCheckString(module); }
/** * ******************************************************************** Cartesian Product * ******************************************************************** */ @Test public void testCartesianProduct2() throws FrontEndException, TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" + "CONSTANTS k \n" + "ASSUME k = BOOLEAN \\X {1} \n" + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(BOOL*INTEGER)", t.getConstantType("k").toString()); }
@Test(expected = TypeErrorException.class) public void testUnifyTuple4() throws FrontEndException, TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" + "CONSTANTS k \n" + "ASSUME k \\in <<TRUE>>\n" + "================================="; TestUtil.typeCheckString(module); }
@Test(expected = TypeErrorException.class) public void testTuple2Elements() throws FrontEndException, TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" + "CONSTANTS k, k2, k3 \n" + "ASSUME k = <<k2, k3>> /\\ k3 = TRUE \n" + "================================="; TestUtil.typeCheckString(module); }
@Test public void testTupleSingleElement() throws FrontEndException, TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" + "CONSTANTS k \n" + "ASSUME k = <<TRUE>> \n" + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*BOOL)", t.getConstantType("k").toString()); }
@Test public void testTupleComponentsOfTheSameType() throws FrontEndException, TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" + "EXTENDS Naturals \n" + "CONSTANTS k \n" + "ASSUME k = <<1,1>> \n" + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("POW(INTEGER*INTEGER)", t.getConstantType("k").toString()); }
@Test public void testTupleFunctionCall2() throws FrontEndException, TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" + "EXTENDS Naturals \n" + "CONSTANTS k \n" + "ASSUME k = <<1,TRUE,\"str\">>[3] \n" + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("STRING", t.getConstantType("k").toString()); }
@Test public void testSimpleTuple() throws FrontEndException, TLA2BException { final String module = "-------------- MODULE Testing ----------------\n" + "EXTENDS Naturals \n" + "CONSTANTS k \n" + "ASSUME k = <<1,TRUE>> \n" + "================================="; TestTypeChecker t = TestUtil.typeCheckString(module); assertEquals("INTEGER*BOOL", t.getConstantType("k").toString()); }
@Test public void testUnifyTuple3() throws FrontEndException, TLA2BException { final String module = "-------------- MODULE Testing ----------------\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").toString()); assertEquals("INTEGER", t.getConstantType("k2").toString()); assertEquals("BOOL", t.getConstantType("k3").toString()); }