diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-11-24 21:55:13 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-11-24 21:55:13 +0000 |
| commit | 7e3ef0ebd0c3453ce351af70ccdb25e93de1d7a9 (patch) | |
| tree | baa24495768580b2a70bcd181ef1a398c435bc6d /tests/styles | |
| parent | cfc0df82457acff6d8ac1abf930901b8baafbe17 (diff) | |
Add HTML path parser
Diffstat (limited to 'tests/styles')
| -rw-r--r-- | tests/styles/parser/html_path_parser_tests.py | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/tests/styles/parser/html_path_parser_tests.py b/tests/styles/parser/html_path_parser_tests.py new file mode 100644 index 0000000..feaa343 --- /dev/null +++ b/tests/styles/parser/html_path_parser_tests.py @@ -0,0 +1,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))) |
