def test_addmethod(): D = MultiMethod('add') D.add((int, int), lambda x, y: x + y) D.add((float, float), lambda x, y: x + y) assert D(1, 2) == 3 assert D(1.0, 2.0) == 3.0
def test_arguments(): f = MultiMethod('f') @f.register(int, int) @f.register(int) def foo(a, b=10): return a - b assert foo(10, 3) == 7 assert foo(5) == -5 assert foo(b=2, a=1) == -1 assert foo(a=1, b=2) == -1