gvsig-scripting / org.gvsig.scripting / trunk / org.gvsig.scripting / org.gvsig.scripting.app / org.gvsig.scripting.app.mainplugin / src / main / resources-plugin / scripting / lib / cssutils / tests / test_selectorlist.py @ 475
History | View | Annotate | Download (4.52 KB)
1 |
"""Testcases for cssutils.css.selectorlist.SelectorList."""
|
---|---|
2 |
|
3 |
import xml.dom |
4 |
import basetest |
5 |
import cssutils |
6 |
from cssutils.css.selectorlist import SelectorList |
7 |
|
8 |
class SelectorListTestCase(basetest.BaseTestCase): |
9 |
|
10 |
def setUp(self): |
11 |
self.r = SelectorList()
|
12 |
|
13 |
def test_init(self): |
14 |
"SelectorList.__init__() and .length"
|
15 |
s = SelectorList() |
16 |
self.assertEqual(0, s.length) |
17 |
|
18 |
s = SelectorList('a, b')
|
19 |
self.assertEqual(2, s.length) |
20 |
self.assertEqual(u'a, b', s.selectorText) |
21 |
|
22 |
s = SelectorList(selectorText='a')
|
23 |
self.assertEqual(1, s.length) |
24 |
self.assertEqual(u'a', s.selectorText) |
25 |
|
26 |
s = SelectorList(selectorText=('p|a', {'p': 'uri'})) # n-dict |
27 |
self.assertEqual(1, s.length) |
28 |
self.assertEqual(u'p|a', s.selectorText) |
29 |
|
30 |
s = SelectorList(selectorText=('p|a', (('p', 'uri'),))) # n-tuples |
31 |
self.assertEqual(1, s.length) |
32 |
self.assertEqual(u'p|a', s.selectorText) |
33 |
|
34 |
def test_parentRule(self): |
35 |
"Selector.parentRule"
|
36 |
def check(style): |
37 |
self.assertEqual(style, style.selectorList.parentRule)
|
38 |
for sel in style.selectorList: |
39 |
self.assertEqual(style.selectorList, sel.parent)
|
40 |
|
41 |
style = cssutils.css.CSSStyleRule('a, b')
|
42 |
check(style) |
43 |
|
44 |
# add new selector
|
45 |
style.selectorList.append(cssutils.css.Selector('x'))
|
46 |
check(style) |
47 |
|
48 |
# replace selectorList
|
49 |
style.selectorList = cssutils.css.SelectorList('x')
|
50 |
check(style) |
51 |
|
52 |
# replace selectorText
|
53 |
style.selectorText = ('x, y')
|
54 |
check(style) |
55 |
|
56 |
def test_appendSelector(self): |
57 |
"SelectorList.appendSelector() and .length"
|
58 |
s = SelectorList() |
59 |
s.appendSelector('a')
|
60 |
self.assertEqual(1, s.length) |
61 |
|
62 |
self.assertRaises(xml.dom.InvalidModificationErr,
|
63 |
s.appendSelector, 'b,')
|
64 |
self.assertEqual(1, s.length) |
65 |
|
66 |
self.assertEqual(u'a', s.selectorText) |
67 |
|
68 |
s.append('b')
|
69 |
self.assertEqual(2, s.length) |
70 |
self.assertEqual(u'a, b', s.selectorText) |
71 |
|
72 |
s.append('a')
|
73 |
self.assertEqual(2, s.length) |
74 |
self.assertEqual(u'b, a', s.selectorText) |
75 |
|
76 |
# __setitem__
|
77 |
self.assertRaises(IndexError, s.__setitem__, 4, 'x') |
78 |
s[1] = 'c' |
79 |
self.assertEqual(2, s.length) |
80 |
self.assertEqual(u'b, c', s.selectorText) |
81 |
# TODO: remove duplicates?
|
82 |
# s[0] = 'c'
|
83 |
# self.assertEqual(1, s.length)
|
84 |
# self.assertEqual(u'c', s.selectorText)
|
85 |
|
86 |
s = SelectorList() |
87 |
s.appendSelector(('p|a', {'p': 'uri', 'x': 'xxx'})) |
88 |
self.assertEqual(u'p|a', s.selectorText) |
89 |
# x gets lost as not used
|
90 |
self.assertRaises(xml.dom.NamespaceErr, s.append, 'x|a') |
91 |
# not set at all
|
92 |
self.assertRaises(xml.dom.NamespaceErr, s.append, 'y|a') |
93 |
# but p is retained
|
94 |
s.append('p|b')
|
95 |
self.assertEqual(u'p|a, p|b', s.selectorText) |
96 |
|
97 |
def test_selectorText(self): |
98 |
"SelectorList.selectorText"
|
99 |
s = SelectorList() |
100 |
s.selectorText = u'a, b'
|
101 |
self.assertEqual(u'a, b', s.selectorText) |
102 |
self.assertRaises(xml.dom.SyntaxErr, s._setSelectorText, u',') |
103 |
# not changed as invalid!
|
104 |
self.assertEqual(u'a, b', s.selectorText) |
105 |
|
106 |
tests = { |
107 |
u'*': None, |
108 |
u'/*1*/*': None, |
109 |
u'/*1*/*, a': None, |
110 |
u'a, b': None, |
111 |
u'a ,b': u'a, b', |
112 |
u'a , b': u'a, b', |
113 |
u'a, b, c': u'a, b, c', |
114 |
u'#a, x#a, .b, x.b': u'#a, x#a, .b, x.b', |
115 |
(u'[p|a], p|*', (('p', 'uri'),)): u'[p|a], p|*', |
116 |
} |
117 |
# do not parse as not complete
|
118 |
self.do_equal_r(tests, att='selectorText') |
119 |
|
120 |
tests = { |
121 |
u'x|*': xml.dom.NamespaceErr,
|
122 |
u'': xml.dom.SyntaxErr,
|
123 |
u' ': xml.dom.SyntaxErr,
|
124 |
u',': xml.dom.SyntaxErr,
|
125 |
u'a,': xml.dom.SyntaxErr,
|
126 |
u',a': xml.dom.SyntaxErr,
|
127 |
u'/* 1 */,a': xml.dom.SyntaxErr,
|
128 |
} |
129 |
# only set as not complete
|
130 |
self.do_raise_r(tests, att='_setSelectorText') |
131 |
|
132 |
def test_reprANDstr(self): |
133 |
"SelectorList.__repr__(), .__str__()"
|
134 |
sel=(u'a, p|b', { 'p': 'uri'}) |
135 |
|
136 |
s = cssutils.css.SelectorList(selectorText=sel) |
137 |
|
138 |
self.assertTrue(sel[0] in str(s)) |
139 |
|
140 |
s2 = eval(repr(s)) |
141 |
self.assertTrue(isinstance(s2, s.__class__)) |
142 |
self.assertEqual(sel[0], s2.selectorText) |
143 |
|
144 |
|
145 |
if __name__ == '__main__': |
146 |
import unittest |
147 |
unittest.main() |