# HG changeset patch # User Tero Marttila # Date 1234807348 -7200 # Node ID 94c493b7c046cc2de306d8536c41d6784472711b # Parent 747554808944986b80c4148c39e1695a88c0d94d start writing urltree tests diff -r 747554808944 -r 94c493b7c046 tests/test_urltree.py --- 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") + diff -r 747554808944 -r 94c493b7c046 urltree.py --- 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) :