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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
from nose.tools import istest, assert_equal
from mammoth import html_paths
from mammoth.styles.parser.html_path_parser import parse_html_path
from mammoth.styles.parser.tokeniser import tokenise
from mammoth.styles.parser.token_iterator import TokenIterator
@istest
def can_read_empty_path():
assert_equal(
html_paths.empty,
read_html_path("")
)
@istest
def can_read_single_element():
assert_equal(
html_paths.path([html_paths.element(["p"])]),
read_html_path("p")
)
@istest
def can_read_choice_of_two_elements():
assert_equal(
html_paths.path([html_paths.element(["ul", "ol"])]),
read_html_path("ul|ol")
)
@istest
def can_read_choice_of_three_elements():
assert_equal(
html_paths.path([html_paths.element(["ul", "ol", "p"])]),
read_html_path("ul|ol|p")
)
@istest
def can_read_nested_elements():
assert_equal(
html_paths.path([html_paths.element(["ul"]), html_paths.element(["li"])]),
read_html_path("ul > li")
)
@istest
def can_read_class_on_element():
assert_equal(
html_paths.path([html_paths.element(["p"], class_names=["tip"])]),
read_html_path("p.tip")
)
@istest
def can_read_multiple_classes_on_element():
assert_equal(
html_paths.path([html_paths.element(["p"], class_names=["tip", "help"])]),
read_html_path("p.tip.help")
)
@istest
def can_read_when_element_must_be_fresh():
assert_equal(
html_paths.path([html_paths.element(["p"], fresh=True)]),
read_html_path("p:fresh")
)
@istest
def can_read_ignore_element():
assert_equal(
html_paths.ignore,
read_html_path("!")
)
def read_html_path(string):
return parse_html_path(TokenIterator(tokenise(string)))
|