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')
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))