diff --git a/tests/test_parse.py b/tests/test_parse.py index 89d8fb3..0e86344 100644 --- a/tests/test_parse.py +++ b/tests/test_parse.py @@ -77,12 +77,14 @@ self.code = code self.type = type self.value = value + self.location = None def __repr__(self): - return "SampleToken(code '%s', type '%s', value '%s')" % ( + return "SampleToken(code '%s', type '%s', value '%s', location %s)" % ( self.code, self.type, self.value, + self.location, ) @@ -225,10 +227,21 @@ shebang = draw(lists(draw_token_shebang(), max_size=1)) tokens = draw(lists(one_of(strategies))) all_tokens = shebang + tokens - words = [] + file = "" + code = "" + curr_line = 1 + curr_column = 1 for token in all_tokens: - words.append(token.code) - code = draw(draw_joined_words(words)) + token.location = parse.ParseLocation(curr_line, curr_column, file) + space = draw(draw_whitespace()) + new_code = token.code + space + lines = new_code.split("\n") + if len(lines) > 1: + curr_line += (len(lines) - 1) + curr_column = len(lines[-1]) + 1 + else: + curr_column += len(new_code) + code += new_code return SampleSoup(all_tokens, code) @@ -245,7 +258,9 @@ else: assert tokens[out_pos].type == soup.tokens[in_pos].type assert tokens[out_pos].value == soup.tokens[in_pos].value - assert tokens[out_pos].location.file == "" + assert tokens[out_pos].location.file == soup.tokens[in_pos].location.file + assert tokens[out_pos].location.line == soup.tokens[in_pos].location.line + assert tokens[out_pos].location.column == soup.tokens[in_pos].location.column in_pos += 1 out_pos += 1 assert tokens[out_pos].type == "EOF"