def to_elems(gene): token, words = parse_one(gene) while token.ltype != Ltype.END_OF_FILE: if token.ltype == Ltype.NUMBER: yield Element(etype=Etype.NUMBER, value=token.value) elif token.ltype == Ltype.EXECUTABLE_NAME: yield Element(etype=Etype.EXECUTABLE_NAME, value=token.value) elif token.ltype == Ltype.LITERAL_NAME: yield Element(etype=Etype.LITERAL_NAME, value=token.value) elif token.ltype == Ltype.OPEN_CURLY: yield Element(etype=Etype.OPEN_CURLY, value=token.value) elif token.ltype == Ltype.CLOSE_CURLY: yield Element(etype=Etype.CLOSE_CURLY, value=token.value) token, words = parse_one(words)
def test_parse_one_number(): expect = Token(ltype=Ltype.NUMBER, value=123) actualToken, gene = parse_one(to_char_gen("123")) assert expect.value == actualToken.value assert expect.ltype == actualToken.ltype
def test_parse_one_literal_name(): expect = Token(ltype=Ltype.LITERAL_NAME, value="add") actualToken, gene = parse_one(to_char_gen("/add")) assert expect.value == actualToken.value assert expect.ltype == actualToken.ltype
def test_parser_one_executable_name(): expect = Token(ltype=Ltype.EXECUTABLE_NAME, value=i[0]) actualToken, gene = parse_one(to_char_gen(i[1])) assert expect.value == actualToken.value assert expect.ltype == actualToken.ltype
def test_parse_one_empty_should_return_END_OF_FILE(): expect = Token(ltype=Ltype.END_OF_FILE, value="") actualToken, gene = parse_one(to_char_gen("")) assert expect.ltype == actualToken.ltype assert expect.value == actualToken.value
def test_parse_one_close_curly(): expect = Token(ltype=Ltype.CLOSE_CURLY, value="}") actualToken, gene = parse_one(to_char_gen("}")) assert expect.ltype == actualToken.ltype
def test_parse_one_open_curly(): expect = Token(ltype=Ltype.OPEN_CURLY, value="{") actualToken, gene = parse_one(to_char_gen("{")) assert expect.ltype == actualToken.ltype