def test_objects_full(): _unify.add((Foo, Foo, dict), unify_object) _unify.add((Bar, Bar, dict), unify_object) _reify.add((Foo, dict), reify_object) _reify.add((Bar, dict), reify_object) assert unify_object(Foo(1, Bar(2)), Foo(1, Bar(var(3))), {}) == {var(3): 2} assert reify(Foo(var('a'), Bar(Foo(var('b'), 3))), {var('a'): 1, var('b'): 2}) == Foo(1, Bar(Foo(2, 3)))
def test_run_objects_with_context_manager(): f = Foo(1, 1234) g = Foo(1, 2) _unify.add((Foo, Foo, dict), unify_object) _reify.add((Foo, dict), reify_object) with variables(1234): assert unify_object(f, g, {}) assert run(1, 1234, (eq, f, g)) == (2,) assert run(1, Foo(1234, 1234), (eq, f, g)) == (Foo(2, 2),)
def test_run_objects_with_context_manager(): f = Foo(1, 1234) g = Foo(1, 2) _unify.add((Foo, Foo, dict), unify_object) _reify.add((Foo, dict), reify_object) with variables(1234): assert unify_object(f, g, {}) assert run(1, 1234, (eq, f, g)) == (2, ) assert run(1, Foo(1234, 1234), (eq, f, g)) == (Foo(2, 2), )
def test_objects_full(): _unify.add((Foo, Foo, dict), unify_object) _unify.add((Bar, Bar, dict), unify_object) _reify.add((Foo, dict), reify_object) _reify.add((Bar, dict), reify_object) assert unify_object(Foo(1, Bar(2)), Foo(1, Bar(var(3))), {}) == {var(3): 2} assert reify(Foo(var('a'), Bar(Foo(var('b'), 3))), { var('a'): 1, var('b'): 2 }) == Foo(1, Bar(Foo(2, 3)))
def test_run_objects_with_context_manager(): f = Foo(1, 1234) g = Foo(1, 2) unify_dispatch[(Foo, Foo)] = unify_object reify_dispatch[Foo] = reify_object with variables(1234): assert unify_object(f, g, {}) assert run(1, 1234, (eq, f, g)) == (2,) assert run(1, Foo(1234, 1234), (eq, f, g)) == (Foo(2, 2),) del reify_dispatch[Foo] del unify_dispatch[(Foo, Foo)]
def test_objects_full(): unify_dispatch[(Foo, Foo)] = unify_object unify_dispatch[(Bar, Bar)] = unify_object reify_dispatch[Foo] = reify_object reify_dispatch[Bar] = reify_object assert unify_object(Foo(1, Bar(2)), Foo(1, Bar(var(3))), {}) == {var(3): 2} assert reify(Foo(var('a'), Bar(Foo(var('b'), 3))), {var('a'): 1, var('b'): 2}) == Foo(1, Bar(Foo(2, 3))) del reify_dispatch[Bar] del reify_dispatch[Foo] del unify_dispatch[(Foo, Foo)] del unify_dispatch[(Bar, Bar)]
def test_unify_object(): assert unify_object(Foo(1, 2), Foo(1, 2), {}) == {} assert unify_object(Foo(1, 2), Foo(1, 3), {}) == False assert unify_object(Foo(1, 2), Foo(1, var(3)), {}) == {var(3): 2}