diff options
author | Jason Gerard DeRose <jderose@redhat.com> | 2008-12-10 21:14:05 -0700 |
---|---|---|
committer | Jason Gerard DeRose <jderose@redhat.com> | 2008-12-10 21:14:05 -0700 |
commit | 22209a0f0333526fe953a66f6ea4dd1be18dddc6 (patch) | |
tree | 419cdba947338a16767fca991e1b5e32740cc3ce /tests/test_ipalib/test_parameter.py | |
parent | a3ab787d23331cf4d060d8463ca66ff602f3629b (diff) | |
download | freeipa-22209a0f0333526fe953a66f6ea4dd1be18dddc6.tar.gz freeipa-22209a0f0333526fe953a66f6ea4dd1be18dddc6.tar.xz freeipa-22209a0f0333526fe953a66f6ea4dd1be18dddc6.zip |
Started roughing out the consolidated type/parameter system in parameters.py; started corresponding unit tests
Diffstat (limited to 'tests/test_ipalib/test_parameter.py')
-rw-r--r-- | tests/test_ipalib/test_parameter.py | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/tests/test_ipalib/test_parameter.py b/tests/test_ipalib/test_parameter.py new file mode 100644 index 000000000..837bdfef3 --- /dev/null +++ b/tests/test_ipalib/test_parameter.py @@ -0,0 +1,93 @@ +# Authors: +# Jason Gerard DeRose <jderose@redhat.com> +# +# Copyright (C) 2008 Red Hat +# see file 'COPYING' for use and warranty information +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; version 2 only +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +""" +Test the `ipalib.parameter` module. +""" + +from tests.util import raises, ClassChecker +from tests.data import binary_bytes, utf8_bytes, unicode_str +from ipalib import parameter + + +def test_parse_param_spec(): + """ + Test the `ipalib.parameter.parse_param_spec` function. + """ + f = parameter.parse_param_spec + assert f('name') == ('name', dict(required=True, multivalue=False)) + assert f('name?') == ('name', dict(required=False, multivalue=False)) + assert f('name*') == ('name', dict(required=False, multivalue=True)) + assert f('name+') == ('name', dict(required=True, multivalue=True)) + + +class test_Param(ClassChecker): + """ + Test the `ipalib.parameter.Param` class. + """ + _cls = parameter.Param + + def test_init(self): + """ + Test the `ipalib.parameter.Param.__init__` method. + """ + name = 'my_param' + o = self.cls(name) + assert o.name is name + assert o.__islocked__() is True + + def test_convert_scalar(self): + """ + Test the `ipalib.parameter.Param._convert_scalar` method. + """ + o = self.cls('my_param') + e = raises(NotImplementedError, o._convert_scalar, 'some value') + assert str(e) == 'Param._convert_scalar()' + class Subclass(self.cls): + pass + o = Subclass('my_param') + e = raises(NotImplementedError, o._convert_scalar, 'some value') + assert str(e) == 'Subclass._convert_scalar()' + + +class test_Str(ClassChecker): + """ + Test the `ipalib.parameter.Str` class. + """ + _cls = parameter.Str + + def test_init(self): + """ + Test the `ipalib.parameter.Str.__init__` method. + """ + o = self.cls('my_str') + assert o.type is unicode + + def test_convert_scalar(self): + """ + Test the `ipalib.parameter.Str._convert_scalar` method. + """ + o = self.cls('my_str') + for value in (u'Hello', 42, 1.2, True): + assert o._convert_scalar(value) == unicode(value) + for value in ('Hello', None, [u'42', '42'], dict(hello=u'world')): + e = raises(TypeError, o._convert_scalar, value) + assert str(e) == \ + 'Can only implicitly convert int, float, or bool; got %r' % value |