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