--- a/tests/test_urltree.py Mon Feb 16 19:46:19 2009 +0200
+++ b/tests/test_urltree.py Mon Feb 16 20:02:28 2009 +0200
@@ -170,3 +170,102 @@
self.assertEqual(str(self.label_str), "{test}")
self.assertEqual(str(self.label_str_default), "{test=def}")
+class TestStringType (unittest.TestCase) :
+ def setUp (self) :
+ self.type = urltree.URLStringType()
+
+ def test_test (self) :
+ self.assertTrue(self.type.test(""))
+ self.assertTrue(self.type.test("xxx"))
+
+ def test_parse (self) :
+ self.assertEqual(self.type.parse(""), "")
+ self.assertEqual(self.type.parse("xxx"), "xxx")
+
+ def test_build (self) :
+ self.assertEqual(self.type.build(""), "")
+ self.assertEqual(self.type.build("xxx"), "xxx")
+ self.assertEqual(self.type.build("äää"), "äää")
+
+class TestIntegerType (unittest.TestCase) :
+ def setUp (self) :
+ self.type = urltree.URLIntegerType()
+ self.type_positive = urltree.URLIntegerType(allow_negative=False)
+ self.type_nonzero = urltree.URLIntegerType(allow_zero=False)
+ self.type_max_5 = urltree.URLIntegerType(max=5)
+
+ def test_test (self) :
+ self.assertTrue(self.type.test("1"))
+ self.assertFalse(self.type.test("xx"))
+ self.assertTrue(self.type_positive.test("1"))
+ self.assertFalse(self.type_positive.test("-1"))
+ self.assertTrue(self.type_nonzero.test("1"))
+ self.assertFalse(self.type_nonzero.test("0"))
+ self.assertTrue(self.type_max_5.test("5"))
+ self.assertFalse(self.type_max_5.test("6"))
+
+ def test_parse_invalid (self) :
+ self.assertRaises(ValueError, self.type.parse, "xx")
+ self.assertRaises(ValueError, self.type_nonzero.parse, "0")
+
+ def test_parse_valid (self) :
+ self.assertEqual(self.type.parse("0"), 0)
+ self.assertEqual(self.type.parse("2"), 2)
+ self.assertEqual(self.type_nonzero.parse("3"), 3)
+
+ def test_append (self) :
+ self.assertRaises(URLError, self.type.append, 0, 1)
+
+ def test_build (self) :
+ self.assertEqual(self.type.build(0), "0")
+ self.assertEqual(self.type.build(5), "5")
+ self.assertEqual(self.type_positive.build(1), "1")
+ self.assertEqual(self.type_nonzero.build(1), "1")
+ self.assertEqual(self.type_max_5.build(5), "5")
+
+ def test_build_invalid (self) :
+ self.assertRaises(ValueError, self.type_positive.build, -1)
+ self.assertRaises(ValueError, self.type_nonzero.build, 0)
+ self.assertRaises(ValueError, self.type_max_5.build, 5)
+
+ def test_build_multi (self) :
+ self.assertEqual(self.type.build(0), ["0"])
+
+class TestListType (unittest.TestCase) :
+ def setUp (self) :
+ self.type = urltree.URLListType()
+
+ def test_parse (self) :
+ self.assertEqual(self.type.parse("x"), ["x"])
+ self.assertEqual(self.type.parse(""), [""])
+
+ def test_append (self) :
+ self.assertEqual(self.type.append(["x"], ["y"]), ["x", "y"])
+
+ def test_build_multi (self) :
+ self.assertEqual(self.type.build_multi(["x", "y"]), ["x", "y"])
+
+class TestConfig (unittest.TestCase) :
+ def test_init (self) :
+ urltree.URLConfig(type_dict=dict(foo=None), ignore_extra_args=True)
+
+ def test_get_type (self) :
+ self.assertEquals(urltree.URLConfig(dict(foo='xxx')).get_type('foo'), 'xxx')
+
+ def test_call (self) :
+ config = urltree.URLConfig()
+ url = config("foo", None)
+
+ self.assertTrue(isinstance(url, urltree.URL))
+ self.assertTrue(url in config.urls)
+
+ def test_iter (self) :
+ config = urltree.URLConfig()
+ url1 = config("foo1", None)
+ url2 = config("foo2", None)
+
+ urls = list(config)
+
+ self.assertTrue(urls[0].url_mask == "foo1")
+ self.assertTrue(urls[1].url_mask == "foo2")
+
--- a/urltree.py Mon Feb 16 19:46:19 2009 +0200
+++ b/urltree.py Mon Feb 16 20:02:28 2009 +0200
@@ -350,6 +350,8 @@
class URLStringType (URLType) :
"""
The default URLType, just plain strings.
+
+ XXX: decodeing here, or elsewhere?
"""
def parse (self, value) :