def test_function_wrapper_copy(): class Test(object): def __init__(self): self.n = 0 def t(self) -> None: self.n += 1 test = Test() w1 = FunctionWrapper(test.t, "", "n") w2 = copy.copy(w1) w3 = copy.deepcopy(w1) w1.run([], {}, output=False) w2.run([], {}, output=False) w3.run([], {}, output=False) assert 3 == test.n
def test_function_wrapper(): for f in [f20, f21, f212, f22, f23, f24, f25, f26, f30, f31, f32, f35]: df = ArrayDataFrame([[0]], "a:int") w = FunctionWrapper(f, "^[ldsp][ldsp]$", "[ldspq]") res = w.run([df], dict(a=df), ignore_unknown=False, output_schema="a:int") df_eq(res, [[0], [0]], "a:int", throw=True) w.run([df], dict(a=df), ignore_unknown=False, output=False) # test other data types, simple operations w = FunctionWrapper(f27) assert 3 == w(1, 2) assert 3 == w.run([1, 2], dict(), ignore_unknown=False) assert 3 == w.run([5], dict(a=1, b=2), ignore_unknown=True) # dict will overwrite assert 3 == w.run([], dict(a=1, b=2, c=4), ignore_unknown=True) raises(ValueError, lambda: w.run([], dict(a=1, b=2, c=4), ignore_unknown=False)) # test default and required w = FunctionWrapper(f28) assert 3 == w.run([], dict(a=1, b=2), ignore_unknown=False) assert 2 == w.run([], dict(a=1), ignore_unknown=False) assert 3 == w.run([], dict(a=1, b=2), ignore_unknown=True) assert 3 == w.run([], dict(a=1, b=2, c=4), ignore_unknown=True) raises(ValueError, lambda: w.run([], dict(a=1, b=2, c=4), ignore_unknown=False)) raises(ValueError, lambda: w.run([], dict(b=2), ignore_unknown=True)) # test kwargs w = FunctionWrapper(f29) assert 3 == w.run([], dict(a=1, b=2), ignore_unknown=False) assert 1 == w.run([], dict(a=1), ignore_unknown=False) assert 3 == w.run([], dict(a=1, b=2), ignore_unknown=True) assert 7 == w.run([], dict(a=1, b=2, c=4), ignore_unknown=True) assert 7 == w.run([], dict(a=1, b=2, c=4), ignore_unknown=False) # test method inside class class Test(object): def t(self, a=1, b=2) -> int: return a + b test = Test() # instance method test w = FunctionWrapper(test.t, "^0?.*", ".*") assert 4 == w.run([], kwargs={"b": 3}, ignore_unknown=True) assert 5 == w.run([2], kwargs={"b": 3}, ignore_unknown=True)
def test_function_wrapper(): for f in [f20, f21, f22, f23, f24, f25, f26, f30, f31, f32]: df = ArrayDataFrame([[0]], "a:int") w = FunctionWrapper(f, "^[ldsp][ldsp]$", "[ldsp]") res = w.run([df], dict(a=df), ignore_unknown=False, output_schema="a:int") df_eq(res, [[0], [0]], "a:int", throw=True) # test other data types, simple operations w = FunctionWrapper(f27) assert 3 == w(1, 2) assert 3 == w.run([1, 2], dict(), ignore_unknown=False) assert 3 == w.run([5], dict(a=1, b=2), ignore_unknown=True) # dict will overwrite assert 3 == w.run([], dict(a=1, b=2, c=4), ignore_unknown=True) raises(ValueError, lambda: w.run([], dict(a=1, b=2, c=4), ignore_unknown=False)) # test default and required w = FunctionWrapper(f28) assert 3 == w.run([], dict(a=1, b=2), ignore_unknown=False) assert 2 == w.run([], dict(a=1), ignore_unknown=False) assert 3 == w.run([], dict(a=1, b=2), ignore_unknown=True) assert 3 == w.run([], dict(a=1, b=2, c=4), ignore_unknown=True) raises(ValueError, lambda: w.run([], dict(a=1, b=2, c=4), ignore_unknown=False)) raises(ValueError, lambda: w.run([], dict(b=2), ignore_unknown=True)) # test kwargs w = FunctionWrapper(f29) assert 3 == w.run([], dict(a=1, b=2), ignore_unknown=False) assert 1 == w.run([], dict(a=1), ignore_unknown=False) assert 3 == w.run([], dict(a=1, b=2), ignore_unknown=True) assert 7 == w.run([], dict(a=1, b=2, c=4), ignore_unknown=True) assert 7 == w.run([], dict(a=1, b=2, c=4), ignore_unknown=False)