summaryrefslogtreecommitdiffstats
path: root/ipalib/tests/test_public.py
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2008-09-03 23:21:26 +0000
committerJason Gerard DeRose <jderose@redhat.com>2008-09-03 23:21:26 +0000
commitb53ff67ff168ee416e2e5ac017d90410feeb53f5 (patch)
tree286b90d89568c7765552ce152b956d77f42a8668 /ipalib/tests/test_public.py
parent490eaee8a9f35975f7db5739a882894e10fb79a7 (diff)
downloadfreeipa.git-b53ff67ff168ee416e2e5ac017d90410feeb53f5.tar.gz
freeipa.git-b53ff67ff168ee416e2e5ac017d90410feeb53f5.tar.xz
freeipa.git-b53ff67ff168ee416e2e5ac017d90410feeb53f5.zip
249: Fixed Option.__convert_scalar() to user index=None instead of position=None; updated unit tests for Option.convert() to test the ConversionError.index attribute
Diffstat (limited to 'ipalib/tests/test_public.py')
-rw-r--r--ipalib/tests/test_public.py56
1 files changed, 38 insertions, 18 deletions
diff --git a/ipalib/tests/test_public.py b/ipalib/tests/test_public.py
index bbdd37f3..ddd99415 100644
--- a/ipalib/tests/test_public.py
+++ b/ipalib/tests/test_public.py
@@ -142,27 +142,47 @@ class test_Option(ClassChecker):
"""
Tests the `public.Option.convert` method.
"""
- name = 'sn'
- doc = 'User last name'
- type_ = ipa_types.Unicode()
- class Hello(object):
- def __unicode__(self):
- return u'hello'
- hello = Hello()
- values = (u'hello', 'hello', hello)
- # Test when multivalue=False:
+ name = 'some_number'
+ doc = 'Some number'
+ type_ = ipa_types.Int()
+ okay = (7, 7L, 7.0, ' 7 ')
+ fail = ('7.0', '7L', 'whatever', object)
+
+ # Scenario 1: multivalue=False
o = self.cls(name, doc, type_)
- for value in values:
+ e = raises(TypeError, o.convert, None)
+ assert str(e) == 'value cannot be None'
+ for value in okay:
new = o.convert(value)
- assert new == u'hello'
- assert type(new) is unicode
- # Test when multivalue=True:
+ assert new == 7
+ assert type(new) is int
+ for value in fail:
+ e = raises(errors.ConversionError, o.convert, value)
+ assert e.name is name
+ assert e.value is value
+ assert e.error is type_.conversion_error
+ assert e.index is None
+
+ # Scenario 2: multivalue=True
o = self.cls(name, doc, type_, multivalue=True)
- for value in values:
- for v in (value, (value,)):
- new = o.convert(hello)
- assert new == (u'hello',)
- assert type(new) is tuple
+ for none in [None, (7, None)]:
+ e = raises(TypeError, o.convert, none)
+ assert str(e) == 'value cannot be None'
+ for value in okay:
+ assert o.convert((value,)) == (7,)
+ assert o.convert([value]) == (7,)
+ assert o.convert(okay) == tuple(int(v) for v in okay)
+ cnt = 5
+ for value in fail:
+ for i in xrange(cnt):
+ others = list(7 for x in xrange(cnt))
+ others[i] = value
+ for v in [tuple(others), list(others)]:
+ e = raises(errors.ConversionError, o.convert, v)
+ assert e.name is name
+ assert e.value is value
+ assert e.error is type_.conversion_error
+ assert e.index == i
def test_normalize(self):
"""