Fixed #9 : I can parse 'def concept'
This commit is contained in:
@@ -8,6 +8,8 @@ def test_i_can_parser_input():
|
||||
parser_input = ParserInput("def concept a")
|
||||
assert parser_input.init() is True
|
||||
assert parser_input.exception is None
|
||||
assert parser_input.pos == -1
|
||||
assert parser_input.end == 6
|
||||
|
||||
|
||||
def test_i_can_detect_errors():
|
||||
@@ -38,3 +40,129 @@ def test_i_must_call_init_before_call_as_text():
|
||||
parser_input.as_text()
|
||||
|
||||
assert ex.value.args[0] == "You must call init() first !"
|
||||
|
||||
|
||||
def test_i_can_get_next_token():
|
||||
parser_input = ParserInput("def concept a")
|
||||
parser_input.init()
|
||||
|
||||
assert parser_input.next_token() is True
|
||||
assert parser_input.token.type == TokenKind.IDENTIFIER
|
||||
assert parser_input.token.value == "def"
|
||||
|
||||
assert parser_input.next_token() is True
|
||||
assert parser_input.token.type == TokenKind.IDENTIFIER
|
||||
assert parser_input.token.value == "concept"
|
||||
|
||||
assert parser_input.next_token(skip_whitespace=False) is True
|
||||
assert parser_input.token.type == TokenKind.WHITESPACE
|
||||
assert parser_input.token.value == " "
|
||||
|
||||
assert parser_input.next_token(skip_whitespace=False) is True
|
||||
assert parser_input.token.type == TokenKind.IDENTIFIER
|
||||
assert parser_input.token.value == "a"
|
||||
|
||||
assert parser_input.next_token() is False
|
||||
assert parser_input.token.type == TokenKind.EOF
|
||||
|
||||
|
||||
def test_next_after_eof_is_eof():
|
||||
parser_input = ParserInput("hi")
|
||||
parser_input.init()
|
||||
|
||||
assert parser_input.next_token() is True
|
||||
assert parser_input.token.type == TokenKind.IDENTIFIER
|
||||
assert parser_input.token.value == "hi"
|
||||
|
||||
assert parser_input.next_token() is False
|
||||
assert parser_input.token.type == TokenKind.EOF
|
||||
|
||||
assert parser_input.next_token() is False
|
||||
assert parser_input.token.type == TokenKind.EOF
|
||||
|
||||
assert parser_input.next_token() is False
|
||||
assert parser_input.token.type == TokenKind.EOF
|
||||
|
||||
|
||||
def test_i_can_manage_blank_input():
|
||||
parser_input = ParserInput(" ")
|
||||
parser_input.init()
|
||||
|
||||
assert parser_input.next_token() is False
|
||||
assert parser_input.token.type == TokenKind.EOF
|
||||
|
||||
|
||||
def test_i_can_manage_blank_input_when_skip_whitespace_is_false():
|
||||
parser_input = ParserInput(" ")
|
||||
parser_input.init()
|
||||
|
||||
assert parser_input.next_token(skip_whitespace=False) is True
|
||||
assert parser_input.token.type == TokenKind.WHITESPACE
|
||||
assert parser_input.token.value == " "
|
||||
|
||||
assert parser_input.next_token(skip_whitespace=False) is False
|
||||
assert parser_input.token.type == TokenKind.EOF
|
||||
|
||||
|
||||
def test_i_can_reset():
|
||||
parser_input = ParserInput("hello world ")
|
||||
parser_input.init()
|
||||
|
||||
assert parser_input.next_token() is True
|
||||
assert parser_input.token.type == TokenKind.IDENTIFIER
|
||||
assert parser_input.token.value == "hello"
|
||||
|
||||
assert parser_input.next_token() is True
|
||||
assert parser_input.token.type == TokenKind.IDENTIFIER
|
||||
assert parser_input.token.value == "world"
|
||||
|
||||
assert parser_input.next_token() is False
|
||||
assert parser_input.token.type == TokenKind.EOF
|
||||
|
||||
assert parser_input.next_token() is False
|
||||
assert parser_input.token.type == TokenKind.EOF
|
||||
|
||||
parser_input.reset()
|
||||
|
||||
assert parser_input.next_token() is True
|
||||
assert parser_input.token.type == TokenKind.IDENTIFIER
|
||||
assert parser_input.token.value == "hello"
|
||||
|
||||
assert parser_input.next_token() is True
|
||||
assert parser_input.token.type == TokenKind.IDENTIFIER
|
||||
assert parser_input.token.value == "world"
|
||||
|
||||
assert parser_input.next_token() is False
|
||||
assert parser_input.token.type == TokenKind.EOF
|
||||
|
||||
|
||||
def test_i_can_parse_when_input_ends_by_white_space():
|
||||
parser_input = ParserInput("hello world ")
|
||||
parser_input.init()
|
||||
|
||||
assert parser_input.next_token() is True
|
||||
assert parser_input.token.type == TokenKind.IDENTIFIER
|
||||
assert parser_input.token.value == "hello"
|
||||
|
||||
assert parser_input.next_token() is True
|
||||
assert parser_input.token.type == TokenKind.IDENTIFIER
|
||||
assert parser_input.token.value == "world"
|
||||
|
||||
assert parser_input.next_token() is False
|
||||
assert parser_input.token.type == TokenKind.EOF
|
||||
|
||||
|
||||
def test_i_can_parse_when_input_starts_by_white_space():
|
||||
parser_input = ParserInput(" hello world")
|
||||
parser_input.init()
|
||||
|
||||
assert parser_input.next_token() is True
|
||||
assert parser_input.token.type == TokenKind.IDENTIFIER
|
||||
assert parser_input.token.value == "hello"
|
||||
|
||||
assert parser_input.next_token() is True
|
||||
assert parser_input.token.type == TokenKind.IDENTIFIER
|
||||
assert parser_input.token.value == "world"
|
||||
|
||||
assert parser_input.next_token() is False
|
||||
assert parser_input.token.type == TokenKind.EOF
|
||||
|
||||
Reference in New Issue
Block a user