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