43 lines
1.4 KiB
Rust
43 lines
1.4 KiB
Rust
use rush::lexer::{Lexer, Token};
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn test_tokenization() {
|
|
let mut lexer = Lexer::new("x = 10");
|
|
assert_eq!(lexer.next_token(), Token::Identifier("x".to_string()));
|
|
assert_eq!(lexer.next_token(), Token::Assign);
|
|
assert_eq!(lexer.next_token(), Token::Number(10));
|
|
assert_eq!(lexer.next_token(), Token::Eof);
|
|
}
|
|
|
|
#[test]
|
|
fn test_identifier_tokens() {
|
|
let mut lexer = Lexer::new("foo bar");
|
|
assert_eq!(lexer.next_token(), Token::Identifier("foo".to_string()));
|
|
assert_eq!(lexer.next_token(), Token::Identifier("bar".to_string()));
|
|
assert_eq!(lexer.next_token(), Token::Eof);
|
|
}
|
|
|
|
#[test]
|
|
fn test_control_flow_tokens() {
|
|
let mut lexer = Lexer::new("if else while");
|
|
assert_eq!(lexer.next_token(), Token::If);
|
|
assert_eq!(lexer.next_token(), Token::Else);
|
|
assert_eq!(lexer.next_token(), Token::While);
|
|
assert_eq!(lexer.next_token(), Token::Eof);
|
|
}
|
|
|
|
#[test]
|
|
fn test_operators() {
|
|
let mut lexer = Lexer::new("+ - * /");
|
|
assert_eq!(lexer.next_token(), Token::Plus);
|
|
assert_eq!(lexer.next_token(), Token::Minus);
|
|
assert_eq!(lexer.next_token(), Token::Multiply);
|
|
assert_eq!(lexer.next_token(), Token::Divide);
|
|
assert_eq!(lexer.next_token(), Token::Eof);
|
|
}
|
|
}
|