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})