From 7f19c781278efe907b9386eefe21f1f43bb75b4a Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Sun, 25 Dec 2016 14:20:25 -0700 Subject: [PATCH] Make some unit tests for the lexer --- src/lexer/mod.rs | 22 ++++++++++++++++++++++ src/lexer/token.rs | 3 ++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/lexer/mod.rs b/src/lexer/mod.rs index 2728971..49e935f 100644 --- a/src/lexer/mod.rs +++ b/src/lexer/mod.rs @@ -170,3 +170,25 @@ impl Iterator for Lexer { lex } } + +// +// TESTING +// + +#[test] +fn lexer_finds_parens() { + let mut lexer = Lexer::new("()".to_string()); + assert_next_token(&mut lexer, &Token::LeftParen("(".to_string())); + assert_next_token(&mut lexer, &Token::RightParen(")".to_string())); +} + +#[test] +fn lexer_finds_identifiers() { + let mut lexer = Lexer::new("abc".to_string()); + assert_next_token(&mut lexer, &Token::Identifier("abc".to_string())); +} + +fn assert_next_token(lexer: &mut Lexer, expected: &Token) { + let lex = lexer.next().unwrap(); + assert_eq!(lex.token, *expected); +} diff --git a/src/lexer/token.rs b/src/lexer/token.rs index c24ae8f..ede52bf 100644 --- a/src/lexer/token.rs +++ b/src/lexer/token.rs @@ -3,6 +3,7 @@ */ #[derive(Debug)] +#[derive(PartialEq)] pub enum Token { LeftParen(String), RightParen(String), @@ -15,7 +16,7 @@ pub enum Token { /// place. #[derive(Debug)] pub struct Lex { - token: Token, + pub token: Token, } impl Lex {