From 7e3ef0ebd0c3453ce351af70ccdb25e93de1d7a9 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Thu, 24 Nov 2016 21:55:13 +0000 Subject: Add HTML path parser --- tests/styles/parser/html_path_parser_tests.py | 80 +++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 tests/styles/parser/html_path_parser_tests.py (limited to 'tests/styles/parser/html_path_parser_tests.py') 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))) -- cgit v1.2.3