| |
| import unittest |
| from test import test_support |
| |
| class ComplexArgsTestCase(unittest.TestCase): |
| |
| def check(self, func, expected, *args): |
| self.assertEqual(func(*args), expected) |
| |
| # These functions are tested below as lambdas too. If you add a function test, |
| # also add a similar lambda test. |
| |
| def test_func_parens_no_unpacking(self): |
| def f(((((x))))): return x |
| self.check(f, 1, 1) |
| # Inner parens are elided, same as: f(x,) |
| def f(((x)),): return x |
| self.check(f, 2, 2) |
| |
| def test_func_1(self): |
| def f(((((x),)))): return x |
| self.check(f, 3, (3,)) |
| def f(((((x)),))): return x |
| self.check(f, 4, (4,)) |
| def f(((((x))),)): return x |
| self.check(f, 5, (5,)) |
| def f(((x),)): return x |
| self.check(f, 6, (6,)) |
| |
| def test_func_2(self): |
| def f(((((x)),),)): return x |
| self.check(f, 2, ((2,),)) |
| |
| def test_func_3(self): |
| def f((((((x)),),),)): return x |
| self.check(f, 3, (((3,),),)) |
| |
| def test_func_complex(self): |
| def f((((((x)),),),), a, b, c): return x, a, b, c |
| self.check(f, (3, 9, 8, 7), (((3,),),), 9, 8, 7) |
| |
| def f(((((((x)),)),),), a, b, c): return x, a, b, c |
| self.check(f, (3, 9, 8, 7), (((3,),),), 9, 8, 7) |
| |
| def f(a, b, c, ((((((x)),)),),)): return a, b, c, x |
| self.check(f, (9, 8, 7, 3), 9, 8, 7, (((3,),),)) |
| |
| # Duplicate the tests above, but for lambda. If you add a lambda test, |
| # also add a similar function test above. |
| |
| def test_lambda_parens_no_unpacking(self): |
| f = lambda (((((x))))): x |
| self.check(f, 1, 1) |
| # Inner parens are elided, same as: f(x,) |
| f = lambda ((x)),: x |
| self.check(f, 2, 2) |
| |
| def test_lambda_1(self): |
| f = lambda (((((x),)))): x |
| self.check(f, 3, (3,)) |
| f = lambda (((((x)),))): x |
| self.check(f, 4, (4,)) |
| f = lambda (((((x))),)): x |
| self.check(f, 5, (5,)) |
| f = lambda (((x),)): x |
| self.check(f, 6, (6,)) |
| |
| def test_lambda_2(self): |
| f = lambda (((((x)),),)): x |
| self.check(f, 2, ((2,),)) |
| |
| def test_lambda_3(self): |
| f = lambda ((((((x)),),),)): x |
| self.check(f, 3, (((3,),),)) |
| |
| def test_lambda_complex(self): |
| f = lambda (((((x)),),),), a, b, c: (x, a, b, c) |
| self.check(f, (3, 9, 8, 7), (((3,),),), 9, 8, 7) |
| |
| f = lambda ((((((x)),)),),), a, b, c: (x, a, b, c) |
| self.check(f, (3, 9, 8, 7), (((3,),),), 9, 8, 7) |
| |
| f = lambda a, b, c, ((((((x)),)),),): (a, b, c, x) |
| self.check(f, (9, 8, 7, 3), 9, 8, 7, (((3,),),)) |
| |
| |
| def test_main(): |
| test_support.run_unittest(ComplexArgsTestCase) |
| |
| if __name__ == "__main__": |
| test_main() |