author | Tero Marttila <terom@fixme.fi> |
Sun, 09 Jan 2011 15:52:28 +0200 | |
changeset 45 | e3001377e9dc |
parent 44 | 30af52a271a1 |
permissions | -rw-r--r-- |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
1 |
# :set encoding=utf8 |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
2 |
""" |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
3 |
Unit tests for svv.ext.urltree |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
4 |
""" |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
5 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
6 |
import unittest |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
7 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
8 |
from svv.ext import urltree |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
9 |
|
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
10 |
if False : |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
11 |
class TestLabelValue (unittest.TestCase) : |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
12 |
class dummylabel : |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
13 |
key = 'foo' |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
14 |
|
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
15 |
def test_str_default (self) : |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
16 |
self.assertEqual(str(urltree.LabelValue(self.dummylabel, 'bar', True)), "foo") |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
17 |
|
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
18 |
def test_str_value (self) : |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
19 |
self.assertEqual(str(urltree.LabelValue(self.dummylabel, 'bar', False)), "foo='bar'") |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
20 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
21 |
class TestLabel (unittest.TestCase) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
22 |
def setUp (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
23 |
self.config = urltree.URLConfig() |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
24 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
25 |
def _test_parse (self, mask, _type, defaults={}, **attrs) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
26 |
label = urltree.Label.parse(mask, defaults, self.config) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
27 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
28 |
self.assertTrue(isinstance(label, _type)) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
29 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
30 |
for k, v in attrs.iteritems() : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
31 |
self.assertEqual(getattr(label, k), v) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
32 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
33 |
def test_parse_empty (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
34 |
self._test_parse("", urltree.EmptyLabel) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
35 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
36 |
def test_parse_static (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
37 |
self._test_parse("foo", urltree.StaticLabel, name="foo") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
38 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
39 |
def test_parse_static_valid (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
40 |
self._test_parse("foo_bar", urltree.StaticLabel, name="foo_bar") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
41 |
self._test_parse("foo2", urltree.StaticLabel, name="foo2") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
42 |
self._test_parse("2foo.q", urltree.StaticLabel, name="2foo.q") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
43 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
44 |
def test_parse_static_invalid (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
45 |
self.assertRaises(urltree.URLError, urltree.Label.parse, "foo/bar", {}, self.config) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
46 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
47 |
def test_parse_value_plain (self) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
48 |
self._test_parse("{foo}", urltree.ValueLabel, key="foo", default=None, type_name=None, type=urltree.URLConfig.BUILTIN_TYPES[None]) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
49 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
50 |
def test_parse_value_default1 (self) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
51 |
self._test_parse("{foo=bar1}", urltree.ValueLabel, key="foo", default="bar1", type_name=None) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
52 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
53 |
def test_parse_value_default2 (self) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
54 |
self._test_parse("{foo}", urltree.ValueLabel, dict(foo="bar2"), key="foo", default="bar2", type_name=None) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
55 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
56 |
def test_parse_value_default3 (self) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
57 |
self._test_parse("{foo=bar1}", urltree.ValueLabel, dict(foo="bar3"), key="foo", default="bar3", type_name=None) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
58 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
59 |
def test_parse_value_type_str (self) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
60 |
self._test_parse("{foo:str}", urltree.ValueLabel, key="foo", type_name="str", type=urltree.URLConfig.BUILTIN_TYPES['str']) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
61 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
62 |
def test_parse_value_type_int (self) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
63 |
self._test_parse("{foo:int}", urltree.ValueLabel, key="foo", type_name="int", type=urltree.URLConfig.BUILTIN_TYPES['int']) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
64 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
65 |
def test_parse_invalid_type (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
66 |
self.assertRaises(KeyError, self._test_parse, "{foo:bar}", None) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
67 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
68 |
class TestEmptyLabel (unittest.TestCase) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
69 |
def setUp (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
70 |
self.label = urltree.EmptyLabel() |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
71 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
72 |
def test_eq (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
73 |
self.assertTrue(self.label == urltree.EmptyLabel()) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
74 |
self.assertFalse(self.label == urltree.StaticLabel("foo")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
75 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
76 |
def test_match (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
77 |
self.assertFalse(self.label.match()) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
78 |
self.assertFalse(self.label.match("foo")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
79 |
self.assertTrue(self.label.match("")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
80 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
81 |
def test_build (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
82 |
self.assertEqual(self.label.build({}), "") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
83 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
84 |
def test_build_default (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
85 |
self.assertEqual(self.label.build_default({}), (False, "")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
86 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
87 |
def test_str (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
88 |
self.assertEqual(str(self.label), "") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
89 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
90 |
class TestStaticLabel (unittest.TestCase) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
91 |
def setUp (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
92 |
self.label = urltree.StaticLabel("test") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
93 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
94 |
def test_eq (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
95 |
self.assertTrue(self.label == urltree.StaticLabel("test")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
96 |
self.assertFalse(self.label == urltree.StaticLabel("Test")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
97 |
self.assertFalse(self.label == urltree.EmptyLabel()) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
98 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
99 |
def test_match (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
100 |
self.assertFalse(self.label.match()) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
101 |
self.assertFalse(self.label.match("foo")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
102 |
self.assertTrue(self.label.match("test")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
103 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
104 |
def test_build (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
105 |
self.assertEqual(self.label.build({}), "test") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
106 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
107 |
def test_build_default (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
108 |
self.assertEqual(self.label.build_default({}), (False, "test")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
109 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
110 |
def test_str (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
111 |
self.assertEqual(str(self.label), "test") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
112 |
|
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
113 |
class TestValueLabel (unittest.TestCase) : |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
114 |
def setUp (self) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
115 |
self.label = urltree.ValueLabel("test", urltree.URLConfig.BUILTIN_TYPES['int'], None, 'int') |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
116 |
self.label_default_0 = urltree.ValueLabel("test", urltree.URLConfig.BUILTIN_TYPES['int'], 0, 'int') |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
117 |
self.label_default_1 = urltree.ValueLabel("test", urltree.URLConfig.BUILTIN_TYPES['int'], 1, 'int') |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
118 |
self.label_str = urltree.ValueLabel("test", urltree.URLConfig.BUILTIN_TYPES[None], None, None) |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
119 |
self.label_str_default = urltree.ValueLabel("test", urltree.URLConfig.BUILTIN_TYPES[None], 'def', None) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
120 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
121 |
def test_eq (self) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
122 |
self.assertTrue(self.label == urltree.ValueLabel("test", None, 1, 'str')) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
123 |
self.assertFalse(self.label == urltree.StaticLabel("Test")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
124 |
self.assertFalse(self.label == urltree.EmptyLabel()) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
125 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
126 |
def _check_value (self, label, label_value, value, is_default) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
127 |
_key, _value, _type, _is_default = label_value |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
128 |
|
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
129 |
self.assertEqual(_key, label.key) |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
130 |
self.assertEqual(_type,label.type) |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
131 |
self.assertEqual(_value, value) |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
132 |
self.assertEqual(_is_default, is_default) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
133 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
134 |
def test_match_default_none (self) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
135 |
self.assertEquals(self.label.match(), False) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
136 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
137 |
def test_match_default_value (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
138 |
self._check_value(self.label_default_0, self.label_default_0.match(), 0, True) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
139 |
self._check_value(self.label_default_1, self.label_default_1.match(), 1, True) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
140 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
141 |
def test_match_invalid (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
142 |
self.assertEquals(self.label.match("foo"), False) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
143 |
self.assertEquals(self.label_default_0.match("foo"), False) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
144 |
self.assertEquals(self.label_default_1.match("foo"), False) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
145 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
146 |
def test_match_valid (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
147 |
self._check_value(self.label, self.label.match("0"), 0, False) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
148 |
self._check_value(self.label, self.label.match("1"), 1, False) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
149 |
self._check_value(self.label_default_0, self.label_default_0.match("1"), 1, False) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
150 |
self._check_value(self.label_default_1, self.label_default_1.match("0"), 0, False) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
151 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
152 |
def test_build (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
153 |
self.assertEqual(self.label.build(dict(test=1)), "1") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
154 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
155 |
def test_build_nodefault (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
156 |
self.assertRaises(urltree.URLError, self.label.build, {}) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
157 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
158 |
def test_build_none (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
159 |
self.assertRaises(urltree.URLError, self.label.build, dict(test=None)) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
160 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
161 |
def test_build_default (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
162 |
self.assertEqual(self.label_default_0.build_default({}), (True, "0")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
163 |
self.assertEqual(self.label_default_1.build_default({}), (True, "1")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
164 |
self.assertEqual(self.label_default_0.build_default(dict(test=0)), (True, "0")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
165 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
166 |
def test_build_nonedefault (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
167 |
self.assertEqual(self.label_default_1.build_default(dict(test=None)), (True, "1")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
168 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
169 |
def test_build_value (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
170 |
self.assertEqual(self.label.build_default(dict(test=0)), (False, "0")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
171 |
self.assertEqual(self.label.build_default(dict(test=1)), (False, "1")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
172 |
self.assertEqual(self.label_default_0.build_default(dict(test=1)), (False, "1")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
173 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
174 |
def test_str (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
175 |
self.assertEqual(str(self.label), "{test:int}") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
176 |
self.assertEqual(str(self.label_default_0), "{test:int=0}") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
177 |
self.assertEqual(str(self.label_default_1), "{test:int=1}") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
178 |
self.assertEqual(str(self.label_str), "{test}") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
179 |
self.assertEqual(str(self.label_str_default), "{test=def}") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
180 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
181 |
class TestStringType (unittest.TestCase) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
182 |
def setUp (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
183 |
self.type = urltree.URLStringType() |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
184 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
185 |
def test_test (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
186 |
self.assertTrue(self.type.test("")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
187 |
self.assertTrue(self.type.test("xxx")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
188 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
189 |
def test_parse (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
190 |
self.assertEqual(self.type.parse(""), "") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
191 |
self.assertEqual(self.type.parse("xxx"), "xxx") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
192 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
193 |
def test_build (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
194 |
self.assertEqual(self.type.build(""), "") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
195 |
self.assertEqual(self.type.build("xxx"), "xxx") |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
196 |
|
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
197 |
# XXX: unicode? |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
198 |
self.assertEqual(self.type.build(u"äää"), u"äää") |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
199 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
200 |
class TestIntegerType (unittest.TestCase) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
201 |
def setUp (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
202 |
self.type = urltree.URLIntegerType() |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
203 |
self.type_positive = urltree.URLIntegerType(allow_negative=False) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
204 |
self.type_nonzero = urltree.URLIntegerType(allow_zero=False) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
205 |
self.type_max_5 = urltree.URLIntegerType(max=5) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
206 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
207 |
def test_test (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
208 |
self.assertTrue(self.type.test("1")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
209 |
self.assertFalse(self.type.test("xx")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
210 |
self.assertTrue(self.type_positive.test("1")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
211 |
self.assertFalse(self.type_positive.test("-1")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
212 |
self.assertTrue(self.type_nonzero.test("1")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
213 |
self.assertFalse(self.type_nonzero.test("0")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
214 |
self.assertTrue(self.type_max_5.test("5")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
215 |
self.assertFalse(self.type_max_5.test("6")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
216 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
217 |
def test_parse_invalid (self) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
218 |
self.assertRaises(urltree.URLValueError, self.type.parse, "xx") |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
219 |
self.assertRaises(urltree.URLValueError, self.type_nonzero.parse, "0") |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
220 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
221 |
def test_parse_valid (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
222 |
self.assertEqual(self.type.parse("0"), 0) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
223 |
self.assertEqual(self.type.parse("2"), 2) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
224 |
self.assertEqual(self.type_nonzero.parse("3"), 3) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
225 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
226 |
def test_append (self) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
227 |
self.assertRaises(urltree.URLValueError, self.type.append, 0, 1) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
228 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
229 |
def test_build (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
230 |
self.assertEqual(self.type.build(0), "0") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
231 |
self.assertEqual(self.type.build(5), "5") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
232 |
self.assertEqual(self.type_positive.build(1), "1") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
233 |
self.assertEqual(self.type_nonzero.build(1), "1") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
234 |
self.assertEqual(self.type_max_5.build(5), "5") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
235 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
236 |
def test_build_invalid (self) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
237 |
self.assertRaises(urltree.URLValueError, self.type_positive.build, -1) |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
238 |
self.assertRaises(urltree.URLValueError, self.type_nonzero.build, 0) |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
239 |
self.assertRaises(urltree.URLValueError, self.type_max_5.build, 6) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
240 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
241 |
def test_build_multi (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
242 |
self.assertEqual(self.type.build_multi(0), ["0"]) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
243 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
244 |
class TestListType (unittest.TestCase) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
245 |
def setUp (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
246 |
self.type = urltree.URLListType() |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
247 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
248 |
def test_parse (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
249 |
self.assertEqual(self.type.parse("x"), ["x"]) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
250 |
self.assertEqual(self.type.parse(""), [""]) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
251 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
252 |
def test_append (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
253 |
self.assertEqual(self.type.append(["x"], ["y"]), ["x", "y"]) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
254 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
255 |
def test_build_multi (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
256 |
self.assertEqual(self.type.build_multi(["x", "y"]), ["x", "y"]) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
257 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
258 |
class TestConfig (unittest.TestCase) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
259 |
def test_init (self) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
260 |
urltree.URLConfig(type_dict=dict(foo=None), reject_extra_args=False) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
261 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
262 |
def test_get_type (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
263 |
self.assertEquals(urltree.URLConfig(dict(foo='xxx')).get_type('foo'), 'xxx') |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
264 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
265 |
def test_get_type_invalid (self) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
266 |
self.assertRaises(KeyError, urltree.URLConfig(dict(foo='xxx')).get_type, 'bar') |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
267 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
268 |
def test_call (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
269 |
config = urltree.URLConfig() |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
270 |
url = config("foo", None) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
271 |
|
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
272 |
self.assertTrue(isinstance(url, urltree.URLRule)) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
273 |
self.assertTrue(url in config.urls) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
274 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
275 |
def test_iter (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
276 |
config = urltree.URLConfig() |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
277 |
url1 = config("foo1", None) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
278 |
url2 = config("foo2", None) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
279 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
280 |
urls = list(config) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
281 |
|
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
282 |
self.assertTrue(urls[0].url_spec == "foo1") |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
283 |
self.assertTrue(urls[1].url_spec == "foo2") |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
284 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
285 |
class TestURL (unittest.TestCase) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
286 |
def setUp (self) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
287 |
self.config = urltree.URLConfig(reject_extra_args=False) |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
288 |
# self.config_strict = urltree.URLConfig(ignore_extra_args=False) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
289 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
290 |
def _test_label_path (self, mask, *path, **qargs) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
291 |
url = self.config(mask, None) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
292 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
293 |
# right label path |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
294 |
self.assertEquals(url.label_path, list(path)) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
295 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
296 |
# right qargs keys |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
297 |
self.assertEquals(set(url.query_items), set(qargs)) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
298 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
299 |
# right qargs values |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
300 |
for key, value in qargs.iteritems() : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
301 |
self.assertEquals((url.query_items[key].type, url.query_items[key].default), value) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
302 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
303 |
# __init__ |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
304 |
def test_label_path_empty (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
305 |
self._test_label_path("", urltree.EmptyLabel()) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
306 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
307 |
def test_label_path_root (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
308 |
self._test_label_path("/", urltree.EmptyLabel()) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
309 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
310 |
def test_label_path_static (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
311 |
self._test_label_path("/foo", urltree.StaticLabel("foo")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
312 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
313 |
def test_label_path_static2 (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
314 |
self._test_label_path("/foo/bar/", urltree.StaticLabel("foo"), urltree.StaticLabel("bar"), urltree.EmptyLabel()) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
315 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
316 |
def test_label_path_mix (self) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
317 |
self._test_label_path("/foo/{bar}", urltree.StaticLabel("foo"), urltree.ValueLabel("bar", None, None, None)) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
318 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
319 |
# def test_query_args_root_empty (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
320 |
# self._test_label_path("/?", urltree.EmptyLabel()) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
321 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
322 |
def test_query_args_simple (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
323 |
self._test_label_path("/x/?foo", urltree.StaticLabel("x"), foo=(self.config.get_type(None), None)) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
324 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
325 |
def test_query_args_multi (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
326 |
self._test_label_path("/x/?foo=0&bar&tee:int=&eee:int", urltree.StaticLabel("x"), |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
327 |
foo = (self.config.get_type(None), "0"), |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
328 |
bar = (self.config.get_type(None), None), |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
329 |
tee = (self.config.get_type('int'), ''), |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
330 |
eee = (self.config.get_type('int'), None), |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
331 |
) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
332 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
333 |
def test_label_path_mutate (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
334 |
l = self.config("xxx", None) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
335 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
336 |
lp = l.get_label_path() |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
337 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
338 |
lp.pop(0) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
339 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
340 |
self.assertTrue(len(l.label_path) > len(lp)) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
341 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
342 |
def _setup_handler (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
343 |
def _handler (req, **kwargs) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
344 |
return kwargs |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
345 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
346 |
return _handler |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
347 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
348 |
def _setup_execute (self, mask, config) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
349 |
_handler = self._setup_handler() |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
350 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
351 |
url = config(mask, _handler) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
352 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
353 |
return url |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
354 |
|
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
355 |
# XXX: not used? |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
356 |
class dummy_label : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
357 |
def __init__ (self, key, type) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
358 |
self.key = key |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
359 |
self.type = type |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
360 |
|
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
361 |
# XXX: rename to test_evaluate |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
362 |
def _test_execute (self, mask, values={}, qargs={}, qlist=[], config=None) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
363 |
if not config : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
364 |
config = self.config |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
365 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
366 |
# setup |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
367 |
url = self._setup_execute(mask, config) |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
368 |
|
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
369 |
# qargs |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
370 |
uargs = [(key, value, config.get_type(), is_default) for key, (value, is_default) in values.iteritems()] |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
371 |
qargs = [(key, [value]) for key, value in qargs.iteritems()] + qlist |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
372 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
373 |
# exec |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
374 |
out_args, remaining = url.evaluate(uargs, qargs) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
375 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
376 |
return out_args |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
377 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
378 |
# execute |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
379 |
def test_execute_empty (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
380 |
self.assertEquals(set(self._test_execute("/")), set()) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
381 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
382 |
def test_execute_plain (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
383 |
self.assertEquals(set(self._test_execute("/foo")), set()) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
384 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
385 |
def test_execute_simple (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
386 |
self.assertEquals(self._test_execute("/foo/{bar}", dict(bar=(0, False))), dict(bar=0)) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
387 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
388 |
def test_execute_multi (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
389 |
self.assertEquals(self._test_execute("/foo/{bar}/{quux}", dict(bar=(1, False), quux=(2, False))), dict(bar=1, quux=2)) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
390 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
391 |
def test_execute_default (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
392 |
self.assertEquals(self._test_execute("/foo/{bar=0}", dict(bar=("0", True))), dict(bar="0")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
393 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
394 |
def test_execute_qargs_default (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
395 |
self.assertEquals(self._test_execute("/{foo}/?bar=0", dict(foo=("x", False))), dict(foo="x", bar="0")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
396 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
397 |
def test_execute_qargs_default_type (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
398 |
self.assertEquals(self._test_execute("/{foo}/?bar:int=0", dict(foo=("x", False))), dict(foo="x", bar=0)) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
399 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
400 |
def test_execute_qargs_default_none (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
401 |
self.assertEquals(self._test_execute("/{foo}/?bar=", dict(foo=("x", False))), dict(foo="x")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
402 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
403 |
def test_execute_qargs_missing (self) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
404 |
self.assertRaises(urltree.URLValueError, self._test_execute, "/{foo}/?bar", dict(foo=("x", False))) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
405 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
406 |
def test_execute_qargs_invalid (self) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
407 |
self.assertRaises(urltree.URLValueError, self._test_execute, "/{foo}/?bar:int", dict(foo=("x", False)), dict(bar="x")) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
408 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
409 |
def test_execute_qargs_simple (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
410 |
self.assertEquals(self._test_execute("/{foo}/?bar", dict(foo=("x", False)), dict(bar="y")), dict(foo="x", bar="y")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
411 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
412 |
def test_execute_qargs_novalue (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
413 |
self.assertRaises(urltree.URLError, self._test_execute, "/{foo}/?bar", dict(foo=("x", False)), dict(bar='')) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
414 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
415 |
def test_execute_qargs_multi_invalid (self) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
416 |
self.assertRaises(urltree.URLError, self._test_execute, "/{foo}/?bar", dict(foo=("x", False)), qlist=[('bar', ['a', 'b'])]) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
417 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
418 |
def test_execute_qargs_multi_list (self) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
419 |
self.assertEqual(self._test_execute("/{foo}/?bar:list", dict(foo=("x", False)), qlist=[('bar', ['a', 'b'])]), dict(foo='x', bar=['a', 'b'])) |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
420 |
|
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
421 |
# XXX: fix to check remaining qargs |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
422 |
# def test_execute_qarg_override_strict (self) : |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
423 |
# self.assertRaises(urltree.URLError, self._test_execute, "/{foo}", dict(foo=("x1", False)), dict(foo="x2"), config=self.config_strict) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
424 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
425 |
def test_execute_qarg_override_ignore (self) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
426 |
"""Query-arg does not override non-default Label value""" |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
427 |
self.assertEqual(self._test_execute("/{foo}", dict(foo=("x1", False)), dict(foo="x2")), dict(foo="x1")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
428 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
429 |
def test_execute_qarg_override_ok (self) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
430 |
"""Query-arg overrides default Label value""" |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
431 |
self.assertEqual(self._test_execute("/{foo=x1}", dict(foo=("x1", True)), dict(foo="x2")), dict(foo="x2")) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
432 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
433 |
# build |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
434 |
|
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
435 |
def _test_build (self, mask, url, **args) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
436 |
out, qargs = self.config(mask, None).build(**args) |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
437 |
|
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
438 |
if qargs : |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
439 |
out += ('?' + '&'.join('%s=%s' % (key, value) for key, values in qargs for value in values)) |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
440 |
|
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
441 |
self.assertEquals(out, url) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
442 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
443 |
def _test_build_fails (self, err, mask, **args) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
444 |
self.assertRaises(err, self.config(mask, None).build, **args) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
445 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
446 |
def test_build_empty (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
447 |
self._test_build("/", "/") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
448 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
449 |
def test_build_static (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
450 |
self._test_build("/foo", "/foo") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
451 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
452 |
def test_build_simple (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
453 |
self._test_build("/foo/{bar}", "/foo/x", bar="x") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
454 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
455 |
def test_build_multi (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
456 |
self._test_build("/foo/{bar}/{quux}", "/foo/x/y", bar="x", quux="y") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
457 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
458 |
def test_build_missing (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
459 |
self._test_build_fails(urltree.URLError, "/foo/{bar}/{quux}", bar="x") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
460 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
461 |
def test_build_unknown (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
462 |
self._test_build_fails(urltree.URLError, "/foo/{bar}/{quux}", bar="x", quux="y", frob="???") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
463 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
464 |
def test_build_long (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
465 |
self._test_build("/foo/{bar=a}/{quux=b}", "/foo/x/y", bar="x", quux="y") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
466 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
467 |
def test_build_short (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
468 |
self._test_build("/foo/{bar=a}/{quux=b}", "/foo/x", bar="x", quux="b") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
469 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
470 |
def test_build_with_none (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
471 |
self._test_build("/foo/{bar=a}/{quux=b}", "/foo/x", bar="x", quux=None) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
472 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
473 |
def test_build_default (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
474 |
self._test_build("/foo/{bar=a}/{quux=b}", "/foo/x", bar="x") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
475 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
476 |
def test_build_qargs (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
477 |
self._test_build("/foo/{bar}/?quux", "/foo/x?quux=a", bar="x", quux="a") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
478 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
479 |
def test_build_qargs_default (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
480 |
self._test_build("/foo/{bar}/?quux", "/foo/x?quux=a", bar="x", quux="a") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
481 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
482 |
# XXX: this just becomes ...?quux=['a', 'b'] like from str(list) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
483 |
# def test_build_qargs_multi_invalid (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
484 |
# self._test_build_fails(urltree.URLError, "/foo/{bar}/?quux", bar="x", quux=["a", "b"]) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
485 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
486 |
def test_build_qargs_multi_list (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
487 |
self._test_build("/foo/{bar}/?quux:list", "/foo/x?quux=a&quux=b", bar="x", quux=["a", "b"]) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
488 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
489 |
def test_build_qargs_none (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
490 |
self._test_build("/foo/{bar}/?quux", "/foo/x", bar="x", quux=None) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
491 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
492 |
class TestTreeBuild (unittest.TestCase) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
493 |
def setUp (self) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
494 |
self.config = urltree.URLConfig(reject_extra_args=False) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
495 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
496 |
def test_simple_root (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
497 |
self.config("/", None) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
498 |
self.assertEqual(str(urltree.URLTree(self.config).root), "/[]") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
499 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
500 |
def test_simple_static (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
501 |
self.config("/foo/bar", None) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
502 |
self.assertEqual(str(urltree.URLTree(self.config).root), "/[foo/[bar/[]]]") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
503 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
504 |
def test_multi_static (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
505 |
self.config("/foo/bar", None) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
506 |
self.config("/foo/quux", None) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
507 |
self.config("/asdf", None) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
508 |
self.assertEqual(str(urltree.URLTree(self.config).root), "/[foo/[bar/[],quux/[]],asdf/[]]") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
509 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
510 |
def test_simple_value (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
511 |
self.config("/foo/{bar}", None) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
512 |
self.assertEqual(str(urltree.URLTree(self.config).root), "/[foo/[{bar}/[]]]") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
513 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
514 |
def test_deep (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
515 |
self.config("/foo/{cc}/a", None) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
516 |
self.config("/foo/{cc}/b", None) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
517 |
self.assertEqual(str(urltree.URLTree(self.config).root), "/[foo/[{cc}/[a/[],b/[]]]]") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
518 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
519 |
def test_deep2 (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
520 |
self.config("/foo/{cc}/a/x", None) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
521 |
self.config("/foo/{cc}/b", None) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
522 |
self.assertEqual(str(urltree.URLTree(self.config).root), "/[foo/[{cc}/[a/[x/[]],b/[]]]]") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
523 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
524 |
def test_ambig_simple (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
525 |
self.config("/foo", None) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
526 |
self.config("/foo", None) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
527 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
528 |
self.assertRaises(urltree.URLError, urltree.URLTree, self.config) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
529 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
530 |
class TestTreeMatch (unittest.TestCase) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
531 |
def setUp (self) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
532 |
self.config = urltree.URLConfig(reject_extra_args=False) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
533 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
534 |
self.root =self.config("/", None) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
535 |
self.bar = self.config("/bar", None) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
536 |
self.quux = self.config("/quux/{xyz}", None) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
537 |
self.quux_boo = self.config("/quux/{xyz}/boo/{opt=no}", None) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
538 |
self.quux_yes = self.config("/quux/{xyz}/yes", None) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
539 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
540 |
self.tree = urltree.URLTree(self.config) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
541 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
542 |
def _test_match (self, path, url, **values) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
543 |
t_url, t_values = self.tree.match(path) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
544 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
545 |
self.assertEqual(t_url, url) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
546 |
|
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
547 |
self.assertEqual(set(key for key, value, type, is_default in t_values), set(values)) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
548 |
|
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
549 |
for key, value, type, is_default in t_values : |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
550 |
self.assertEqual(value, values[key]) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
551 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
552 |
def test_root (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
553 |
self._test_match("", self.root) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
554 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
555 |
def test_bar (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
556 |
self._test_match("bar", self.bar) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
557 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
558 |
def test_bar_slash (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
559 |
self._test_match("bar/", self.bar) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
560 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
561 |
def test_quux (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
562 |
self._test_match("quux/a", self.quux, xyz="a") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
563 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
564 |
def test_quux_missing (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
565 |
self.assertRaises(urltree.URLError, self._test_match, "quux/", None) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
566 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
567 |
def test_quux_boo (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
568 |
self._test_match("quux/a/boo/x", self.quux_boo, xyz="a", opt="x") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
569 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
570 |
def test_quux_default (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
571 |
self._test_match("quux/a/boo", self.quux_boo, xyz="a", opt="no") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
572 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
573 |
def test_yes (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
574 |
self._test_match("quux/a/yes", self.quux_yes, xyz="a") |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
575 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
576 |
class TestTreeHandler (unittest.TestCase) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
577 |
def _build_handler (self, name) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
578 |
return name |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
579 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
580 |
def setUp (self) : |
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
581 |
self.config = urltree.URLConfig(reject_extra_args=False) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
582 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
583 |
self.root =self.config("/", self._build_handler('root')) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
584 |
self.bar = self.config("/bar", self._build_handler('bar')) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
585 |
self.quux = self.config("/quux/{xyz}", self._build_handler('quux')) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
586 |
self.quux_boo = self.config("/quux/{xyz}/boo/{opt=no}", self._build_handler('quux_boo')) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
587 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
588 |
self.tree = urltree.URLTree(self.config) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
589 |
|
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
590 |
def _test_handle (self, path, name, qargs={}, **args) : |
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
591 |
qargs = [(key, [value]) for key, value in qargs.iteritems()] |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
592 |
|
45
e3001377e9dc
ext.urltree: improved docs and refactoring
Tero Marttila <terom@fixme.fi>
parents:
44
diff
changeset
|
593 |
h_name, h_args, q_args = self.tree.evaluate(path, qargs) |
44
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
594 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
595 |
self.assertEqual(h_name, name) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
596 |
self.assertEqual(h_args, args) |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
597 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
598 |
def test_root (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
599 |
self._test_handle("", 'root') |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
600 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
601 |
def test_bar (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
602 |
self._test_handle("bar", 'bar') |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
603 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
604 |
def test_quux (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
605 |
self._test_handle("quux/a", 'quux', xyz='a') |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
606 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
607 |
def test_quux_boo (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
608 |
self._test_handle("quux/a/boo/b", 'quux_boo', xyz='a', opt='b') |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
609 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
610 |
def test_quux_boo_default (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
611 |
self._test_handle("quux/a/boo", 'quux_boo', xyz='a', opt='no') |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
612 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
613 |
def test_quux_boo_qarg (self) : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
614 |
self._test_handle("quux/a/boo", 'quux_boo', dict(opt='yes'), xyz='a', opt='yes') |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
615 |
|
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
616 |
if __name__ == '__main__' : |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
617 |
unittest.main() |
30af52a271a1
ext.urltree: initial import from qmsk.web
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
618 |