summaryrefslogtreecommitdiff
path: root/tests/basics/class_bases.py
diff options
context:
space:
mode:
authorJosh Lloyd <j.nevercast@gmail.com>2019-09-24 17:01:54 +1200
committerDamien George <damien.p.george@gmail.com>2019-10-18 15:20:56 +1100
commit8f9e2e325ab0d0dfa9457779010a4cb2cfe60fef (patch)
tree08d4fcea0a6c9c124d50a93013f40cf876e7aa02 /tests/basics/class_bases.py
parent59c1b7d4b8fb1d441f9322976582c8709f01dfbe (diff)
py/objtype: Add type.__bases__ attribute.
Enabled as part of MICROPY_CPYTHON_COMPAT.
Diffstat (limited to 'tests/basics/class_bases.py')
-rw-r--r--tests/basics/class_bases.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/tests/basics/class_bases.py b/tests/basics/class_bases.py
new file mode 100644
index 000000000..d3cf4f598
--- /dev/null
+++ b/tests/basics/class_bases.py
@@ -0,0 +1,45 @@
+# test for type.__bases__ implementation
+
+if not hasattr(object, '__bases__'):
+ print("SKIP")
+ raise SystemExit
+
+class A:
+ pass
+
+class B(object):
+ pass
+
+class C(B):
+ pass
+
+class D(C, A):
+ pass
+
+# Check the attribute exists
+print(hasattr(A, '__bases__'))
+print(hasattr(B, '__bases__'))
+print(hasattr(C, '__bases__'))
+print(hasattr(D, '__bases__'))
+
+# Check it is always a tuple
+print(type(A.__bases__) == tuple)
+print(type(B.__bases__) == tuple)
+print(type(C.__bases__) == tuple)
+print(type(D.__bases__) == tuple)
+
+# Check size
+print(len(A.__bases__) == 1)
+print(len(B.__bases__) == 1)
+print(len(C.__bases__) == 1)
+print(len(D.__bases__) == 2)
+
+# Check values
+print(A.__bases__[0] == object)
+print(B.__bases__[0] == object)
+print(C.__bases__[0] == B)
+print(D.__bases__[0] == C)
+print(D.__bases__[1] == A)
+
+# Object has an empty tuple
+print(object.__bases__ == tuple())