diff options
author | Jason Gerard DeRose <jderose@redhat.com> | 2008-08-06 22:59:50 +0000 |
---|---|---|
committer | Jason Gerard DeRose <jderose@redhat.com> | 2008-08-06 22:59:50 +0000 |
commit | e63453a85816ee71617c89c4933ee85a605d58a4 (patch) | |
tree | c397ed9b09915d9fe531f726b85138581b9323be /ipalib/tests/test_plugable.py | |
parent | f13f1226b4b798fd901ece6b9a37c06ca25c3c2e (diff) | |
download | freeipa.git-e63453a85816ee71617c89c4933ee85a605d58a4.tar.gz freeipa.git-e63453a85816ee71617c89c4933ee85a605d58a4.tar.xz freeipa.git-e63453a85816ee71617c89c4933ee85a605d58a4.zip |
66: Added NameSpace2 (bit simpler than NameSpace, better suited to Proxy2); added corresponding unit tests
Diffstat (limited to 'ipalib/tests/test_plugable.py')
-rw-r--r-- | ipalib/tests/test_plugable.py | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/ipalib/tests/test_plugable.py b/ipalib/tests/test_plugable.py index 383e068e..8ad45864 100644 --- a/ipalib/tests/test_plugable.py +++ b/ipalib/tests/test_plugable.py @@ -233,7 +233,62 @@ def test_Proxy2(): p = cls(base, i) +def test_NameSpace2(): + cls = plugable.NameSpace2 + assert issubclass(cls, plugable.ReadOnly) + + class base(object): + public = frozenset(( + 'plusplus', + )) + + def plusplus(self, n): + return n + 1 + + class plugin(base): + def __init__(self, name): + self.name = name + def get_name(i): + return 'noun_verb%d' % i + + def get_proxies(n): + for i in xrange(n): + yield plugable.Proxy2(base, plugin(get_name(i))) + + cnt = 20 + ns = cls(get_proxies(cnt)) + + # Test __len__ + assert len(ns) == cnt + + # Test __iter__ + i = None + for (i, proxy) in enumerate(ns): + assert type(proxy) is plugable.Proxy2 + assert proxy.name == get_name(i) + assert i == cnt - 1 + + # Test __contains__, __getitem__, getattr(): + proxies = frozenset(ns) + for i in xrange(cnt): + name = get_name(i) + assert name in ns + proxy = ns[name] + assert proxy.name == name + assert type(proxy) is plugable.Proxy2 + assert proxy in proxies + assert read_only(ns, name) is proxy + + # Test dir(): + assert set(get_name(i) for i in xrange(cnt)).issubset(set(dir(ns))) + + # Test that KeyError, AttributeError is raised: + name = get_name(cnt) + assert name not in ns + raises(KeyError, getitem, ns, name) + raises(AttributeError, getattr, ns, name) + no_set(ns, name) |