initial commit

This commit is contained in:
2025-11-01 22:45:55 +01:00
commit 78959d4f22
19 changed files with 2027 additions and 0 deletions

42
tests/lexer_tests.rs Normal file
View 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);
}
}