Newer
Older
NewLang / tests / test_parse.py
from hypothesis import given
from hypothesis.strategies import text

from src import parse


# General fuzz test, make sure the parser doesn't fall apart and spew
# uncontrolled errors.
@given(text(), text())
def test_parser_fuzz(code, filename):
    try:
        tokenizer = parse.Tokenizer(code, filename)
        tokens = tokenizer.tokenize()
        parser = parse.Parser(tokens)
        parser.parse_file()
    except parse.ParseError:
        pass


# Test that we can make string literals using the BeginText and EndText syntax.
@given(text())
def test_lexer_text(text):
    code = "BeginText " + text + " EndText"
    tokenizer = parse.Tokenizer(code, "")
    tokens = tokenizer.tokenize()
    assert tokens[0].type == "text"
    assert tokens[0].value == text
    assert tokens[1].type == "EOF"