summaryrefslogtreecommitdiffstats
path: root/ipalib/tests/test_plugable.py
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2008-08-06 22:59:50 +0000
committerJason Gerard DeRose <jderose@redhat.com>2008-08-06 22:59:50 +0000
commite63453a85816ee71617c89c4933ee85a605d58a4 (patch)
treec397ed9b09915d9fe531f726b85138581b9323be /ipalib/tests/test_plugable.py
parentf13f1226b4b798fd901ece6b9a37c06ca25c3c2e (diff)
downloadfreeipa.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.py55
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)