Add test for lexer
This commit is contained in:
parent
01729beb5f
commit
02f63ad9ad
28
src/lexer.rs
28
src/lexer.rs
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user