-
-
Notifications
You must be signed in to change notification settings - Fork 47
Expand file tree
/
Copy pathtest_attribute.py
More file actions
64 lines (52 loc) · 1.93 KB
/
test_attribute.py
File metadata and controls
64 lines (52 loc) · 1.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
"""Test attribute selectors."""
from .. import util
import soupsieve as sv
class TestAttribute(util.TestCase):
"""Test attribute selectors."""
MARKUP = """
<div id="div">
<p id="0">Some text <span id="1"> in a paragraph</span>.</p>
<a id="2" href="http://google.com">Link</a>
<span id="3">Direct child</span>
<pre id="pre">
<span id="4">Child 1</span>
<span id="5">Child 2</span>
<span id="6">Child 3</span>
</pre>
</div>
"""
def test_attribute_not_equal_no_quotes(self):
"""Test attribute with value that does not equal specified value (no quotes)."""
# No quotes
self.assert_selector(
self.MARKUP,
'body [id!=\\35]',
["div", "0", "1", "2", "3", "pre", "4", "6"],
flags=util.HTML5
)
def test_attribute_not_equal_quotes(self):
"""Test attribute with value that does not equal specified value (quotes)."""
# Quotes
self.assert_selector(
self.MARKUP,
"body [id!='5']",
["div", "0", "1", "2", "3", "pre", "4", "6"],
flags=util.HTML5
)
def test_attribute_not_equal_double_quotes(self):
"""Test attribute with value that does not equal specified value (double quotes)."""
# Double quotes
self.assert_selector(
self.MARKUP,
'body [id!="5"]',
["div", "0", "1", "2", "3", "pre", "4", "6"],
flags=util.HTML5
)
def test_bad_attribute(self):
"""Test bad attribute fails."""
with self.assertRaises(sv.SelectorSyntaxError) as cm:
sv.compile(r"[\]!=D4XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
e = cm.exception
self.assertEqual(e.context, '[\\]!=D4XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n^')
self.assertEqual(e.line, 1)
self.assertEqual(e.col, 1)