summaryrefslogtreecommitdiffstats
path: root/tests/test_ipalib
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2008-12-10 21:14:05 -0700
committerJason Gerard DeRose <jderose@redhat.com>2008-12-10 21:14:05 -0700
commit22209a0f0333526fe953a66f6ea4dd1be18dddc6 (patch)
tree419cdba947338a16767fca991e1b5e32740cc3ce /tests/test_ipalib
parenta3ab787d23331cf4d060d8463ca66ff602f3629b (diff)
downloadfreeipa-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')
-rw-r--r--tests/test_ipalib/test_parameter.py93
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