summaryrefslogtreecommitdiff
path: root/test/base/utils.py
diff options
context:
space:
mode:
authorJason Kirtland <jek@discorporate.us>2008-08-15 22:54:35 +0000
committerJason Kirtland <jek@discorporate.us>2008-08-15 22:54:35 +0000
commitaaf72e05f199d7d29a039aa6d08a7e005a01448a (patch)
tree37f854b0945cb9622febac1607bf0959c3f6291f /test/base/utils.py
parentd70ed586c74feb947a412f2b5aa1496e11465cdf (diff)
downloadsqlalchemy-aaf72e05f199d7d29a039aa6d08a7e005a01448a.tar.gz
- Ignore old-style classes when building inheritance graphs. [ticket:1078]
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()