def matchOK(self, pat, exp, expected): subst = matchAgainst(pExp(pat), pExp(exp)) if subst: subst_l = list(subst.iteritems()) subst_l.sort() subst = "".join(["%s->%s;" % (vname, e) for (vname, e) in subst_l]) self.assertEqual(expected, subst)
def testSubst(self): "Subst" e1 = pExp("E1") e2 = pExp("E2") e = pExp("Cons(x1, Cons(x2, Cons(x3, Nil)))") subst = {"x1": e1, "x2": e2} self.assertEqual("Cons(E1,Cons(E2,Cons(x3,Nil)))", "%s" % e.applySubst(subst))
def msgOK(self, e1, e2, expected): msgBuilder = MSGBuilder(NameGen("v", 100)) gen = msgBuilder.build(pExp(e1), pExp(e2)) self.assertEqual(expected, "%s" % gen)
def buildPrTreeOK(self, prog, e, expected): tree = self.buildPrTree(pProg(prog), pExp(e)) self.assertEqual(expected, "%s" % tree)
def varAttackTrue(self, input): e = pExp(input) self.assertTrue(aVarIsUnderAttack(e))
def heTrue(self, input1, input2): e1 = pExp(input1) e2 = pExp(input2) self.assertTrue(he(e1, e2))
def equivNo(self, e1, e2): self.assertFalse(equiv(pExp(e1), pExp(e2)))
def equivYes(self, e1, e2): self.assertTrue(equiv(pExp(e1), pExp(e2)))
def matchNone(self, pat, exp): subst = matchAgainst(pExp(pat), pExp(exp)) self.assertEqual(None, subst)
def testVars(self): "Vars" e = pExp("A(x,B(y,z),a)") self.assertEqual(['x', 'y', 'z', 'a'], e.vars())
def advancedScpOK(self, prog, e, expected): (resPr, resExp) = self.runAdvancedScp(pProg(prog), pExp(e)) res_s = "%s$%s" % (resPr, resExp) self.assertEqual(expected, res_s)
def heFalse(self, input1, input2): e1 = pExp(input1) e2 = pExp(input2) self.assertFalse(he(e1, e2))
def varAttackFalse(self, input): e = pExp(input) self.assertFalse(aVarIsUnderAttack(e))
def drStep(self, prog, e, expected): self.drStep0(pProg(prog), pExp(e), expected)