summaryrefslogtreecommitdiffstatshomepage
path: root/tests/basics
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2014-04-27 15:50:52 +0100
committerDamien George <damien.p.george@gmail.com>2014-04-27 15:50:52 +0100
commit2827d62e8b5790b2d770b9ce54e25cd56e949f20 (patch)
treecca15628b4649f6d404990ffc1531ac5aeee0225 /tests/basics
parent36cbd0db7e4f297c8fc729c842b171af2cfd04c7 (diff)
downloadmicropython-2827d62e8b5790b2d770b9ce54e25cd56e949f20.tar.gz
micropython-2827d62e8b5790b2d770b9ce54e25cd56e949f20.zip
py: Implement keyword-only args.
Implements 'def f(*, a)' and 'def f(*a, b)', but not default keyword-only args, eg 'def f(*, a=1)'. Partially addresses issue #524.
Diffstat (limited to 'tests/basics')
-rw-r--r--tests/basics/fun-kwonly.py68
1 files changed, 68 insertions, 0 deletions
diff --git a/tests/basics/fun-kwonly.py b/tests/basics/fun-kwonly.py
new file mode 100644
index 0000000000..8bda68d95a
--- /dev/null
+++ b/tests/basics/fun-kwonly.py
@@ -0,0 +1,68 @@
+# to test keyword-only arguments
+
+# simplest case
+def f(*, a):
+ print(a)
+
+f(a=1)
+
+# with 2 keyword-only args
+def f(*, a, b):
+ print(a, b)
+
+f(a=1, b=2)
+f(b=1, a=2)
+
+# positional followed by bare star
+def f(a, *, b, c):
+ print(a, b, c)
+
+f(1, b=3, c=4)
+f(1, c=3, b=4)
+f(1, **{'b':'3', 'c':4})
+
+try:
+ f(1)
+except TypeError:
+ print("TypeError")
+
+try:
+ f(1, b=2)
+except TypeError:
+ print("TypeError")
+
+try:
+ f(1, c=2)
+except TypeError:
+ print("TypeError")
+
+# with **kw
+def f(a, *, b, **kw):
+ print(a, b, kw)
+
+f(1, b=2)
+f(1, b=2, c=3)
+
+## with a default value; not currently working
+#def g(a, *, b=2, c):
+# print(a, b, c)
+#
+#g(1, c=3)
+#g(1, b=3, c=4)
+#g(1, **{'c':3})
+#g(1, **{'b':'3', 'c':4})
+
+# with named star
+def f(*a, b, c):
+ print(a, b, c)
+
+f(b=1, c=2)
+f(c=1, b=2)
+
+# with positional and named star
+def f(a, *b, c):
+ print(a, b, c)
+
+f(1, c=2)
+f(1, 2, c=3)
+f(a=1, c=3)