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); } }