From 416e40359817dc68835c09c63dd326db159f19a5 Mon Sep 17 00:00:00 2001 From: Stefan Behnel Date: Wed, 6 Feb 2008 19:55:26 +0100 Subject: [PATCH] more star args tests --- tests/run/starargs.pyx | 68 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 64 insertions(+), 4 deletions(-) diff --git a/tests/run/starargs.pyx b/tests/run/starargs.pyx index 5ca223b3..abf5ffd1 100644 --- a/tests/run/starargs.pyx +++ b/tests/run/starargs.pyx @@ -1,5 +1,6 @@ __doc__ = """ >>> spam(1,2,3) + (1, 2, 3) >>> spam(1,2) Traceback (most recent call last): TypeError: function takes exactly 3 arguments (2 given) @@ -11,8 +12,11 @@ __doc__ = """ TypeError: 'a' is an invalid keyword argument for this function >>> grail(1,2,3) + (1, 2, 3, ()) >>> grail(1,2,3,4) + (1, 2, 3, (4,)) >>> grail(1,2,3,4,5,6,7,8,9) + (1, 2, 3, (4, 5, 6, 7, 8, 9)) >>> grail(1,2) Traceback (most recent call last): TypeError: function takes exactly 3 arguments (2 given) @@ -21,31 +25,87 @@ __doc__ = """ TypeError: 'a' is an invalid keyword argument for this function >>> swallow(1,2,3) + (1, 2, 3, ()) >>> swallow(1,2,3,4) Traceback (most recent call last): TypeError: function takes at most 3 positional arguments (4 given) >>> swallow(1,2,3, a=1, b=2) + (1, 2, 3, (('a', 1), ('b', 2))) >>> swallow(1,2,3, x=1) Traceback (most recent call last): TypeError: keyword parameter 'x' was given by position and by name >>> creosote(1,2,3) + (1, 2, 3, (), ()) >>> creosote(1,2,3,4) + (1, 2, 3, (4,), ()) >>> creosote(1,2,3, a=1) + (1, 2, 3, (), (('a', 1),)) >>> creosote(1,2,3,4, a=1, b=2) + (1, 2, 3, (4,), (('a', 1), ('b', 2))) >>> creosote(1,2,3,4, x=1) Traceback (most recent call last): TypeError: keyword parameter 'x' was given by position and by name + + >>> onlyt(1) + (1,) + >>> onlyt(1,2) + (1, 2) + >>> onlyt(a=1) + Traceback (most recent call last): + TypeError: 'a' is an invalid keyword argument for this function + >>> onlyt(1, a=2) + Traceback (most recent call last): + TypeError: 'a' is an invalid keyword argument for this function + + >>> onlyk(a=1) + (('a', 1),) + >>> onlyk(a=1, b=2) + (('a', 1), ('b', 2)) + >>> onlyk(1) + Traceback (most recent call last): + TypeError: function takes at most 0 positional arguments (1 given) + >>> onlyk(1, 2) + Traceback (most recent call last): + TypeError: function takes at most 0 positional arguments (2 given) + >>> onlyk(1, a=1, b=2) + Traceback (most recent call last): + TypeError: function takes at most 0 positional arguments (1 given) + + >>> tk(a=1) + (('a', 1),) + >>> tk(a=1, b=2) + (('a', 1), ('b', 2)) + >>> tk(1) + (1,) + >>> tk(1, 2) + (1, 2) + >>> tk(1, a=1, b=2) + (1, ('a', 1), ('b', 2)) """ +cdef sorteditems(d): + l = d.items() + l.sort() + return tuple(l) + def spam(x, y, z): - pass + return (x, y, z) def grail(x, y, z, *a): - pass + return (x, y, z, a) def swallow(x, y, z, **k): - pass + return (x, y, z, sorteditems(k)) def creosote(x, y, z, *a, **k): - pass + return (x, y, z, a, sorteditems(k)) + +def onlyt(*a): + return a + +def onlyk(**k): + return sorteditems(k) + +def tk(*a, **k): + return a + sorteditems(k) -- 2.26.2