--- test_getargs2_svn.py 2006-07-26 19:23:15.000000000 -0400 +++ test_getargs2.py 2007-04-04 04:20:02.000000000 -0400 @@ -249,9 +249,64 @@ raise ValueError self.assertRaises(TypeError, getargs_tuple, 1, seq()) +class Keywords_TestCase(unittest.TestCase): + def test_positional_args(self): + ## using all positional args + from _testcapi import getargs_keywords + self.assertEquals( + getargs_keywords((1,2), 3, (4,(5,6)), (7,8,9), 10), + (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) + ) + def test_mixed_args(self): + ## positional and keyword args + from _testcapi import getargs_keywords + self.assertEquals( + getargs_keywords((1,2), 3, (4,(5,6)), arg4=(7,8,9), arg5=10), + (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) + ) + def test_keyword_args(self): + ## all keywords + from _testcapi import getargs_keywords + self.assertEquals( + getargs_keywords(arg1=(1,2), arg2=3, arg3=(4,(5,6)), arg4=(7,8,9), arg5=10), + (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) + ) + def test_optional_args(self): + ## missing optional keyword args, skipping tuples + from _testcapi import getargs_keywords + self.assertEquals( + getargs_keywords(arg1=(1,2), arg2=3, arg5=10), + (1, 2, 3, -1, -1, -1, -1, -1, -1, 10) + ) + def test_required_args(self): + ## required arg missing + from _testcapi import getargs_keywords + try: + getargs_keywords(arg1=(1,2)) + except TypeError, err: + self.assertEquals(str(err), "Required argument 'arg2' (pos 2) not found") + else: + raise RuntimeError, 'TypeError should have been raised' + def test_too_many_args(self): + from _testcapi import getargs_keywords + try: + getargs_keywords((1,2),3,(4,(5,6)),(7,8,9),10,111) + except TypeError, err: + self.assertEquals(str(err), "function takes at most 5 arguments (6 given)") + else: + raise RuntimeError, 'TypeError should have been raised' + def test_invalid_keyword(self): + ## extraneous keyword arg + from _testcapi import getargs_keywords + try: + getargs_keywords((1,2),3,arg5=10,arg666=666) + except TypeError, err: + self.assertEquals(str(err), "'arg666' is an invalid keyword argument for this function") + else: + raise RuntimeError, 'TypeError should have been raised' def test_main(): - tests = [Signed_TestCase, Unsigned_TestCase, Tuple_TestCase] + tests = [Signed_TestCase, Unsigned_TestCase, Tuple_TestCase, Keywords_TestCase] try: from _testcapi import getargs_L, getargs_K except ImportError: