initial commit
This commit is contained in:
42
tests/lexer_tests.rs
Normal file
42
tests/lexer_tests.rs
Normal file
@@ -0,0 +1,42 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user