Example #1
0
    def test_basic_unification(self):
        assert_true(mia.unify(mia))

        two = Term.from_integer(2)
        assert_true(two, two)

        assert_false(mia.unify(vincent))

        with Frame():
            assert_true(Term().unify(mia))

        with Frame():
            assert_true(Term().unify(Term()))

        with Frame():
            X = Term()
            assert_true(X.unify(mia))
            assert_false(X.unify(vincent))

        k = Functor('k', 2)
        s = Functor('s', 1)
        t = Functor('t', 1)
        g = Term.from_atom_name('g')
        k_atom = Term.from_atom_name('k')

        with Frame():
            X = Term()
            Y = Term()

            assert_true(k(s(g), Y).unify(k(X, t(k_atom))))
            assert_equal(X, s(g))
            assert_equal(Y, t(k_atom))

        with Frame():
            X = Term()
            Y = Term()

            assert_true(k(s(g), t(k_atom)).unify(k(X, t(Y))))
            assert_equal(X, s(g))
            assert_equal(Y, k_atom)

        self.retractall(loves(Term(), Term()))
        self.assertz(loves(vincent, mia))
        self.assertz(loves(marcellus, mia))
        self.assertz(loves(pumpkin, honey_bunny))
        self.assertz(loves(honey_bunny, pumpkin))

        with Frame():
            X = Term()
            assert_false(loves(X, X).unify(loves(marcellus, mia)))
Example #2
0
 def test_unification_right(self):
     X = Term()
     assert_not_equal(self.term, X)
     X.unify(self.term)
     assert_equal(self.term, X)