From 02f63ad9ad07b9fddf9e02ba15e509a0162beef4 Mon Sep 17 00:00:00 2001 From: Daniel M Date: Sun, 2 Jan 2022 18:49:18 +0100 Subject: [PATCH] Add test for lexer --- src/lexer.rs | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/lexer.rs b/src/lexer.rs index d2530aa..ef0b582 100644 --- a/src/lexer.rs +++ b/src/lexer.rs @@ -1,6 +1,6 @@ use std::{iter::Peekable, str::Chars}; -#[derive(Debug)] +#[derive(Debug, PartialEq, Eq)] pub enum Token { I64(i64), @@ -65,3 +65,29 @@ pub fn lex(code: &str) -> Vec { let mut lexer = Lexer::new(code); 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); + } +}