summaryrefslogtreecommitdiffstatshomepage
path: root/tests/basics/builtin_callable.py
diff options
context:
space:
mode:
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())