diff options
author | Jason Kirtland <jek@discorporate.us> | 2008-01-24 00:08:40 +0000 |
---|---|---|
committer | Jason Kirtland <jek@discorporate.us> | 2008-01-24 00:08:40 +0000 |
commit | f6439ffa2c166edb2ffffc3042e20422f01803ee (patch) | |
tree | 9a26a80b93f936e54c4c3b5118745477ff144629 /test/base/utils.py | |
parent | 29f7a38ee075418146add1b5ce7e2f06d5fc67a1 (diff) | |
download | sqlalchemy-f6439ffa2c166edb2ffffc3042e20422f01803ee.tar.gz |
Corrected behavior of get_cls_kwargs and friends
Diffstat (limited to 'test/base/utils.py')
-rw-r--r-- | test/base/utils.py | 67 |
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() |