예제 #1
0
 def test_examples(self):
     p = HRParser()
     for (f, _, _, _) in get_example_formulae():
         s = f.serialize()
         res = p.parse(s)
         check = (res == f)
         if not check:
             try:
                 self.assertValid(Iff(res, f))
             except NoSolverAvailableError:
                 pass
예제 #2
0
 def test_examples(self):
     p = HRParser()
     for (f, _, _, _) in get_example_formulae():
         s = f.serialize()
         res = p.parse(s)
         check = (res == f)
         if not check:
             try:
                 self.assertValid(Iff(res, f))
             except NoSolverAvailableError:
                 pass
예제 #3
0
    def test_precedences(self):
        p = HRParser()

        a,b,c = (Symbol(v) for v in "abc")
        x,y = (Symbol(v, REAL) for v in "xy")

        tests = []
        tests.append(("a | b & c", Or(a, And(b,c))))
        tests.append(("a & b | c", Or(And(a, b) ,c)))

        f1 = LE(Plus(Plus(x, y), Real(5)), Real(7))
        f2 = LE(Plus(x, Real(5)), Minus(Real(7), y))
        tests.append(("x + y + 5.0 <= 7.0", f1))
        tests.append(("x + 5.0 <= 7.0 - y", f2))
        tests.append(("x + y + 5.0 <= 7.0 & x + 5.0 <= 7.0 - y", And(f1, f2)))
        tests.append(("x + 5.0 <= 7.0 - y | x + y + 5.0 <= 7.0 & x + 5.0 <= 7.0 - y",
                      Or(f2, And(f1, f2))))

        for string, formula in tests:
            self.assertEqual(p.parse(string), formula)
            self.assertEqual(parse(string), formula)
예제 #4
0
    def test_precedences(self):
        p = HRParser()

        a, b, c = (Symbol(v) for v in "abc")
        x, y = (Symbol(v, REAL) for v in "xy")

        tests = []
        tests.append(("a | b & c", Or(a, And(b, c))))
        tests.append(("a & b | c", Or(And(a, b), c)))

        f1 = LE(Plus(Plus(x, y), Real(5)), Real(7))
        f2 = LE(Plus(x, Real(5)), Minus(Real(7), y))
        tests.append(("x + y + 5.0 <= 7.0", f1))
        tests.append(("x + 5.0 <= 7.0 - y", f2))
        tests.append(("x + y + 5.0 <= 7.0 & x + 5.0 <= 7.0 - y", And(f1, f2)))
        tests.append(
            ("x + 5.0 <= 7.0 - y | x + y + 5.0 <= 7.0 & x + 5.0 <= 7.0 - y",
             Or(f2, And(f1, f2))))

        for string, formula in tests:
            self.assertEqual(p.parse(string), formula)
            self.assertEqual(parse(string), formula)