from kwargs_feature import * class MyFoo(Foo): def __init__(self, a, b=0): Foo.__init__(self, a, b) # Simple class f1 = MyFoo(2) f = Foo(b=2, a=1) if f.foo(b=1, a=2) != 3: raise RuntimeError if Foo_statfoo(b=2) != 3: raise RuntimeError if f.efoo(b=2) != 3: raise RuntimeError if Foo_sfoo(b=2) != 3: raise RuntimeError # Templated class b = BarInt(b=2, a=1) if b.bar(b=1, a=2) != 3: raise RuntimeError if BarInt_statbar(b=2) != 3: raise RuntimeError if b.ebar(b=2) != 3: raise RuntimeError if BarInt_sbar(b=2) != 3: raise RuntimeError # Functions if templatedfunction(b=2) != 3: raise RuntimeError if foo_fn(a=1, b=2) != 3: raise RuntimeError if foo_fn(b=2) != 3: raise RuntimeError # Functions with keywords if foo_kw(_from=2) != 4: raise RuntimeError if foo_nu(_from=2, arg2=3) != 2: raise RuntimeError if foo_mm(min=2) != 4: raise RuntimeError if foo_mm(max=3) != 4: raise RuntimeError # Default args with references if rfoo(n=123) != 120: raise RuntimeError if rfoo(x=10) != -10: raise RuntimeError if rfoo(n=11, x=22) != -11: raise RuntimeError if rfoo(x=11, n=22) != 11: raise RuntimeError # Extended constructors e = Extending0() e = Extending1(one=1) e = Extending1(1) e = Extending2(1, "two") e = Extending2(1, two="two") e = Extending2(two="two", one=1) e = ExtendingOptArgs1() e = ExtendingOptArgs1(1) e = ExtendingOptArgs2(one=1) e = ExtendingOptArgs2() e = ExtendingOptArgs2(one=1) e = ExtendingOptArgs2(two="two") e = ExtendingOptArgs2(two="two", one=1) # Invalid kwargs test h = Hello() try: h = Hello(nonexistent=10) raise RuntimeError("missed exception") except TypeError as e: pass f = Foo(1) f = Foo(a=1) try: f = Foo(nonexistent=10) raise RuntimeError("missed exception") except TypeError as e: pass try: f = Foo(a=1, nonexistent=10) raise RuntimeError("missed exception") except TypeError as e: pass try: f = Foo(1, nonexistent=10) raise RuntimeError("missed exception") except TypeError as e: pass