diff options
author | Jason Gerard DeRose <jderose@redhat.com> | 2008-09-03 23:21:26 +0000 |
---|---|---|
committer | Jason Gerard DeRose <jderose@redhat.com> | 2008-09-03 23:21:26 +0000 |
commit | b53ff67ff168ee416e2e5ac017d90410feeb53f5 (patch) | |
tree | 286b90d89568c7765552ce152b956d77f42a8668 /ipalib/tests/test_public.py | |
parent | 490eaee8a9f35975f7db5739a882894e10fb79a7 (diff) | |
download | freeipa.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.py | 56 |
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): """ |