|
1 |
| -use sre_engine::constants::SreFlag; |
2 | 1 | use sre_engine::engine;
|
3 | 2 |
|
4 | 3 | struct Pattern {
|
5 | 4 | code: &'static [u32],
|
6 |
| - flags: SreFlag, |
7 | 5 | }
|
8 | 6 |
|
9 | 7 | impl Pattern {
|
10 | 8 | fn state<'a, S: engine::StrDrive>(
|
11 | 9 | &self,
|
12 | 10 | string: S,
|
13 |
| - range: std::ops::Range<usize>, |
14 |
| - ) -> engine::State<'a, S> { |
15 |
| - engine::State::new(string, range.start, range.end, self.flags, self.code) |
| 11 | + ) -> (engine::Request<'a, S>, engine::State<'a, S>) { |
| 12 | + let req = engine::Request::new(string, 0, usize::MAX, self.code, false); |
| 13 | + let state = engine::State::new(0); |
| 14 | + (req, state) |
16 | 15 | }
|
17 | 16 | }
|
18 | 17 |
|
19 | 18 | #[test]
|
20 | 19 | fn test_2427() {
|
21 | 20 | // pattern lookbehind = re.compile(r'(?<!\.)x\b')
|
22 | 21 | // START GENERATED by generate_tests.py
|
23 |
| - #[rustfmt::skip] let lookbehind = Pattern { code: &[15, 4, 0, 1, 1, 5, 5, 1, 17, 46, 1, 17, 120, 6, 10, 1], flags: SreFlag::from_bits_truncate(32) }; |
| 22 | + #[rustfmt::skip] let lookbehind = Pattern { code: &[15, 4, 0, 1, 1, 5, 5, 1, 17, 46, 1, 17, 120, 6, 10, 1] }; |
24 | 23 | // END GENERATED
|
25 |
| - let mut state = lookbehind.state("x", 0..usize::MAX); |
26 |
| - state.pymatch(); |
| 24 | + let (mut req, mut state) = lookbehind.state("x"); |
| 25 | + state.pymatch(&mut req); |
27 | 26 | assert!(state.has_matched);
|
28 | 27 | }
|
29 | 28 |
|
30 | 29 | #[test]
|
31 | 30 | fn test_assert() {
|
32 | 31 | // pattern positive_lookbehind = re.compile(r'(?<=abc)def')
|
33 | 32 | // START GENERATED by generate_tests.py
|
34 |
| - #[rustfmt::skip] let positive_lookbehind = Pattern { code: &[15, 4, 0, 3, 3, 4, 9, 3, 17, 97, 17, 98, 17, 99, 1, 17, 100, 17, 101, 17, 102, 1], flags: SreFlag::from_bits_truncate(32) }; |
| 33 | + #[rustfmt::skip] let positive_lookbehind = Pattern { code: &[15, 4, 0, 3, 3, 4, 9, 3, 17, 97, 17, 98, 17, 99, 1, 17, 100, 17, 101, 17, 102, 1] }; |
35 | 34 | // END GENERATED
|
36 |
| - let mut state = positive_lookbehind.state("abcdef", 0..usize::MAX); |
37 |
| - state.search(); |
| 35 | + let (mut req, mut state) = positive_lookbehind.state("abcdef"); |
| 36 | + state.search(&mut req); |
38 | 37 | assert!(state.has_matched);
|
39 | 38 | }
|
40 | 39 |
|
41 | 40 | #[test]
|
42 | 41 | fn test_string_boundaries() {
|
43 | 42 | // pattern big_b = re.compile(r'\B')
|
44 | 43 | // START GENERATED by generate_tests.py
|
45 |
| - #[rustfmt::skip] let big_b = Pattern { code: &[15, 4, 0, 0, 0, 6, 11, 1], flags: SreFlag::from_bits_truncate(32) }; |
| 44 | + #[rustfmt::skip] let big_b = Pattern { code: &[15, 4, 0, 0, 0, 6, 11, 1] }; |
46 | 45 | // END GENERATED
|
47 |
| - let mut state = big_b.state("", 0..usize::MAX); |
48 |
| - state.search(); |
| 46 | + let (mut req, mut state) = big_b.state(""); |
| 47 | + state.search(&mut req); |
49 | 48 | assert!(!state.has_matched);
|
50 | 49 | }
|
51 | 50 |
|
52 | 51 | #[test]
|
53 | 52 | fn test_zerowidth() {
|
54 | 53 | // pattern p = re.compile(r'\b|:+')
|
55 | 54 | // START GENERATED by generate_tests.py
|
56 |
| - #[rustfmt::skip] let p = Pattern { code: &[15, 4, 0, 0, 4294967295, 7, 5, 6, 10, 16, 12, 10, 25, 6, 1, 4294967295, 17, 58, 1, 16, 2, 0, 1], flags: SreFlag::from_bits_truncate(32) }; |
| 55 | + #[rustfmt::skip] let p = Pattern { code: &[15, 4, 0, 0, 4294967295, 7, 5, 6, 10, 16, 12, 10, 25, 6, 1, 4294967295, 17, 58, 1, 16, 2, 0, 1] }; |
57 | 56 | // END GENERATED
|
58 |
| - let mut state = p.state("a:", 0..usize::MAX); |
59 |
| - state.must_advance = true; |
60 |
| - state.search(); |
| 57 | + let (mut req, mut state) = p.state("a:"); |
| 58 | + req.must_advance = true; |
| 59 | + state.search(&mut req); |
61 | 60 | assert!(state.string_position == 1);
|
62 | 61 | }
|
63 | 62 |
|
64 | 63 | #[test]
|
65 | 64 | fn test_repeat_context_panic() {
|
66 | 65 | // pattern p = re.compile(r'(?:a*?(xx)??z)*')
|
67 | 66 | // START GENERATED by generate_tests.py
|
68 |
| - #[rustfmt::skip] let p = Pattern { code: &[15, 4, 0, 0, 4294967295, 24, 25, 0, 4294967295, 27, 6, 0, 4294967295, 17, 97, 1, 24, 11, 0, 1, 18, 0, 17, 120, 17, 120, 18, 1, 20, 17, 122, 19, 1], flags: SreFlag::from_bits_truncate(32) }; |
| 67 | + #[rustfmt::skip] let p = Pattern { code: &[15, 4, 0, 0, 4294967295, 24, 25, 0, 4294967295, 27, 6, 0, 4294967295, 17, 97, 1, 24, 11, 0, 1, 18, 0, 17, 120, 17, 120, 18, 1, 20, 17, 122, 19, 1] }; |
69 | 68 | // END GENERATED
|
70 |
| - let mut state = p.state("axxzaz", 0..usize::MAX); |
71 |
| - state.pymatch(); |
| 69 | + let (mut req, mut state) = p.state("axxzaz"); |
| 70 | + state.pymatch(&mut req); |
72 | 71 | assert!(state.marks == vec![Some(1), Some(3)]);
|
73 | 72 | }
|
74 | 73 |
|
75 | 74 | #[test]
|
76 | 75 | fn test_double_max_until() {
|
77 | 76 | // pattern p = re.compile(r'((1)?)*')
|
78 | 77 | // START GENERATED by generate_tests.py
|
79 |
| - #[rustfmt::skip] let p = Pattern { code: &[15, 4, 0, 0, 4294967295, 24, 18, 0, 4294967295, 18, 0, 24, 9, 0, 1, 18, 2, 17, 49, 18, 3, 19, 18, 1, 19, 1], flags: SreFlag::from_bits_truncate(32) }; |
| 78 | + #[rustfmt::skip] let p = Pattern { code: &[15, 4, 0, 0, 4294967295, 24, 18, 0, 4294967295, 18, 0, 24, 9, 0, 1, 18, 2, 17, 49, 18, 3, 19, 18, 1, 19, 1] }; |
80 | 79 | // END GENERATED
|
81 |
| - let mut state = p.state("1111", 0..usize::MAX); |
82 |
| - state.pymatch(); |
| 80 | + let (mut req, mut state) = p.state("1111"); |
| 81 | + state.pymatch(&mut req); |
83 | 82 | assert!(state.string_position == 4);
|
84 | 83 | }
|
0 commit comments