diff --git a/tests/parse/test_clear_notes.py b/tests/parse/test_clear_notes.py index 8c6811a..4d6ffbe 100644 --- a/tests/parse/test_clear_notes.py +++ b/tests/parse/test_clear_notes.py @@ -12,7 +12,8 @@ ParseTask, ) from src.token import TokenStream -from tests.parse.templates import template_parse_invalid +from tests.parse.templates import template_test_invalid +from tests.parse.test_error import static_parse_context from tests.test_token import static_token_by_value, draw_token_random @@ -68,16 +69,16 @@ # Check that a specific token in a stream triggers an error -def error_on_token(draw, parent_context, value, error): - tokens = draw(lists(draw_clear_notes_value())) +def error_on_token(parser, tokens, value, error_value): # Ensure we have a value somewhere start = static_token_by_value(value) new_tokens = tokens + [start] + parent_context = static_parse_context() context = ParseContext(ParseTask.CLEAR_NOTES, new_tokens[0], parent_context) for token in new_tokens: if token.value == value: - error = ParseErrorException(error, token, None, context) - return (new_tokens, error) + error = ParseErrorException(error_value, token, None, context) + template_test_invalid(parser, parent_context, new_tokens, error) # Tests clear_notes passes through skip_note errors @@ -85,15 +86,17 @@ # - When a StartNote token is encountered skip_note is called to skip the note # - Any error skip_note gives is propagated through clear_notes # - Have ParseTask.CLEAR_NOTES as the context's parse task -@template_parse_invalid(NoteSkipperMockInvalid().clear_notes) -def test_parse_clear_notes_startnote_propagation(draw, parent_context): - return error_on_token(draw, parent_context, "StartNote", ParseError.TEST_ERROR) +@given(lists(draw_clear_notes_value())) +def test_parse_clear_notes_startnote_propagation(tokens): + parser = NoteSkipperMockInvalid().clear_notes + error_on_token(parser, tokens, "StartNote", ParseError.TEST_ERROR) # Tests clear_notes errors when finding an EndNote # We expect the following behaviour: # - When an EndNote token is encountered a FOUND_ENDNOTE error is raised # - Have ParseTask.CLEAR_NOTES as the context's parse task -@template_parse_invalid(NoteSkipperMockValid().clear_notes) -def test_parse_clear_notes_invalid_endnote(draw, parent_context): - return error_on_token(draw, parent_context, "EndNote", ParseError.FOUND_ENDNOTE) +@given(lists(draw_clear_notes_value())) +def test_parse_clear_notes_invalid_endnote(tokens): + parser = NoteSkipperMockValid().clear_notes + error_on_token(parser, tokens, "EndNote", ParseError.FOUND_ENDNOTE)