From 94579233bf5d97fa9a7dcc11dc4c355da13af8dc Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Wed, 28 Dec 2016 10:57:16 -0700 Subject: [PATCH] Test lexing quotes --- src/lexer/char.rs | 2 +- src/lexer/mod.rs | 24 ++++++++++++++++++------ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/lexer/char.rs b/src/lexer/char.rs index 0503968..28f469e 100644 --- a/src/lexer/char.rs +++ b/src/lexer/char.rs @@ -44,7 +44,7 @@ impl Lexable for char { } fn is_quote(&self) -> bool { - *self == ''' + *self == '\'' } fn is_string_quote(&self) -> bool { diff --git a/src/lexer/mod.rs b/src/lexer/mod.rs index 44df91a..11eda25 100644 --- a/src/lexer/mod.rs +++ b/src/lexer/mod.rs @@ -498,12 +498,6 @@ mod tests { check_single_token(s, Token::Comment(String::from(s))); } - #[test] - fn finds_strings() { - check_single_token("\"\"", Token::String(String::from("\"\""))); - check_single_token("\"abc\"", Token::String(String::from("\"abc\""))); - } - #[test] fn finds_escaped_characters_in_strings() { check_single_token("\"\\\\\"", Token::String(String::from("\"\\\\\""))); @@ -552,6 +546,17 @@ mod tests { check_single_token("#h4A65", Token::Number(Number::from_int(0x4A65))); } + #[test] + fn finds_quote() { + check_single_token("'", Token::Quote); + } + + #[test] + fn finds_strings() { + check_single_token("\"\"", Token::String(String::from("\"\""))); + check_single_token("\"abc\"", Token::String(String::from("\"abc\""))); + } + #[test] fn lexes_simple_expression() { let mut lexer = Lexer::new("(+ 3.4 6.8)"); @@ -562,6 +567,13 @@ mod tests { assert_next_token(&mut lexer, &Token::RightParen(String::from(")"))); } + #[test] + fn lexes_quoted_identifier() { + let mut lexer = Lexer::new("'abc"); + assert_next_token(&mut lexer, &Token::Quote); + assert_next_token(&mut lexer, &Token::Identifier(String::from("abc"))); + } + fn check_single_token(input: &str, expected: Token) { let mut lexer = Lexer::new(input); assert_next_token(&mut lexer, &expected);