diff --git a/tests/test_parse.py b/tests/test_parse.py index cbc5ec1..eb101e8 100644 --- a/tests/test_parse.py +++ b/tests/test_parse.py @@ -125,6 +125,19 @@ return "".join(draw(lists(sampled_from(lexer_whitespace), min_size=1))) +# Draws a list of words separated by whitespace +@composite +def draw_joined_words(draw, words): + output = "" + for word in words[0:1]: + # No space before the first word + output += word + for word in words[1:]: + space = draw(draw_whitespace()) + output += space + word + return output + + # Draws multiple words made of identifiers and reserved words @composite def draw_word_salad(draw, exclude_words): @@ -136,11 +149,7 @@ sampled_from(reserved), ] words = draw(lists(one_of(strategies))) - salad = "" - for word in words: - space = draw(draw_whitespace()) - salad += word + space - return salad + return draw(draw_joined_words(words)) # Generates a Text token @@ -216,10 +225,10 @@ shebang = draw(lists(draw_token_shebang(), max_size=1)) tokens = draw(lists(one_of(strategies))) all_tokens = shebang + tokens - code = "" + words = [] for token in all_tokens: - space = draw(draw_whitespace()) - code += token.code + space + words.append(token.code) + code = draw(draw_joined_words(words)) return SampleSoup(all_tokens, code)