Add a failing test that the lexer finds rational numbers
This commit is contained in:
		
							parent
							
								
									636b0dda9b
								
							
						
					
					
						commit
						f9d9a08455
					
				
					 2 changed files with 16 additions and 5 deletions
				
			
		|  | @ -41,10 +41,6 @@ enum State { | |||
|     StringEscape, | ||||
| } | ||||
| 
 | ||||
| pub fn lex(input: &str) -> Lexer { | ||||
|     Lexer::new(&input) | ||||
| } | ||||
| 
 | ||||
| pub struct Lexer { | ||||
|     input: String, | ||||
|     begin: usize, | ||||
|  |  | |||
|  | @ -8,10 +8,18 @@ mod number; | |||
| mod str; | ||||
| mod token; | ||||
| 
 | ||||
| pub use lexer::Lexer; | ||||
| pub use token::Token; | ||||
| 
 | ||||
| pub fn lex(input: &str) -> Lexer { | ||||
|     Lexer::new(&input) | ||||
| } | ||||
| 
 | ||||
| #[cfg(test)] | ||||
| mod tests { | ||||
|     use sibiltypes::{Bool, Char, Number}; | ||||
|     use std::iter::Iterator; | ||||
|     use super::lex; | ||||
|     use lexer::Lexer; | ||||
|     use token::Token; | ||||
| 
 | ||||
|  | @ -81,6 +89,12 @@ mod tests { | |||
|         check_single_token("0.34", Token::Number(Number::from_float(0.34, false))); | ||||
|     } | ||||
| 
 | ||||
|     #[test] | ||||
|     fn finds_rational_numbers() { | ||||
|         check_single_token("3/2", Token::Number(Number::from_quotient(3, 2, true))); | ||||
|         check_single_token("-3/2", Token::Number(Number::from_quotient(-3, 2, true))); | ||||
|     } | ||||
| 
 | ||||
|     #[test] | ||||
|     fn finds_negative_numbers() { | ||||
|         check_single_token("-3", Token::Number(Number::from_int(-3, true))); | ||||
|  | @ -110,6 +124,7 @@ mod tests { | |||
|     fn finds_exact_numbers() { | ||||
|         check_single_token("#e45", Token::Number(Number::from_int(45, true))); | ||||
|         check_single_token("#e-45", Token::Number(Number::from_int(-45, true))); | ||||
|         check_single_token("#e4.5", Token::Number(Number::from_float(4.5, true))); | ||||
|     } | ||||
| 
 | ||||
|     #[test] | ||||
|  | @ -149,7 +164,7 @@ mod tests { | |||
|     } | ||||
| 
 | ||||
|     fn check_tokens(input: &str, expected: Vec<Token>) { | ||||
|         let lexer = Lexer::new(input); | ||||
|         let lexer = lex(input); | ||||
|         let mut expected_iter = expected.iter(); | ||||
|         for lex in lexer { | ||||
|             if let Some(expected_token) = expected_iter.next() { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue