1 use quickcheck::quickcheck;
2 
3 use crate::{
4     memchr,
5     memchr::{fallback, naive},
6     memchr2, memchr3, memrchr, memrchr2, memrchr3,
7     tests::memchr::testdata::memchr_tests,
8 };
9 
10 #[test]
11 fn memchr1_find() {
12     for test in memchr_tests() {
13         test.one(false, memchr);
14     }
15 }
16 
17 #[test]
18 fn memchr1_fallback_find() {
19     for test in memchr_tests() {
20         test.one(false, fallback::memchr);
21     }
22 }
23 
24 #[test]
25 fn memchr2_find() {
26     for test in memchr_tests() {
27         test.two(false, memchr2);
28     }
29 }
30 
31 #[test]
32 fn memchr2_fallback_find() {
33     for test in memchr_tests() {
34         test.two(false, fallback::memchr2);
35     }
36 }
37 
38 #[test]
39 fn memchr3_find() {
40     for test in memchr_tests() {
41         test.three(false, memchr3);
42     }
43 }
44 
45 #[test]
46 fn memchr3_fallback_find() {
47     for test in memchr_tests() {
48         test.three(false, fallback::memchr3);
49     }
50 }
51 
52 #[test]
53 fn memrchr1_find() {
54     for test in memchr_tests() {
55         test.one(true, memrchr);
56     }
57 }
58 
59 #[test]
60 fn memrchr1_fallback_find() {
61     for test in memchr_tests() {
62         test.one(true, fallback::memrchr);
63     }
64 }
65 
66 #[test]
67 fn memrchr2_find() {
68     for test in memchr_tests() {
69         test.two(true, memrchr2);
70     }
71 }
72 
73 #[test]
74 fn memrchr2_fallback_find() {
75     for test in memchr_tests() {
76         test.two(true, fallback::memrchr2);
77     }
78 }
79 
80 #[test]
81 fn memrchr3_find() {
82     for test in memchr_tests() {
83         test.three(true, memrchr3);
84     }
85 }
86 
87 #[test]
88 fn memrchr3_fallback_find() {
89     for test in memchr_tests() {
90         test.three(true, fallback::memrchr3);
91     }
92 }
93 
94 quickcheck! {
95     fn qc_memchr1_matches_naive(n1: u8, corpus: Vec<u8>) -> bool {
96         memchr(n1, &corpus) == naive::memchr(n1, &corpus)
97     }
98 }
99 
100 quickcheck! {
101     fn qc_memchr2_matches_naive(n1: u8, n2: u8, corpus: Vec<u8>) -> bool {
102         memchr2(n1, n2, &corpus) == naive::memchr2(n1, n2, &corpus)
103     }
104 }
105 
106 quickcheck! {
107     fn qc_memchr3_matches_naive(
108         n1: u8, n2: u8, n3: u8,
109         corpus: Vec<u8>
110     ) -> bool {
111         memchr3(n1, n2, n3, &corpus) == naive::memchr3(n1, n2, n3, &corpus)
112     }
113 }
114 
115 quickcheck! {
116     fn qc_memrchr1_matches_naive(n1: u8, corpus: Vec<u8>) -> bool {
117         memrchr(n1, &corpus) == naive::memrchr(n1, &corpus)
118     }
119 }
120 
121 quickcheck! {
122     fn qc_memrchr2_matches_naive(n1: u8, n2: u8, corpus: Vec<u8>) -> bool {
123         memrchr2(n1, n2, &corpus) == naive::memrchr2(n1, n2, &corpus)
124     }
125 }
126 
127 quickcheck! {
128     fn qc_memrchr3_matches_naive(
129         n1: u8, n2: u8, n3: u8,
130         corpus: Vec<u8>
131     ) -> bool {
132         memrchr3(n1, n2, n3, &corpus) == naive::memrchr3(n1, n2, n3, &corpus)
133     }
134 }
135