Skip to content

Commit cd04731

Browse files
committed
Add test for the fix
1 parent 101a146 commit cd04731

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

library/alloc/tests/str.rs

+41
Original file line numberDiff line numberDiff line change
@@ -1873,6 +1873,47 @@ mod pattern {
18731873
"* \t",
18741874
[Reject(0, 1), Reject(1, 2), Reject(2, 3),]
18751875
);
1876+
1877+
// See #85462
1878+
#[test]
1879+
fn str_searcher_empty_needle_after_done() {
1880+
// Empty needle and haystack
1881+
{
1882+
let mut searcher = "".into_searcher("");
1883+
1884+
assert_eq!(searcher.next(), SearchStep::Match(0, 0));
1885+
assert_eq!(searcher.next(), SearchStep::Done);
1886+
assert_eq!(searcher.next(), SearchStep::Done);
1887+
assert_eq!(searcher.next(), SearchStep::Done);
1888+
1889+
let mut searcher = "".into_searcher("");
1890+
1891+
assert_eq!(searcher.next_back(), SearchStep::Match(0, 0));
1892+
assert_eq!(searcher.next_back(), SearchStep::Done);
1893+
assert_eq!(searcher.next_back(), SearchStep::Done);
1894+
assert_eq!(searcher.next_back(), SearchStep::Done);
1895+
}
1896+
// Empty needle and non-empty haystack
1897+
{
1898+
let mut searcher = "".into_searcher("a");
1899+
1900+
assert_eq!(searcher.next(), SearchStep::Match(0, 0));
1901+
assert_eq!(searcher.next(), SearchStep::Reject(0, 1));
1902+
assert_eq!(searcher.next(), SearchStep::Match(1, 1));
1903+
assert_eq!(searcher.next(), SearchStep::Done);
1904+
assert_eq!(searcher.next(), SearchStep::Done);
1905+
assert_eq!(searcher.next(), SearchStep::Done);
1906+
1907+
let mut searcher = "".into_searcher("a");
1908+
1909+
assert_eq!(searcher.next_back(), SearchStep::Match(1, 1));
1910+
assert_eq!(searcher.next_back(), SearchStep::Reject(0, 1));
1911+
assert_eq!(searcher.next_back(), SearchStep::Match(0, 0));
1912+
assert_eq!(searcher.next_back(), SearchStep::Done);
1913+
assert_eq!(searcher.next_back(), SearchStep::Done);
1914+
assert_eq!(searcher.next_back(), SearchStep::Done);
1915+
}
1916+
}
18761917
}
18771918

18781919
macro_rules! generate_iterator_test {

0 commit comments

Comments
 (0)