summaryrefslogtreecommitdiff
path: root/test/base/utils.py
diff options
context:
space:
mode:
authorJason Kirtland <jek@discorporate.us>2008-01-24 00:08:40 +0000
committerJason Kirtland <jek@discorporate.us>2008-01-24 00:08:40 +0000
commitf6439ffa2c166edb2ffffc3042e20422f01803ee (patch)
tree9a26a80b93f936e54c4c3b5118745477ff144629 /test/base/utils.py
parent29f7a38ee075418146add1b5ce7e2f06d5fc67a1 (diff)
downloadsqlalchemy-f6439ffa2c166edb2ffffc3042e20422f01803ee.tar.gz
Corrected behavior of get_cls_kwargs and friends
Diffstat (limited to 'test/base/utils.py')
-rw-r--r--test/base/utils.py67
1 files changed, 67 insertions, 0 deletions
diff --git a/test/base/utils.py b/test/base/utils.py
index 5a034e0b0..837eb058f 100644
--- a/test/base/utils.py
+++ b/test/base/utils.py
@@ -305,5 +305,72 @@ class DictlikeIteritemsTest(unittest.TestCase):
self._notok(duck6())
+class ArgInspectionTest(PersistTest):
+ def test_get_cls_kwargs(self):
+ class A(object):
+ def __init__(self, a):
+ pass
+ class A1(A):
+ def __init__(self, a1):
+ pass
+ class A11(A1):
+ def __init__(self, a11, **kw):
+ pass
+ class B(object):
+ def __init__(self, b, **kw):
+ pass
+ class B1(B):
+ def __init__(self, b1, **kw):
+ pass
+ class AB(A, B):
+ def __init__(self, ab):
+ pass
+ class BA(B, A):
+ def __init__(self, ba, **kwargs):
+ pass
+ class BA1(BA):
+ pass
+ class CAB(A, B):
+ pass
+ class CBA(B, A):
+ pass
+ class CAB1(A, B1):
+ pass
+ class CB1A(B1, A):
+ pass
+ class D(object):
+ pass
+
+ def test(cls, *expected):
+ self.assertEquals(set(util.get_cls_kwargs(cls)), set(expected))
+
+ test(A, 'a')
+ test(A1, 'a1')
+ test(A11, 'a11', 'a1')
+ test(B, 'b')
+ test(B1, 'b1', 'b')
+ test(AB, 'ab')
+ test(BA, 'ba', 'b', 'a')
+ test(BA1, 'ba', 'b', 'a')
+ test(CAB, 'a')
+ test(CBA, 'b')
+ test(CAB1, 'a')
+ test(CB1A, 'b1', 'b')
+ test(D)
+
+ def test_get_func_kwargs(self):
+ def f1(): pass
+ def f2(foo): pass
+ def f3(*foo): pass
+ def f4(**foo): pass
+
+ def test(fn, *expected):
+ self.assertEquals(set(util.get_func_kwargs(fn)), set(expected))
+
+ test(f1)
+ test(f2, 'foo')
+ test(f3)
+ test(f4)
+
if __name__ == "__main__":
testenv.main()