1pub mod lexer;
13pub mod parser;
14
15#[cfg(test)]
16mod tests {
17 use crate::lexer::{Lexer, NumberBase, TokenKind};
18
19 #[test]
20 fn test_real_numbers() {
21 let source = "1.0 2.64 89.0 0.123";
22 let mut lex = Lexer::new(source);
23 let t = lex.next();
24 assert_eq!(t.kind, TokenKind::RealNumber);
25 assert_eq!(t.source(), "1.0");
26 let t = lex.next();
27 assert_eq!(t.kind, TokenKind::RealNumber);
28 assert_eq!(t.source(), "2.64");
29 let t = lex.next();
30 assert_eq!(t.kind, TokenKind::RealNumber);
31 assert_eq!(t.source(), "89.0");
32 let t = lex.next();
33 assert_eq!(t.kind, TokenKind::RealNumber);
34 assert_eq!(t.source(), "0.123");
35 }
36
37 #[test]
38 fn test_numbers() {
39 let source = "123 0xFF 0o755 0b0101";
40 let mut lex = Lexer::new(source);
41 let t = lex.next();
42 assert_eq!(t.kind, TokenKind::Number(NumberBase::D));
43 assert_eq!(t.source(), "123");
44 let t = lex.next();
45 assert_eq!(t.kind, TokenKind::Number(NumberBase::X));
46 assert_eq!(t.source(), "FF");
47 let t = lex.next();
48 assert_eq!(t.kind, TokenKind::Number(NumberBase::O));
49 assert_eq!(t.source(), "755");
50 let t = lex.next();
51 assert_eq!(t.kind, TokenKind::Number(NumberBase::B));
52 assert_eq!(t.source(), "0101");
53 }
54}