Check single tokens in the lexer

This commit is contained in:
Eryn Wells 2016-12-25 20:49:15 -07:00
parent 5a28b06434
commit 3d369daa66

View file

@ -200,38 +200,36 @@ mod tests {
#[test] #[test]
fn lexer_finds_parens() { fn lexer_finds_parens() {
let mut lexer = Lexer::new("()"); check_single_token("(", Token::LeftParen(String::from("(")));
assert_next_token(&mut lexer, &Token::LeftParen("(".to_string())); check_single_token(")", Token::RightParen(String::from(")")));
assert_next_token(&mut lexer, &Token::RightParen(")".to_string()));
} }
#[test] #[test]
fn lexer_finds_identifiers() { fn lexer_finds_identifiers() {
let s = "abc"; check_single_token("abc", Token::Identifier(String::from("abc")));
let mut lexer = Lexer::new(s);
assert_next_token(&mut lexer, &Token::Identifier(s.to_string()));
} }
#[test] #[test]
fn lexer_finds_booleans() { fn lexer_finds_booleans() {
let mut lexer = Lexer::new("#t #f"); check_single_token("#t", Token::Boolean(true));
assert_next_token(&mut lexer, &Token::Boolean(true)); check_single_token("#f", Token::Boolean(false));
assert_next_token(&mut lexer, &Token::Boolean(false));
} }
#[test] #[test]
fn lexer_finds_comments() { fn lexer_finds_comments() {
let s = "; a comment"; let s = "; a comment";
let mut lexer = Lexer::new(s); check_single_token(s, Token::Comment(String::from(s)));
assert_next_token(&mut lexer, &Token::Comment(s.to_string()));
} }
#[test] #[test]
fn lexer_finds_strings() { fn lexer_finds_strings() {
let mut lexer = Lexer::new("\"\""); check_single_token("\"\"", Token::String(String::from("\"\"")));
assert_next_token(&mut lexer, &Token::String("\"\"".to_string())); check_single_token("\"abc\"", Token::String(String::from("\"abc\"")));
let mut lexer = Lexer::new("\"abc\""); }
assert_next_token(&mut lexer, &Token::String("\"abc\"".to_string()));
fn check_single_token(input: &str, expected: Token) {
let mut lexer = Lexer::new(input);
assert_next_token(&mut lexer, &expected);
} }
fn assert_next_token(lexer: &mut Lexer, expected: &Token) { fn assert_next_token(lexer: &mut Lexer, expected: &Token) {