def test_call_kw(): def test_kw(): def kw(a=1,*, b=3, c=5): return a + b + c return kw() assert test_kw() == 9 assert test_kw() == eval_object_es5(test_kw, 'test_kw();') def test_kw2(a, c): def kw(a=1,*, b=3, c=5): return a + b + c return kw(a, c=c) assert test_kw2(1, 1) == 5 assert test_kw2(1, 1) == eval_object_es5(test_kw2, 'test_kw2(1, 1);') def test_kw3(foo, bar): def kw(foo, **kwargs): return foo + kwargs['bar'] return kw(foo, bar=bar) assert test_kw3(5, 10) == 15 assert test_kw3(5, 10) == eval_object_es5(test_kw3, 'test_kw3(5, 10);')
def test_try_except_complex(): def test_try(): value = 0 class MyError(Exception): pass class MySecondError(MyError): """A stupid error""" try: value += 1 raise MyError("Something bad happened") value += 1 except MySecondError: value += 20 except MyError: value += 30 except: value += 40 finally: value += 1 return value assert test_try() == 32 assert test_try() == eval_object_es5(test_try, 'test_try();')
def test_class_simple(): def test_class(): class Foo: def __init__(self): self.msg = 'foo' return Foo().msg assert test_class() == eval_object_es5(test_class, 'test_class();')
def test_call_kw(): def test_kw(): def kw(a=1,*, b=3, c=5): return a + b + c return kw() assert test_kw() == 9 assert test_kw() == eval_object_es5(test_kw, 'test_kw();') def test_kw2(a, c): def kw(a=1,*, b=3, c=5): return a + b + c return kw(a, c=c) assert test_kw2(1, 1) == 5 assert test_kw2(1, 1) == eval_object_es5(test_kw2, 'test_kw2(1, 1);')
def test_try_except_simple(): def test_try(): value = 0 try: value += 1 raise 'a string error' value += 1 except: value += 1 finally: value += 1 return value assert test_try() == 3 assert test_try() == eval_object_es5(test_try, 'test_try();')
def test_call_rest(): def test_rest(): a = [1, 2, 3, 4, 5] def rest(*values): res = 0 for i in values: res += i return res return rest(*a) assert test_rest() == 15 assert test_rest() == eval_object_es5(test_rest, 'test_rest();')
def test_class_inherit(): def test_class(): class Animal: def __init__(self, name): self.name = name class TalkingAnimal(Animal): def __init__(self, name, catchphrase): super().__init__(name) self.catchphrase = catchphrase def caption(self): return self.name + " sez '" + self.catchphrase + "'" return TalkingAnimal('Pac-Man', 'waka waka').caption() assert test_class() == eval_object_es5(test_class, 'test_class();')
def test_class_super(): def test_class(): class Animal: def __init__(self, name): self.name = name class TalkingAnimal(Animal): def __init__(self, name, catchphrase): super().__init__(name) self.catchphrase = catchphrase def caption(self): return self.name + " sez '" + self.catchphrase + "'" class Kitteh(TalkingAnimal): def __init__(self, name): super().__init__(name, 'OH HAI') def caption(self): return 'OMG AWESOMECUTE: ' + super().caption() return Kitteh('Maru-san').caption() assert test_class() == eval_object_es5(test_class, 'test_class();')