def test__get_normalized_kwargs(self): def f(a, b, c): raise NotImplementedError() sig = FunctionSignature(f) self.assertEquals( sig.get_normalized_args((1,2,3), {}), dict(a=1, b=2, c=3) ) with self.assertRaises(SignatureException): sig.get_normalized_args((1, 2, 3), dict(a=1))
def test__get_normalized_kwargs_unknown_keywords(self): def f(a, b, c, *args): raise NotImplementedError() sig = FunctionSignature(f) with self.assertRaises(UnknownArguments): sig.get_normalized_args((1, 2, 3, 4), dict(d=5))
def test__get_normalized_kwargs_missing_positionals(self): def f(a, b, c, **kwargs): raise NotImplementedError() sig = FunctionSignature(f) with self.assertRaises(MissingArguments): sig.get_normalized_args((1,), dict(b=2, d=5))
def test__normalizing_kwargs_with_numbers(self): # this is supported in python, but interferes with the arg-normalizing logic sig = FunctionSignature(lambda *args, **kwargs: None) with self.assertRaises(InvalidKeywordArgument): sig.get_normalized_args((), {1:2})