diff options
author | Damien George <damien.p.george@gmail.com> | 2014-11-03 16:09:39 +0000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-11-03 16:09:39 +0000 |
commit | 0344fa1ddfbe8674061fed8e904468b9bd2aa550 (patch) | |
tree | 54f4e31a21eb4722bbc07fb7d939a6364e5d2276 /tests/basics/builtin_callable.py | |
parent | 2cd79fa92484330e415cf0b400544ad90205a611 (diff) | |
download | micropython-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.py | 42 |
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()) |