1 #![feature(slice_internals)]
3 use core::slice::memchr::{memchr, memrchr};
5 // test fallback implementations on all targets
7 assert_eq!(Some(0), memchr(b'a', b"a"));
11 assert_eq!(Some(0), memchr(b'a', b"aaaa"));
15 assert_eq!(Some(4), memchr(b'z', b"aaaaz"));
19 assert_eq!(Some(4), memchr(b'\x00', b"aaaa\x00"));
22 fn matches_past_nul() {
23 assert_eq!(Some(5), memchr(b'z', b"aaaa\x00z"));
27 assert_eq!(None, memchr(b'a', b""));
31 assert_eq!(None, memchr(b'a', b"xyz"));
34 fn matches_one_reversed() {
35 assert_eq!(Some(0), memrchr(b'a', b"a"));
38 fn matches_begin_reversed() {
39 assert_eq!(Some(3), memrchr(b'a', b"aaaa"));
42 fn matches_end_reversed() {
43 assert_eq!(Some(0), memrchr(b'z', b"zaaaa"));
46 fn matches_nul_reversed() {
47 assert_eq!(Some(4), memrchr(b'\x00', b"aaaa\x00"));
50 fn matches_past_nul_reversed() {
51 assert_eq!(Some(0), memrchr(b'z', b"z\x00aaaa"));
54 fn no_match_empty_reversed() {
55 assert_eq!(None, memrchr(b'a', b""));
58 fn no_match_reversed() {
59 assert_eq!(None, memrchr(b'a', b"xyz"));
62 fn each_alignment_reversed() {
63 let mut data = [1u8; 64];
68 assert_eq!(Some(pos - start), memrchr(needle, &data[start..]));
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();
88 each_alignment_reversed();