예제 #1
0
def test_frame_discard():
    eq = Predicate.from_name_arity('=', 2)

    X = Term()
    with Frame(discard=True):
        X.put_integer(1)
        assert_equal(str(X), '1')
    assert_equal(str(X), '1')

    X = Term()
    with Frame(discard=True):
        eq(X, Term.from_integer(1))
        assert_equal(str(X), '1')
        assert_equal(X.type(), 'integer')
    assert_not_equal(str(X), '1')
    assert_equal(X.type(), 'variable')
예제 #2
0
def test_frame_rewind():
    X = Term()
    with Frame() as f:
        t = f.term()
        t.put_integer(1)
        X.unify_integer(2)
        assert_equal(t, Term.from_integer(1))
        assert_equal(X, Term.from_integer(2))

        f.rewind()
        with assert_raises(AttributeError):
            str(t)

        assert_equal(X.type(), 'variable')
        X.unify_integer(3)
        assert_equal(X, Term.from_integer(3))
        f.rewind()
        assert_equal(X.type(), 'variable')
        X.unify_integer(2)

    assert_equal(X, Term.from_integer(2))