@Test(expected = KEMException.class) public void testAmbiguityError() { K term = cell("<ts>", cell("<k>", intToToken(1)), cell("<k>", intToToken(2)), cell("<env>", intToToken(2))); pass.concretizeCell(term); }
@Test public void testDeep2() { Assert.assertEquals(Lists.newArrayList(cell("<ts>", cell("<t>", intToToken(1)), cell("<t>", intToToken(2)))), pass.makeParents(KLabel("<ts>"), false, Lists.newArrayList(cell("<t>", intToToken(1)), cell("<t>", intToToken(2))))); }
@Test public void testNestedCompletion() { K term = cell("<T>", cell("<t>", cell("<msg>", intToToken(0)), cell("<msgId>", intToToken(1))), cell("<k>", intToToken(2)), cell("<env>", intToToken(3)), cell("<msgId>", intToToken(4)), cell("<msgId>", intToToken(5)), cell("<t>", cell("<k>", intToToken(6)))); K expected = cell("<T>",cell("<ts>", cell("<t>", cell("<msg>", intToToken(0)), cell("<msg>", cell("<msgId>", intToToken(1)))), cell("<t>", cell("<k>", intToToken(6))), cell("<t>", cell("<k>", intToToken(2)), cell("<env>", intToToken(3)), cell("<msg>", cell("<msgId>", intToToken(4))), cell("<msg>", cell("<msgId>", intToToken(5)))) )); Assert.assertEquals(expected, pass.concretize(term)); }
@Test public void testDotsTogether() { K term = cell("<ts>", true, false, cell("<k>", intToToken(0)), cell("<env>",intToToken(2))); K expected = cell("<ts>", true, true, cell("<t>", true, true, cell("<k>", intToToken(0)), cell("<env>",intToToken(2)))); Assert.assertEquals(expected, pass.concretizeCell(term)); }
@Test public void testOneLeafCellNoCompletion() { K term = cell("<k>", intToToken(2)); K expected = cell("<k>", intToToken(2)); Assert.assertEquals(expected, pass.concretizeCell(term)); }
@Test public void testMultiplicityShared() { K term = cell("<ts>", cell("<k>", intToToken(1)), cell("<env>", intToToken(2))); K expected = cell("<ts>", cell("<t>", cell("<k>", intToToken(1)), cell("<env>", intToToken(2)))); Assert.assertEquals(expected, pass.concretizeCell(term)); }
@Test public void testMultiplicitySeparate() { K term = cell("<ts>", cell("<k>", intToToken(1)), cell("<k>", intToToken(2))); K expected = cell("<ts>", cell("<t>", cell("<k>", intToToken(1))), cell("<t>", cell("<k>", intToToken(2)))); Assert.assertEquals(expected, pass.concretizeCell(term)); }
@Test public void testDeep() { K term = cell("<T>", cell("<k>", intToToken(1)), cell("<k>", intToToken(2))); K expected = cell("<T>", cell("<ts>", cell("<t>", cell("<k>", intToToken(1))), cell("<t>", cell("<k>", intToToken(2))))); Assert.assertEquals(expected, pass.concretizeCell(term)); }
@Test public void testDotsApart() { K term = cell("<T>", true, false, cell("<k>", intToToken(1)), cell("<k>", intToToken(2))); K expected = cell("<T>", true, true, cell("<ts>", true, true, cell("<t>", true, true, cell("<k>", intToToken(1))), cell("<t>", true, true, cell("<k>", intToToken(2))))); Assert.assertEquals(expected, pass.concretizeCell(term)); }
@Test public void testCloseMap() { K term = cell("<env>", true, false, KApply(KLabel("'_|=>_"), intToToken(1), intToToken(2))); K expected = ccell("<env>", KApply(KLabel("_Map_"), KApply(KLabel("'_|=>_"), intToToken(1), intToToken(2)), KVariable("DotVar0"))); Assert.assertEquals(expected, new CloseCells(cfgInfo, sortInfo, labelInfo).close(term)); }
@Test public void testCloseCellVar() { K term = KApply(KLabels.CELLS, cell("<thread>", true, false, cell("<k>", intToToken(1))), cell("<thread>", false, true, cell("<k>", intToToken(2))), cell("<thread>", true, true, cell("<k>", intToToken(2)))); K expected = KApply(KLabels.CELLS, ccell("<thread>", ccell("<k>", intToToken(1)), KVariable("DotVar0")), ccell("<thread>", ccell("<k>", intToToken(2)), KVariable("DotVar1")), ccell("<thread>", ccell("<k>", intToToken(2)), KVariable("DotVar2"))); Assert.assertEquals(expected, new CloseCells(cfgInfo, sortInfo, labelInfo).close(term)); }
@Test public void testTwoCellsNoCompletion() { K term = cell("<t>", cell("<k>", intToToken(2))); K expected = cell("<t>", cell("<k>", intToToken(2))); Assert.assertEquals(expected, pass.concretizeCell(term)); }
@Test public void testRewrites() { K term = cell("<T>", cell("<k>", intToToken(1)), KRewrite(cell("<k>", intToToken(2)), cell("<k>"))); K expected = cell("<T>", cell("<ts>", cell("<t>", cell("<k>", intToToken(1))), cell("<t>", KRewrite(cell("<k>", intToToken(2)), cell("<k>"))))); Assert.assertEquals(expected, pass.concretizeCell(term)); }
@Test public void testTwoCellsCompletion() { K term = cell("<ts>", cell("<k>", intToToken(2))); K expected = cell("<ts>", cell("<t>", cell("<k>", intToToken(2)))); Assert.assertEquals(expected, pass.concretizeCell(term)); }
@Test public void testCloseList() { K term = KApply(KLabels.CELLS, cell("<list>", true, false, intToToken(1)), cell("<list>", false, true, intToToken(2)), cell("<list>", true, true, intToToken(3))); K expected = KApply(KLabels.CELLS, ccell("<list>", KApply(KLabel("_List_"), KVariable("DotVar0"), intToToken(1))), ccell("<list>", KApply(KLabel("_List_"), intToToken(2), KVariable("DotVar1"))), ccell("<list>", KApply(KLabel("_List_"), KVariable("DotVar2"), KApply(KLabel("_List_"), intToToken(3), KVariable("DotVar3"))))); Assert.assertEquals(expected, new CloseCells(cfgInfo, sortInfo, labelInfo).close(term)); }
@Test public void testTwoRewritesFit() { K term = cell("<T>", KRewrite(cells(), cell("<k>", intToToken(1))), KRewrite(cell("<k>", intToToken(2)), cells())); K expected = cell("<T>", cell("<ts>", cell("<t>", KRewrite(cells(), cell("<k>", intToToken(1))), KRewrite(cell("<k>", intToToken(2)), cells())))); Assert.assertEquals(expected, pass.concretizeCell(term)); }
@Test public void testRewriteWithCells() { K term = cell("<T>", cell("<k>", intToToken(1)), KRewrite(cells(cell("<k>", intToToken(2)), cell("<msg>")), cell("<k>"))); K expected = cell("<T>", cell("<ts>", cell("<t>", cell("<k>", intToToken(1))), cell("<t>", KRewrite(cells(cell("<k>", intToToken(2)), cell("<msg>")), cell("<k>"))))); Assert.assertEquals(expected, pass.concretizeCell(term)); }
@Test public void testCloseCellTerm() { K term = KRewrite(cells(), cells(cell("<thread>", true, false, cell("<k>", intToToken(1))), cell("<thread>", false, true, cell("<k>", intToToken(2))), cell("<thread>", true, true, cell("<env>", intToToken(2))))); K expected = KRewrite(cells(), cells(ccell("<thread>", ccell("<k>", intToToken(1)), ccell("<env>", KApply(KLabel(".Map")))), ccell("<thread>", ccell("<k>", intToToken(2)), ccell("<env>", KApply(KLabel(".Map")))), ccell("<thread>", ccell("<env>", intToToken(2)), ccell("<k>", stringToToken("defaultK"))))); Assert.assertEquals(expected, new CloseCells(cfgInfo, sortInfo, labelInfo).close(term)); }
@Test public void testRewriteWithCellVariable() { K term = cell("<T>", KRewrite(KVariable("KCell", Att().add(Sort.class, Sort("KCell"))), cell("<k>", intToToken(1)))); K expected = cell("<T>", cell("<ts>", cell("<t>", KRewrite(KVariable("KCell", Att().add(Sort.class, Sort("KCell"))), cell("<k>", intToToken(1)))))); Assert.assertEquals(expected, pass.concretizeCell(term)); }