Skip to content

Commit 9066219

Browse files
committedJan 6, 2018
Regression tests for rust-lang#47175
1 parent ff55725 commit 9066219

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed
 

‎src/libcore/tests/pattern.rs

+38
Original file line numberDiff line numberDiff line change
@@ -262,3 +262,41 @@ fn test_reverse_search_shared_bytes() {
262262
[InRange(37, 40), Rejects(34, 37), InRange(10, 13), Rejects(8, 10), Done]
263263
);
264264
}
265+
266+
#[test]
267+
fn double_ended_regression_test() {
268+
// https://github.com/rust-lang/rust/issues/47175
269+
// Ensures that double ended searching comes to a convergence
270+
search_asserts!("abcdeabcdeabcde", 'a', "alternating double ended search",
271+
[next_match, next_match_back, next_match, next_match_back],
272+
[InRange(0, 1), InRange(10, 11), InRange(5, 6), Done]
273+
);
274+
search_asserts!("abcdeabcdeabcde", 'a', "triple double ended search for a",
275+
[next_match, next_match_back, next_match_back, next_match_back],
276+
[InRange(0, 1), InRange(10, 11), InRange(5, 6), Done]
277+
);
278+
search_asserts!("abcdeabcdeabcde", 'd', "triple double ended search for d",
279+
[next_match, next_match_back, next_match_back, next_match_back],
280+
[InRange(3, 4), InRange(13, 14), InRange(8, 9), Done]
281+
);
282+
search_asserts!(STRESS, 'Á', "Double ended search for two-byte Latin character",
283+
[next_match, next_match_back, next_match, next_match_back],
284+
[InRange(0, 2), InRange(32, 34), InRange(8, 10), Done]
285+
);
286+
search_asserts!(STRESS, '각', "Reverse double ended search for three-byte Hangul character",
287+
[next_match_back, next_back, next_match, next, next_match_back, next_match],
288+
[InRange(34, 37), Rejects(32, 34), InRange(19, 22), Rejects(22, 25), InRange(28, 31), Done]
289+
);
290+
search_asserts!(STRESS, 'ก', "Double ended search for three-byte Thai character",
291+
[next_match, next_back, next, next_match_back, next_match],
292+
[InRange(22, 25), Rejects(47, 48), Rejects(25, 28), InRange(40, 43), Done]
293+
);
294+
search_asserts!(STRESS, '😁', "Double ended search for four-byte emoji",
295+
[next_match_back, next, next_match, next_back, next_match],
296+
[InRange(43, 47), Rejects(0, 2), InRange(15, 19), Rejects(40, 43), Done]
297+
);
298+
search_asserts!(STRESS, 'ꁁ', "Double ended search for three-byte Yi character with repeated bytes",
299+
[next_match, next, next_match_back, next_back, next_match],
300+
[InRange(10, 13), Rejects(13, 14), InRange(37, 40), Rejects(34, 37), Done]
301+
);
302+
}

0 commit comments

Comments
 (0)