Add test for lexer

This commit is contained in:
Daniel M 2022-01-02 18:49:18 +01:00
parent 01729beb5f
commit 02f63ad9ad

View File

@ -1,6 +1,6 @@
use std::{iter::Peekable, str::Chars}; use std::{iter::Peekable, str::Chars};
#[derive(Debug)] #[derive(Debug, PartialEq, Eq)]
pub enum Token { pub enum Token {
I64(i64), I64(i64),
@ -65,3 +65,29 @@ pub fn lex(code: &str) -> Vec<Token> {
let mut lexer = Lexer::new(code); let mut lexer = Lexer::new(code);
lexer.lex() lexer.lex()
} }
#[cfg(test)]
mod tests {
use super::{Token, lex};
#[test]
fn test_lexer() {
let code = "33 +5*2 + 4456467*2334+3";
let expected = vec![
Token::I64(33),
Token::Add,
Token::I64(5),
Token::Mul,
Token::I64(2),
Token::Add,
Token::I64(4456467),
Token::Mul,
Token::I64(2334),
Token::Add,
Token::I64(3),
];
let actual = lex(code);
assert_eq!(&expected, &actual);
}
}