Skip to content
This repository was archived by the owner on Mar 22, 2024. It is now read-only.

Commit c15387e

Browse files
committed
refactor tests
1 parent c31462d commit c15387e

File tree

3 files changed

+26
-27
lines changed

3 files changed

+26
-27
lines changed

generate_tests.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def compile(cls, pattern, flags=0):
3333
def replace_compiled(m):
3434
line, indent, varname, pattern = m.groups()
3535
pattern = eval(pattern, {"re": CompiledPattern})
36-
pattern = f"Pattern {{ code: &{json.dumps(pattern.code)}, flags: SreFlag::from_bits_truncate({int(pattern.flags)}) }}"
36+
pattern = f"Pattern {{ code: &{json.dumps(pattern.code)} }}"
3737
return f'''{line}
3838
{indent}// START GENERATED by generate_tests.py
3939
{indent}#[rustfmt::skip] let {varname} = {pattern};

src/engine.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ pub struct State<'a, S: StrDrive> {
8181
pub string_position: usize,
8282
next_context: Option<MatchContext<'a, S>>,
8383
popped_has_matched: bool,
84-
has_matched: bool,
84+
pub has_matched: bool,
8585
}
8686

8787
impl<'a, S: StrDrive> State<'a, S> {
@@ -696,7 +696,7 @@ fn op_repeat<'a, S: StrDrive>(
696696

697697
state.string_position = ctx.string_position;
698698

699-
let repeat_ctx_id = state.repeat_stack.len();
699+
let repeat_ctx_id = state.repeat_stack.len() - 1;
700700

701701
// let next_ctx = next_ctx!(from 1, state, ctx, |state, ctx| {
702702
let next_ctx = ctx.next_from(1, req, state, |req, state, ctx| {

tests/tests.rs

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,84 +1,83 @@
1-
use sre_engine::constants::SreFlag;
21
use sre_engine::engine;
32

43
struct Pattern {
54
code: &'static [u32],
6-
flags: SreFlag,
75
}
86

97
impl Pattern {
108
fn state<'a, S: engine::StrDrive>(
119
&self,
1210
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)
1615
}
1716
}
1817

1918
#[test]
2019
fn test_2427() {
2120
// pattern lookbehind = re.compile(r'(?<!\.)x\b')
2221
// 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] };
2423
// 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);
2726
assert!(state.has_matched);
2827
}
2928

3029
#[test]
3130
fn test_assert() {
3231
// pattern positive_lookbehind = re.compile(r'(?<=abc)def')
3332
// 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] };
3534
// 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);
3837
assert!(state.has_matched);
3938
}
4039

4140
#[test]
4241
fn test_string_boundaries() {
4342
// pattern big_b = re.compile(r'\B')
4443
// 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] };
4645
// 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);
4948
assert!(!state.has_matched);
5049
}
5150

5251
#[test]
5352
fn test_zerowidth() {
5453
// pattern p = re.compile(r'\b|:+')
5554
// 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] };
5756
// 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);
6160
assert!(state.string_position == 1);
6261
}
6362

6463
#[test]
6564
fn test_repeat_context_panic() {
6665
// pattern p = re.compile(r'(?:a*?(xx)??z)*')
6766
// 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] };
6968
// 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);
7271
assert!(state.marks == vec![Some(1), Some(3)]);
7372
}
7473

7574
#[test]
7675
fn test_double_max_until() {
7776
// pattern p = re.compile(r'((1)?)*')
7877
// 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] };
8079
// 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);
8382
assert!(state.string_position == 4);
8483
}

0 commit comments

Comments
 (0)