Minimal Imperative Parsing Library | https://docs.rs/mipl
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 87 lines 2.1 kB view raw
1use mipl::prelude::*; 2 3mod common; 4use common::*; 5 6#[test] 7fn test_exact_match() { 8 let mut parser = setup_space_seps_parser("lorem ipsum"); 9 10 let ipsum_parser = ExactMatch{ 11 matches: String::from("ipsum") 12 }; 13 parser.next(); 14 assert_eq!(Some(String::from("ipsum")), ipsum_parser.try_next(&mut parser)); 15} 16 17#[test] 18fn test_exact_match_try_next_advance_token() { 19 let mut parser = setup_space_seps_parser("lorem ipsum"); 20 21 let ipsum_parser = ExactMatch{ 22 matches: String::from("lorem") 23 }; 24 ipsum_parser.try_next(&mut parser); 25 26 assert_eq!( 27 Some( 28 Token::Str( String::from("ipsum") ) 29 ), 30 parser.next() 31 ); 32} 33 34#[test] 35fn test_any_str_match() { 36 let mut parser = setup_space_seps_parser("\nNew path to\nGibberish!"); 37 38 let any_str_matcher = AnyStrMatch; 39 let newline = any_str_matcher.try_next(&mut parser); 40 parser.next(); 41 let str_new = any_str_matcher.try_next(&mut parser); 42 43 assert_eq!(None, newline); 44 assert_eq!( 45 Some(String::from("New")), 46 str_new 47 ); 48} 49 50#[test] 51fn test_is_newline() { 52 let mut parser = setup_space_seps_parser("lorem ipsum\ndolor sit amet"); 53 54 let newline_parser = IsNewline; 55 56 assert_eq!(None, newline_parser.try_next(&mut parser)); 57 58 parser.next(); 59 parser.next(); 60 61 assert_eq!(Some(NewlineToken), newline_parser.try_next(&mut parser)); 62 63 assert_eq!(None, newline_parser.try_next(&mut parser)); 64} 65 66#[test] 67fn test_is_tab() { 68 let d_vec: Vec<char> = vec![' ']; 69 let d_del = DiscardDelimiters::new(d_vec); 70 let k_vec: Vec<char> = vec!['\n', '\t']; 71 let k_del = KeepDelimiters::new(k_vec); 72 let del_param = DelimitersParam { 73 keep: k_del, discard: d_del 74 }; 75 76 let mut parser = Parser::from( 77 "usage\tapp [file]".to_string(), 78 del_param 79 ); 80 81 let tab_parser = IsTab; 82 83 assert_eq!(None, tab_parser.try_next(&mut parser)); 84 parser.next(); 85 assert_eq!(Some(TabToken), tab_parser.try_next(&mut parser)); 86 assert_eq!(None, tab_parser.try_next(&mut parser)); 87}