| // These tests don't really make sense with the bytes API, so we only test them |
| // on the Unicode API. |
| |
| #[test] |
| fn empty_match_unicode_find_iter() { |
| // Tests that we still yield byte ranges at valid UTF-8 sequence boundaries |
| // even when we're susceptible to empty width matches. |
| let re = regex!(r".*?"); |
| assert_eq!( |
| vec![(0, 0), (3, 3), (4, 4), (7, 7), (8, 8)], |
| findall!(re, "Ⅰ1Ⅱ2") |
| ); |
| } |
| |
| #[test] |
| fn empty_match_unicode_captures_iter() { |
| // Same as empty_match_unicode_find_iter, but tests capture iteration. |
| let re = regex!(r".*?"); |
| let ms: Vec<_> = re |
| .captures_iter(text!("Ⅰ1Ⅱ2")) |
| .map(|c| c.get(0).unwrap()) |
| .map(|m| (m.start(), m.end())) |
| .collect(); |
| assert_eq!(vec![(0, 0), (3, 3), (4, 4), (7, 7), (8, 8)], ms); |
| } |
| |
| #[test] |
| fn match_as_str() { |
| let re = regex!(r"fo+"); |
| let caps = re.captures("barfoobar").unwrap(); |
| assert_eq!(caps.get(0).map(|m| m.as_str()), Some("foo")); |
| assert_eq!(caps.get(0).map(From::from), Some("foo")); |
| assert_eq!(caps.get(0).map(Into::into), Some("foo")); |
| } |