diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-11-24 21:38:10 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-11-24 21:38:10 +0000 |
| commit | 1de9198f0c69152fe6f474185ac351e9500a4ce8 (patch) | |
| tree | fa3eb932fa35f796548304a7454fb2eb83717d0e /tests/styles/parser | |
| parent | 056a2173eeb6d0469fde9a24e1db81d67f8722f5 (diff) | |
Implement document matcher parser
Diffstat (limited to 'tests/styles/parser')
| -rw-r--r-- | tests/styles/parser/document_matcher_parser_tests.py | 109 | ||||
| -rw-r--r-- | tests/styles/parser/token_parser_tests.py | 50 |
2 files changed, 159 insertions, 0 deletions
diff --git a/tests/styles/parser/document_matcher_parser_tests.py b/tests/styles/parser/document_matcher_parser_tests.py new file mode 100644 index 0000000..18109ca --- /dev/null +++ b/tests/styles/parser/document_matcher_parser_tests.py @@ -0,0 +1,109 @@ +from nose.tools import istest, assert_equal + +from mammoth import documents, document_matchers +from mammoth.styles.parser.document_matcher_parser import parse_document_matcher +from mammoth.styles.parser.tokeniser import tokenise +from mammoth.styles.parser.token_iterator import TokenIterator + + +@istest +def reads_plain_paragraph(): + assert_equal( + document_matchers.paragraph(), + read_document_matcher("p") + ) + + +@istest +def reads_paragraph_with_style_id(): + assert_equal( + document_matchers.paragraph(style_id="Heading1"), + read_document_matcher("p.Heading1") + ) + + +@istest +def reads_paragraph_with_exact_style_name(): + assert_equal( + document_matchers.paragraph(style_name="Heading 1"), + read_document_matcher("p[style-name='Heading 1']") + ) + + +@istest +def reads_paragraph_ordered_list(): + assert_equal( + document_matchers.paragraph(numbering=documents.numbering_level(1, is_ordered=True)), + read_document_matcher("p:ordered-list(2)") + ) + + +@istest +def reads_paragraph_unordered_list(): + assert_equal( + document_matchers.paragraph(numbering=documents.numbering_level(1, is_ordered=False)), + read_document_matcher("p:unordered-list(2)") + ) + + +@istest +def reads_plain_run(): + assert_equal( + document_matchers.run(), + read_document_matcher("r") + ) + + +@istest +def reads_run_with_style_id(): + assert_equal( + document_matchers.run(style_id="Emphasis"), + read_document_matcher("r.Emphasis") + ) + + +@istest +def reads_run_with_style_name(): + assert_equal( + document_matchers.run(style_name="Emphasis"), + read_document_matcher("r[style-name='Emphasis']") + ) + +@istest +def reads_bold(): + assert_equal( + document_matchers.bold, + read_document_matcher("b") + ) + +@istest +def reads_italic(): + assert_equal( + document_matchers.italic, + read_document_matcher("i") + ) + +@istest +def reads_underline(): + assert_equal( + document_matchers.underline, + read_document_matcher("u") + ) + +@istest +def reads_strikethrough(): + assert_equal( + document_matchers.strikethrough, + read_document_matcher("strike") + ) + +@istest +def reads_comment_reference(): + assert_equal( + document_matchers.comment_reference, + read_document_matcher("comment-reference") + ) + + +def read_document_matcher(string): + return parse_document_matcher(TokenIterator(tokenise(string))) diff --git a/tests/styles/parser/token_parser_tests.py b/tests/styles/parser/token_parser_tests.py new file mode 100644 index 0000000..0e278c7 --- /dev/null +++ b/tests/styles/parser/token_parser_tests.py @@ -0,0 +1,50 @@ +from nose.tools import istest, assert_equal + +from mammoth.styles.parser.tokeniser import Token, TokenType +from mammoth.styles.parser.token_parser import decode_escape_sequences, parse_identifier, parse_string +from mammoth.styles.parser.token_iterator import TokenIterator + + +@istest +def escape_sequences_in_identifiers_are_decoded(): + assert_equal( + ":", + parse_identifier(TokenIterator([ + Token(0, TokenType.IDENTIFIER, r"\:"), + ])), + ) + + +@istest +def escape_sequences_in_strings_are_decoded(): + assert_equal( + "\n", + parse_string(TokenIterator([ + Token(0, TokenType.STRING, r"'\n'"), + ])), + ) + + +@istest +def line_feeds_are_decoded(): + assert_equal("\n", decode_escape_sequences(r"\n")) + + +@istest +def carriage_returns_are_decoded(): + assert_equal("\r", decode_escape_sequences(r"\r")) + + +@istest +def tabs_are_decoded(): + assert_equal("\t", decode_escape_sequences(r"\t")) + + +@istest +def backslashes_are_decoded(): + assert_equal("\\", decode_escape_sequences(r"\\")) + + +@istest +def colons_are_decoded(): + assert_equal(":", decode_escape_sequences(r"\:")) |
