summaryrefslogtreecommitdiff
path: root/test/base/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/base/utils.py')
-rw-r--r--test/base/utils.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/test/base/utils.py b/test/base/utils.py
index 3ce956a16..2c4edc692 100644
--- a/test/base/utils.py
+++ b/test/base/utils.py
@@ -884,5 +884,40 @@ class AsInterfaceTest(TestBase):
obj = {'foo': 123}
self.assertRaises(TypeError, util.as_interface, obj, cls=self.Something)
+
+class TestClassHierarchy(TestBase):
+ def test_object(self):
+ eq_(set(util.class_hierarchy(object)), set((object,)))
+
+ def test_single(self):
+ class A(object):
+ pass
+
+ class B(object):
+ pass
+
+ eq_(set(util.class_hierarchy(A)), set((A, object)))
+ eq_(set(util.class_hierarchy(B)), set((B, object)))
+
+ class C(A, B):
+ pass
+
+ eq_(set(util.class_hierarchy(A)), set((A, B, C, object)))
+ eq_(set(util.class_hierarchy(B)), set((A, B, C, object)))
+
+ def test_oldstyle_mixin(self):
+ class A(object):
+ pass
+
+ class Mixin:
+ pass
+
+ class B(A, Mixin):
+ pass
+
+ eq_(set(util.class_hierarchy(B)), set((A, B, object)))
+ eq_(set(util.class_hierarchy(Mixin)), set())
+ eq_(set(util.class_hierarchy(A)), set((A, B, object)))
+
if __name__ == "__main__":
testenv.main()