summaryrefslogtreecommitdiffstatshomepage
path: root/tests/basics/builtin_callable.py
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2014-11-03 16:09:39 +0000
committerDamien George <damien.p.george@gmail.com>2014-11-03 16:09:39 +0000
commit0344fa1ddfbe8674061fed8e904468b9bd2aa550 (patch)
tree54f4e31a21eb4722bbc07fb7d939a6364e5d2276 /tests/basics/builtin_callable.py
parent2cd79fa92484330e415cf0b400544ad90205a611 (diff)
downloadmicropython-0344fa1ddfbe8674061fed8e904468b9bd2aa550.tar.gz
micropython-0344fa1ddfbe8674061fed8e904468b9bd2aa550.zip
py: Fix builtin callable so it checks user-defined instances correctly.
Addresses issue #953.
Diffstat (limited to 'tests/basics/builtin_callable.py')
-rw-r--r--tests/basics/builtin_callable.py42
1 files changed, 40 insertions, 2 deletions
diff --git a/tests/basics/builtin_callable.py b/tests/basics/builtin_callable.py
index caddb885cf..3ae49f004d 100644
--- a/tests/basics/builtin_callable.py
+++ b/tests/basics/builtin_callable.py
@@ -1,5 +1,43 @@
-import sys
+# test builtin callable
+
+# primitives should not be callable
+print(callable(None))
print(callable(1))
+print(callable([]))
print(callable("dfsd"))
-print(callable(callable))
+
+# modules should not be callabe
+import sys
print(callable(sys))
+
+# builtins should be callable
+print(callable(callable))
+
+# lambdas should be callable
+print(callable(lambda:None))
+
+# user defined functions should be callable
+def f():
+ pass
+print(callable(f))
+
+# types should be callable, but not instances
+class A:
+ pass
+print(callable(A))
+print(callable(A()))
+
+# instances with __call__ method should be callable
+class B:
+ def __call__(self):
+ pass
+print(callable(B()))
+
+# this checks internal use of callable when extracting members from an instance
+class C:
+ def f(self):
+ return "A.f"
+class D:
+ g = C() # g is a value and is not callable
+print(callable(D().g))
+print(D().g.f())