]> git.lizzy.rs Git - rust.git/blob - src/tools/miri/tests/pass/memchr.rs
Auto merge of #104915 - weihanglo:update-cargo, r=ehuss
[rust.git] / src / tools / miri / tests / pass / memchr.rs
1 #![feature(slice_internals)]
2
3 use core::slice::memchr::{memchr, memrchr};
4
5 // test fallback implementations on all targets
6 fn matches_one() {
7     assert_eq!(Some(0), memchr(b'a', b"a"));
8 }
9
10 fn matches_begin() {
11     assert_eq!(Some(0), memchr(b'a', b"aaaa"));
12 }
13
14 fn matches_end() {
15     assert_eq!(Some(4), memchr(b'z', b"aaaaz"));
16 }
17
18 fn matches_nul() {
19     assert_eq!(Some(4), memchr(b'\x00', b"aaaa\x00"));
20 }
21
22 fn matches_past_nul() {
23     assert_eq!(Some(5), memchr(b'z', b"aaaa\x00z"));
24 }
25
26 fn no_match_empty() {
27     assert_eq!(None, memchr(b'a', b""));
28 }
29
30 fn no_match() {
31     assert_eq!(None, memchr(b'a', b"xyz"));
32 }
33
34 fn matches_one_reversed() {
35     assert_eq!(Some(0), memrchr(b'a', b"a"));
36 }
37
38 fn matches_begin_reversed() {
39     assert_eq!(Some(3), memrchr(b'a', b"aaaa"));
40 }
41
42 fn matches_end_reversed() {
43     assert_eq!(Some(0), memrchr(b'z', b"zaaaa"));
44 }
45
46 fn matches_nul_reversed() {
47     assert_eq!(Some(4), memrchr(b'\x00', b"aaaa\x00"));
48 }
49
50 fn matches_past_nul_reversed() {
51     assert_eq!(Some(0), memrchr(b'z', b"z\x00aaaa"));
52 }
53
54 fn no_match_empty_reversed() {
55     assert_eq!(None, memrchr(b'a', b""));
56 }
57
58 fn no_match_reversed() {
59     assert_eq!(None, memrchr(b'a', b"xyz"));
60 }
61
62 fn each_alignment_reversed() {
63     let mut data = [1u8; 64];
64     let needle = 2;
65     let pos = 40;
66     data[pos] = needle;
67     for start in 0..16 {
68         assert_eq!(Some(pos - start), memrchr(needle, &data[start..]));
69     }
70 }
71
72 fn main() {
73     matches_one();
74     matches_begin();
75     matches_end();
76     matches_nul();
77     matches_past_nul();
78     no_match_empty();
79     no_match();
80
81     matches_one_reversed();
82     matches_begin_reversed();
83     matches_end_reversed();
84     matches_nul_reversed();
85     matches_past_nul_reversed();
86     no_match_empty_reversed();
87     no_match_reversed();
88     each_alignment_reversed();
89 }