xref: /drstd/src/std/sys_common/memchr/tests.rs (revision 86982c5e9b2eaa583327251616ee822c36288824)
1 // Original implementation taken from rust-memchr.
2 // Copyright 2015 Andrew Gallant, bluss and Nicolas Koch
3 
4 // test the implementations for the current platform
5 use super::{memchr, memrchr};
6 
7 #[test]
8 fn matches_one() {
9     assert_eq!(Some(0), memchr(b'a', b"a"));
10 }
11 
12 #[test]
13 fn matches_begin() {
14     assert_eq!(Some(0), memchr(b'a', b"aaaa"));
15 }
16 
17 #[test]
18 fn matches_end() {
19     assert_eq!(Some(4), memchr(b'z', b"aaaaz"));
20 }
21 
22 #[test]
23 fn matches_nul() {
24     assert_eq!(Some(4), memchr(b'\x00', b"aaaa\x00"));
25 }
26 
27 #[test]
28 fn matches_past_nul() {
29     assert_eq!(Some(5), memchr(b'z', b"aaaa\x00z"));
30 }
31 
32 #[test]
33 fn no_match_empty() {
34     assert_eq!(None, memchr(b'a', b""));
35 }
36 
37 #[test]
38 fn no_match() {
39     assert_eq!(None, memchr(b'a', b"xyz"));
40 }
41 
42 #[test]
43 fn matches_one_reversed() {
44     assert_eq!(Some(0), memrchr(b'a', b"a"));
45 }
46 
47 #[test]
48 fn matches_begin_reversed() {
49     assert_eq!(Some(3), memrchr(b'a', b"aaaa"));
50 }
51 
52 #[test]
53 fn matches_end_reversed() {
54     assert_eq!(Some(0), memrchr(b'z', b"zaaaa"));
55 }
56 
57 #[test]
58 fn matches_nul_reversed() {
59     assert_eq!(Some(4), memrchr(b'\x00', b"aaaa\x00"));
60 }
61 
62 #[test]
63 fn matches_past_nul_reversed() {
64     assert_eq!(Some(0), memrchr(b'z', b"z\x00aaaa"));
65 }
66 
67 #[test]
68 fn no_match_empty_reversed() {
69     assert_eq!(None, memrchr(b'a', b""));
70 }
71 
72 #[test]
73 fn no_match_reversed() {
74     assert_eq!(None, memrchr(b'a', b"xyz"));
75 }
76 
77 #[test]
78 fn each_alignment() {
79     let mut data = [1u8; 64];
80     let needle = 2;
81     let pos = 40;
82     data[pos] = needle;
83     for start in 0..16 {
84         assert_eq!(Some(pos - start), memchr(needle, &data[start..]));
85     }
86 }
87