Fix building error and warnings to add fletcher32 algo at nightly test.
[bertos.git] / bertos / algo / fletcher32_test.c
1 /**
2  * \file
3  * <!--
4  * This file is part of BeRTOS.
5  *
6  * Bertos is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19  *
20  * As a special exception, you may use this file as part of a free software
21  * library without restriction.  Specifically, if other files instantiate
22  * templates or use macros or inline functions from this file, or you compile
23  * this file and link it with other files to produce an executable, this
24  * file does not by itself cause the resulting executable to be covered by
25  * the GNU General Public License.  This exception does not however
26  * invalidate any other reasons why the executable file might be covered by
27  * the GNU General Public License.
28  *
29  * Copyright 2011 Develer S.r.l. (http://www.develer.com/)
30  *
31  * -->
32  *
33  * \brief Fletcher-32 checksum algorithm
34  *
35  * \author Francesco Sacchi <batt@develer.com>
36  */
37
38 #include "fletcher32.h"
39
40 #include <cfg/test.h>
41 #include <cfg/debug.h>
42 #include <stdlib.h>
43 #include <string.h>
44
45
46 /* Wikipedia reference implementation */
47 static uint32_t fletcher32( uint16_t *data, size_t len )
48 {
49         uint32_t sum1 = 0xffff, sum2 = 0xffff;
50
51         while (len) {
52                 unsigned tlen = len > 360 ? 360 : len;
53                                 //kprintf("tlen %d\n", tlen);
54                 len -= tlen;
55                 do {
56                         sum1 += *data++;
57                         sum2 += sum1;
58                                                 //kprintf("sum1 %d sum2 %d\n", sum1, sum2);
59                 } while (--tlen);
60                                 ///kprintf("b sum1 %d sum2 %d\n", sum1, sum2);
61                 sum1 = (sum1 & 0xffff) + (sum1 >> 16);
62                 sum2 = (sum2 & 0xffff) + (sum2 >> 16);
63                                 //kprintf("a sum1 %d sum2 %d\n", sum1, sum2);
64         }
65         /* Second reduction step to reduce sums to 16 bits */
66         sum1 = (sum1 & 0xffff) + (sum1 >> 16);
67         sum2 = (sum2 & 0xffff) + (sum2 >> 16);
68         return sum2 << 16 | sum1;
69 }
70
71 static uint32_t fletcher32_b(const void *buf, size_t len)
72 {
73         size_t roundl = (len + 1) & 0xFFFFFFFE;
74         uint16_t *b = (uint16_t *)malloc(roundl);
75         ASSERT(b);
76         memset(b, 0, roundl);
77         memcpy(b, buf, len);
78         uint32_t f2 = fletcher32(b, roundl / 2);
79         free(b);
80         return f2;
81 }
82
83
84
85 int fletcher32_testSetup(void)
86 {
87         kdbg_init();
88         return 0;
89 }
90
91 int fletcher32_testTearDown(void)
92 {
93         return 0;
94 }
95
96 static const char *tstbufs[] =
97 {
98         "",
99         "\x01",
100         "\xff",
101         "\x01\xff",
102         "\x01\x01",
103         "1", "2", "3", "4", "5", "6", "7", "8", "9",
104         "11", "22", "33", "44", "55", "66", "77", "88", "99",
105         "111", "222", "333", "444", "555", "666", "777", "888", "999",
106         "123",
107         "asd",
108         "0123456789",
109         "abcdefghijklmnopqrstuvwxyz",
110         "abcdefghijklmnopqrstuvwxyza",
111         "abcdefghijklmnopqrstuvwxyz0123456789"
112         "abcdefghijklmnopqrstuvwxyz0123456789"
113         "abcdefghijklmnopqrstuvwxyz0123456789"
114         "abcdefghijklmnopqrstuvwxyz0123456789"
115         "abcdefghijklmnopqrstuvwxyz0123456789"
116         "abcdefghijklmnopqrstuvwxyz0123456789"
117         "abcdefghijklmnopqrstuvwxyz0123456789"
118         "abcdefghijklmnopqrstuvwxyz0123456789"
119         "abcdefghijklmnopqrstuvwxyz0123456789"
120         "abcdefghijklmnopqrstuvwxyz0123456789"
121         "abcdefghijklmnopqrstuvwxyz0123456789"
122         "abcdefghijklmnopqrstuvwxyz0123456789"
123         "abcdefghijklmnopqrstuvwxyz0123456789"
124         "abcdefghijklmnopqrstuvwxyz0123456789"
125         "abcdefghijklmnopqrstuvwxyz0123456789"
126         "abcdefghijklmnopqrstuvwxyz0123456789"
127         "abcdefghijklmnopqrstuvwxyz0123456789"
128         "abcdefghijklmnopqrstuvwxyz0123456789"
129         "abcdefghijklmnopqrstuvwxyz0123456789"
130         "abcdefghijklmnopqrstuvwxyz0123456789"
131         "abcdefghijklmnopqrstuvwxyz0123456789"
132         "abcdefghijklmnopqrstuvwxyz0123456789"
133         "abcdefghijklmnopqrstuvwxyz0123456789"
134         "abcdefghijklmnopqrstuvwxyz0123456789"
135         "abcdefghijklmnopqrstuvwxyz0123456789"
136         "abcdefghijklmnopqrstuvwxyz0123456789"
137         "abcdefghijklmnopqrstuvwxyz0123456789"
138         "abcdefghijklmnopqrstuvwxyz0123456789"
139         "abcdefghijklmnopqrstuvwxyz0123456789"
140         "abcdefghijklmnopqrstuvwxyz0123456789"
141         "abcdefghijklmnopqrstuvwxyz0123456789"
142         "abcdefghijklmnopqrstuvwxyz0123456789"
143         "abcdefghijklmnopqrstuvwxyz0123456789"
144         "abcdefghijklmnopqrstuvwxyz0123456789"
145         "abcdefghijklmnopqrstuvwxyz0123456789"
146         "abcdefghijklmnopqrstuvwxyz0123456789"
147         "abcdefghijklmnopqrstuvwxyz0123456789"
148         "abcdefghijklmnopqrstuvwxyz0123456789"
149         "abcdefghijklmnopqrstuvwxyz0123456789"
150         "abcdefghijklmnopqrstuvwxyz0123456789"
151         "abcdefghijklmnopqrstuvwxyz0123456789"
152         "abcdefghijklmnopqrstuvwxyz0123456789"
153         "abcdefghijklmnopqrstuvwxyz0123456789"
154         "abcdefghijklmnopqrstuvwxyz0123456789"
155         "abcdefghijklmnopqrstuvwxyz0123456789"
156         "abcdefghijklmnopqrstuvwxyz0123456789"
157         "abcdefghijklmnopqrstuvwxyz0123456789"
158         "abcdefghijklmnopqrstuvwxyz0123456789"
159         "abcdefghijklmnopqrstuvwxyz0123456789"
160         "abcdefghijklmnopqrstuvwxyz0123456789"
161         "abcdefghijklmnopqrstuvwxyz0123456789"
162         "abcdefghijklmnopqrstuvwxyz0123456789"
163         "abcdefghijklmnopqrstuvwxyz0123456789"
164         "abcdefghijklmnopqrstuvwxyz0123456789"
165         "abcdefghijklmnopqrstuvwxyz0123456789"
166         "abcdefghijklmnopqrstuvwxyz0123456789"
167         "abcdefghijklmnopqrstuvwxyz0123456789"
168         "abcdefghijklmnopqrstuvwxyz0123456789"
169         "abcdefghijklmnopqrstuvwxyz0123456789"
170         "abcdefghijklmnopqrstuvwxyz0123456789"
171         "abcdefghijklmnopqrstuvwxyz0123456789"
172         "abcdefghijklmnopqrstuvwxyz0123456789"
173         "abcdefghijklmnopqrstuvwxyz0123456789"
174         "abcdefghijklmnopqrstuvwxyz0123456789"
175         "abcdefghijklmnopqrstuvwxyz0123456789"
176         "abcdefghijklmnopqrstuvwxyz0123456789"
177         "abcdefghijklmnopqrstuvwxyz0123456789"
178         "abcdefghijklmnopqrstuvwxyz0123456789"
179         "abcdefghijklmnopqrstuvwxyz0123456789"
180         "abcdefghijklmnopqrstuvwxyz0123456789"
181         "abcdefghijklmnopqrstuvwxyz0123456789"
182         "abcdefghijklmnopqrstuvwxyz0123456789"
183         "abcdefghijklmnopqrstuvwxyz0123456789"
184         "abcdefghijklmnopqrstuvwxyz0123456789"
185         "abcdefghijklmnopqrstuvwxyz0123456789"
186         "abcdefghijklmnopqrstuvwxyz0123456789"
187         "abcdefghijklmnopqrstuvwxyz0123456789"
188         "abcdefghijklmnopqrstuvwxyz0123456789"
189         "abcdefghijklmnopqrstuvwxyz0123456789"
190         "abcdefghijklmnopqrstuvwxyz0123456789"
191         "abcdefghijklmnopqrstuvwxyz0123456789"
192         "abcdefghijklmnopqrstuvwxyz0123456789"
193         "abcdefghijklmnopqrstuvwxyz0123456789"
194         "abcdefghijklmnopqrstuvwxyz0123456789"
195         "abcdefghijklmnopqrstuvwxyz0123456789"
196         "abcdefghijklmnopqrstuvwxyz0123456789"
197         "abcdefghijklmnopqrstuvwxyz0123456789"
198         "abcdefghijklmnopqrstuvwxyz0123456789"
199         "abcdefghijklmnopqrstuvwxyz0123456789"
200         "abcdefghijklmnopqrstuvwxyz0123456789"
201         "abcdefghijklmnopqrstuvwxyz0123456789"
202         "abcdefghijklmnopqrstuvwxyz0123456789"
203         "abcdefghijklmnopqrstuvwxyz0123456789"
204         "abcdefghijklmnopqrstuvwxyz0123456789"
205         "abcdefghijklmnopqrstuvwxyz0123456789"
206         "abcdefghijklmnopqrstuvwxyz0123456789"
207         "abcdefghijklmnopqrstuvwxyz0123456789"
208         "abcdefghijklmnopqrstuvwxyz0123456789"
209         "abcdefghijklmnopqrstuvwxyz0123456789"
210         "abcdefghijklmnopqrstuvwxyz0123456789"
211         "abcdefghijklmnopqrstuvwxyz0123456789"
212         "abcdefghijklmnopqrstuvwxyz0123456789"
213         "abcdefghijklmnopqrstuvwxyz0123456789"
214         "abcdefghijklmnopqrstuvwxyz0123456789"
215         "abcdefghijklmnopqrstuvwxyz0123456789"
216         "abcdefghijklmnopqrstuvwxyz0123456789"
217         "abcdefghijklmnopqrstuvwxyz0123456789"
218         "abcdefghijklmnopqrstuvwxyz0123456789"
219         "abcdefghijklmnopqrstuvwxyz0123456789"
220         "abcdefghijklmnopqrstuvwxyz0123456789"
221         "abcdefghijklmnopqrstuvwxyz0123456789"
222         "abcdefghijklmnopqrstuvwxyz0123456789"
223         "abcdefghijklmnopqrstuvwxyz0123456789"
224         "abcdefghijklmnopqrstuvwxyz0123456789"
225         "abcdefghijklmnopqrstuvwxyz0123456789"
226         "abcdefghijklmnopqrstuvwxyz0123456789"
227         "abcdefghijklmnopqrstuvwxyz0123456789"
228         "abcdefghijklmnopqrstuvwxyz0123456789"
229         "abcdefghijklmnopqrstuvwxyz0123456789"
230         "abcdefghijklmnopqrstuvwxyz0123456789"
231         "abcdefghijklmnopqrstuvwxyz0123456789"
232         "abcdefghijklmnopqrstuvwxyz0123456789"
233         "abcdefghijklmnopqrstuvwxyz0123456789"
234         "abcdefghijklmnopqrstuvwxyz0123456789"
235         "abcdefghijklmnopqrstuvwxyz0123456789"
236         "abcdefghijklmnopqrstuvwxyz0123456789"
237         "abcdefghijklmnopqrstuvwxyz0123456789"
238         "abcdefghijklmnopqrstuvwxyz0123456789"
239         "abcdefghijklmnopqrstuvwxyz0123456789"
240         "abcdefghijklmnopqrstuvwxyz0123456789"
241         "abcdefghijklmnopqrstuvwxyz0123456789"
242         "abcdefghijklmnopqrstuvwxyz0123456789"
243         "abcdefghijklmnopqrstuvwxyz0123456789"
244         "abcdefghijklmnopqrstuvwxyz0123456789"
245         "abcdefghijklmnopqrstuvwxyz0123456789"
246         "abcdefghijklmnopqrstuvwxyz0123456789"
247         "abcdefghijklmnopqrstuvwxyz0123456789"
248         "abcdefghijklmnopqrstuvwxyz0123456789"
249         "abcdefghijklmnopqrstuvwxyz0123456789"
250         "abcdefghijklmnopqrstuvwxyz0123456789"
251         "abcdefghijklmnopqrstuvwxyz0123456789"
252         "abcdefghijklmnopqrstuvwxyz0123456789"
253         "abcdefghijklmnopqrstuvwxyz0123456789"
254         "abcdefghijklmnopqrstuvwxyz0123456789"
255         "abcdefghijklmnopqrstuvwxyz0123456789"
256         "abcdefghijklmnopqrstuvwxyz0123456789"
257         "abcdefghijklmnopqrstuvwxyz0123456789"
258         "abcdefghijklmnopqrstuvwxyz0123456789"
259         "abcdefghijklmnopqrstuvwxyz0123456789"
260         "abcdefghijklmnopqrstuvwxyz0123456789"
261         "abcdefghijklmnopqrstuvwxyz0123456789"
262         "abcdefghijklmnopqrstuvwxyz0123456789"
263         "abcdefghijklmnopqrstuvwxyz0123456789"
264         "abcdefghijklmnopqrstuvwxyz0123456789"
265         "abcdefghijklmnopqrstuvwxyz0123456789"
266         "abcdefghijklmnopqrstuvwxyz0123456789"
267         "abcdefghijklmnopqrstuvwxyz0123456789"
268         "abcdefghijklmnopqrstuvwxyz0123456789"
269         "abcdefghijklmnopqrstuvwxyz0123456789"
270         "abcdefghijklmnopqrstuvwxyz0123456789"
271         "abcdefghijklmnopqrstuvwxyz0123456789"
272         "abcdefghijklmnopqrstuvwxyz0123456789"
273         "abcdefghijklmnopqrstuvwxyz0123456789"
274         "abcdefghijklmnopqrstuvwxyz0123456789"
275         "abcdefghijklmnopqrstuvwxyz0123456789"
276         "abcdefghijklmnopqrstuvwxyz0123456789"
277         "abcdefghijklmnopqrstuvwxyz0123456789"
278         "abcdefghijklmnopqrstuvwxyz0123456789"
279         "abcdefghijklmnopqrstuvwxyz0123456789"
280         "abcdefghijklmnopqrstuvwxyz0123456789"
281         "abcdefghijklmnopqrstuvwxyz0123456789"
282         "abcdefghijklmnopqrstuvwxyz0123456789"
283         "abcdefghijklmnopqrstuvwxyz0123456789"
284         "abcdefghijklmnopqrstuvwxyz0123456789"
285         "abcdefghijklmnopqrstuvwxyz0123456789"
286         "abcdefghijklmnopqrstuvwxyz0123456789"
287         "abcdefghijklmnopqrstuvwxyz0123456789"
288         "abcdefghijklmnopqrstuvwxyz0123456789"
289         "abcdefghijklmnopqrstuvwxyz0123456789"
290         "abcdefghijklmnopqrstuvwxyz0123456789"
291         "abcdefghijklmnopqrstuvwxyz0123456789"
292         "abcdefghijklmnopqrstuvwxyz0123456789"
293         "abcdefghijklmnopqrstuvwxyz0123456789"
294         "abcdefghijklmnopqrstuvwxyz0123456789"
295         "abcdefghijklmnopqrstuvwxyz0123456789"
296         "abcdefghijklmnopqrstuvwxyz0123456789"
297         "abcdefghijklmnopqrstuvwxyz0123456789"
298         "abcdefghijklmnopqrstuvwxyz0123456789"
299         "abcdefghijklmnopqrstuvwxyz0123456789"
300         "abcdefghijklmnopqrstuvwxyz0123456789"
301         "abcdefghijklmnopqrstuvwxyz0123456789"
302         "abcdefghijklmnopqrstuvwxyz0123456789"
303         "abcdefghijklmnopqrstuvwxyz0123456789"
304         "abcdefghijklmnopqrstuvwxyz0123456789"
305         "abcdefghijklmnopqrstuvwxyz0123456789"
306         "abcdefghijklmnopqrstuvwxyz0123456789"
307         "abcdefghijklmnopqrstuvwxyz0123456789"
308         "abcdefghijklmnopqrstuvwxyz0123456789"
309         "abcdefghijklmnopqrstuvwxyz0123456789"
310         "abcdefghijklmnopqrstuvwxyz0123456789"
311         "abcdefghijklmnopqrstuvwxyz0123456789"
312         "abcdefghijklmnopqrstuvwxyz0123456789"
313         "abcdefghijklmnopqrstuvwxyz0123456789"
314         "abcdefghijklmnopqrstuvwxyz0123456789"
315         "abcdefghijklmnopqrstuvwxyz0123456789"
316         "abcdefghijklmnopqrstuvwxyz0123456789"
317         "abcdefghijklmnopqrstuvwxyz0123456789"
318         "abcdefghijklmnopqrstuvwxyz0123456789"
319         "abcdefghijklmnopqrstuvwxyz0123456789"
320         "abcdefghijklmnopqrstuvwxyz0123456789"
321         "abcdefghijklmnopqrstuvwxyz0123456789"
322         "abcdefghijklmnopqrstuvwxyz0123456789"
323         "abcdefghijklmnopqrstuvwxyz0123456789"
324         "abcdefghijklmnopqrstuvwxyz0123456789"
325         "abcdefghijklmnopqrstuvwxyz0123456789"
326         "abcdefghijklmnopqrstuvwxyz0123456789"
327         "abcdefghijklmnopqrstuvwxyz0123456789"
328         "abcdefghijklmnopqrstuvwxyz0123456789"
329         "abcdefghijklmnopqrstuvwxyz0123456789"
330         "abcdefghijklmnopqrstuvwxyz0123456789"
331         "abcdefghijklmnopqrstuvwxyz0123456789"
332         "abcdefghijklmnopqrstuvwxyz0123456789"
333         "abcdefghijklmnopqrstuvwxyz0123456789"
334         "abcdefghijklmnopqrstuvwxyz0123456789"
335         "abcdefghijklmnopqrstuvwxyz0123456789"
336         "abcdefghijklmnopqrstuvwxyz0123456789"
337         "abcdefghijklmnopqrstuvwxyz0123456789"
338         "abcdefghijklmnopqrstuvwxyz0123456789"
339         "abcdefghijklmnopqrstuvwxyz0123456789"
340         "abcdefghijklmnopqrstuvwxyz0123456789"
341         "abcdefghijklmnopqrstuvwxyz0123456789"
342         "abcdefghijklmnopqrstuvwxyz0123456789"
343         "abcdefghijklmnopqrstuvwxyz0123456789"
344         "abcdefghijklmnopqrstuvwxyz0123456789"
345         "abcdefghijklmnopqrstuvwxyz0123456789"
346         "abcdefghijklmnopqrstuvwxyz0123456789"
347         "abcdefghijklmnopqrstuvwxyz0123456789"
348         "abcdefghijklmnopqrstuvwxyz0123456789"
349         "abcdefghijklmnopqrstuvwxyz0123456789"
350         "abcdefghijklmnopqrstuvwxyz0123456789"
351         "abcdefghijklmnopqrstuvwxyz0123456789"
352         "abcdefghijklmnopqrstuvwxyz0123456789"
353         "abcdefghijklmnopqrstuvwxyz0123456789"
354         "abcdefghijklmnopqrstuvwxyz0123456789"
355         "abcdefghijklmnopqrstuvwxyz0123456789"
356         "abcdefghijklmnopqrstuvwxyz0123456789"
357         "abcdefghijklmnopqrstuvwxyz0123456789"
358         "abcdefghijklmnopqrstuvwxyz0123456789"
359         "abcdefghijklmnopqrstuvwxyz0123456789"
360         "abcdefghijklmnopqrstuvwxyz0123456789"
361         "abcdefghijklmnopqrstuvwxyz0123456789"
362         "abcdefghijklmnopqrstuvwxyz0123456789"
363         "abcdefghijklmnopqrstuvwxyz0123456789"
364         "abcdefghijklmnopqrstuvwxyz0123456789"
365         "abcdefghijklmnopqrstuvwxyz0123456789"
366         "abcdefghijklmnopqrstuvwxyz0123456789"
367         "abcdefghijklmnopqrstuvwxyz0123456789"
368         "abcdefghijklmnopqrstuvwxyz0123456789"
369         "abcdefghijklmnopqrstuvwxyz0123456789"
370         "abcdefghijklmnopqrstuvwxyz0123456789"
371         "abcdefghijklmnopqrstuvwxyz0123456789"
372         "abcdefghijklmnopqrstuvwxyz0123456789"
373         "abcdefghijklmnopqrstuvwxyz0123456789"
374         "abcdefghijklmnopqrstuvwxyz0123456789"
375         "abcdefghijklmnopqrstuvwxyz0123456789"
376         "abcdefghijklmnopqrstuvwxyz0123456789"
377         "abcdefghijklmnopqrstuvwxyz0123456789"
378         "abcdefghijklmnopqrstuvwxyz0123456789"
379         "abcdefghijklmnopqrstuvwxyz0123456789"
380         "abcdefghijklmnopqrstuvwxyz0123456789"
381         "abcdefghijklmnopqrstuvwxyz0123456789"
382         "abcdefghijklmnopqrstuvwxyz0123456789"
383         "abcdefghijklmnopqrstuvwxyz0123456789"
384         "abcdefghijklmnopqrstuvwxyz0123456789"
385         "abcdefghijklmnopqrstuvwxyz0123456789"
386         "abcdefghijklmnopqrstuvwxyz0123456789"
387         "abcdefghijklmnopqrstuvwxyz0123456789"
388         "abcdefghijklmnopqrstuvwxyz0123456789"
389         "abcdefghijklmnopqrstuvwxyz0123456789"
390         "abcdefghijklmnopqrstuvwxyz0123456789"
391         "abcdefghijklmnopqrstuvwxyz0123456789"
392         "abcdefghijklmnopqrstuvwxyz0123456789"
393         "abcdefghijklmnopqrstuvwxyz0123456789"
394         "abcdefghijklmnopqrstuvwxyz0123456789"
395         "abcdefghijklmnopqrstuvwxyz0123456789"
396         "abcdefghijklmnopqrstuvwxyz0123456789"
397         "abcdefghijklmnopqrstuvwxyz0123456789"
398         "abcdefghijklmnopqrstuvwxyz0123456789"
399         "abcdefghijklmnopqrstuvwxyz0123456789"
400         "abcdefghijklmnopqrstuvwxyz0123456789"
401         "abcdefghijklmnopqrstuvwxyz0123456789"
402         "abcdefghijklmnopqrstuvwxyz0123456789"
403         "abcdefghijklmnopqrstuvwxyz0123456789"
404         "abcdefghijklmnopqrstuvwxyz0123456789"
405         "abcdefghijklmnopqrstuvwxyz0123456789"
406         "abcdefghijklmnopqrstuvwxyz0123456789"
407         "abcdefghijklmnopqrstuvwxyz0123456789"
408         "abcdefghijklmnopqrstuvwxyz0123456789"
409         "abcdefghijklmnopqrstuvwxyz0123456789"
410         "abcdefghijklmnopqrstuvwxyz0123456789"
411         "abcdefghijklmnopqrstuvwxyz0123456789"
412         "abcdefghijklmnopqrstuvwxyz0123456789"
413         "abcdefghijklmnopqrstuvwxyz0123456789"
414         "abcdefghijklmnopqrstuvwxyz0123456789"
415         "abcdefghijklmnopqrstuvwxyz0123456789"
416         "abcdefghijklmnopqrstuvwxyz0123456789"
417         "abcdefghijklmnopqrstuvwxyz0123456789"
418         "abcdefghijklmnopqrstuvwxyz0123456789"
419         "abcdefghijklmnopqrstuvwxyz0123456789"
420         "abcdefghijklmnopqrstuvwxyz0123456789"
421         "abcdefghijklmnopqrstuvwxyz0123456789"
422         "abcdefghijklmnopqrstuvwxyz0123456789"
423         "abcdefghijklmnopqrstuvwxyz0123456789"
424         "abcdefghijklmnopqrstuvwxyz0123456789"
425         "abcdefghijklmnopqrstuvwxyz0123456789"
426         "abcdefghijklmnopqrstuvwxyz0123456789"
427         "abcdefghijklmnopqrstuvwxyz0123456789"
428         "abcdefghijklmnopqrstuvwxyz0123456789"
429         "abcdefghijklmnopqrstuvwxyz0123456789"
430         "abcdefghijklmnopqrstuvwxyz0123456789"
431         "abcdefghijklmnopqrstuvwxyz0123456789"
432         "abcdefghijklmnopqrstuvwxyz0123456789"
433         "abcdefghijklmnopqrstuvwxyz0123456789"
434         "abcdefghijklmnopqrstuvwxyz0123456789"
435         "abcdefghijklmnopqrstuvwxyz0123456789"
436         "abcdefghijklmnopqrstuvwxyz0123456789"
437         "abcdefghijklmnopqrstuvwxyz0123456789"
438         "abcdefghijklmnopqrstuvwxyz0123456789"
439         "abcdefghijklmnopqrstuvwxyz0123456789"
440         "abcdefghijklmnopqrstuvwxyz0123456789"
441         "abcdefghijklmnopqrstuvwxyz0123456789"
442         "abcdefghijklmnopqrstuvwxyz0123456789"
443         "abcdefghijklmnopqrstuvwxyz0123456789"
444         "abcdefghijklmnopqrstuvwxyz0123456789"
445         "abcdefghijklmnopqrstuvwxyz0123456789"
446         "abcdefghijklmnopqrstuvwxyz0123456789"
447         "abcdefghijklmnopqrstuvwxyz0123456789"
448         "abcdefghijklmnopqrstuvwxyz0123456789"
449         "abcdefghijklmnopqrstuvwxyz0123456789"
450         "abcdefghijklmnopqrstuvwxyz0123456789"
451         "abcdefghijklmnopqrstuvwxyz0123456789"
452         "abcdefghijklmnopqrstuvwxyz0123456789"
453         "abcdefghijklmnopqrstuvwxyz0123456789"
454         "abcdefghijklmnopqrstuvwxyz0123456789"
455         "abcdefghijklmnopqrstuvwxyz0123456789"
456         "abcdefghijklmnopqrstuvwxyz0123456789"
457         "abcdefghijklmnopqrstuvwxyz0123456789"
458         "abcdefghijklmnopqrstuvwxyz0123456789"
459         "abcdefghijklmnopqrstuvwxyz0123456789"
460         "abcdefghijklmnopqrstuvwxyz0123456789"
461         "abcdefghijklmnopqrstuvwxyz0123456789"
462         "abcdefghijklmnopqrstuvwxyz0123456789"
463         "abcdefghijklmnopqrstuvwxyz0123456789"
464         "abcdefghijklmnopqrstuvwxyz0123456789"
465         "abcdefghijklmnopqrstuvwxyz0123456789"
466         "abcdefghijklmnopqrstuvwxyz0123456789"
467         "abcdefghijklmnopqrstuvwxyz0123456789"
468         "abcdefghijklmnopqrstuvwxyz0123456789"
469         "abcdefghijklmnopqrstuvwxyz0123456789"
470         "abcdefghijklmnopqrstuvwxyz0123456789"
471         "abcdefghijklmnopqrstuvwxyz0123456789"
472         "abcdefghijklmnopqrstuvwxyz0123456789"
473         "abcdefghijklmnopqrstuvwxyz0123456789"
474         "abcdefghijklmnopqrstuvwxyz0123456789"
475         "abcdefghijklmnopqrstuvwxyz0123456789"
476         "abcdefghijklmnopqrstuvwxyz0123456789"
477         "abcdefghijklmnopqrstuvwxyz0123456789"
478         "abcdefghijklmnopqrstuvwxyz0123456789"
479         "abcdefghijklmnopqrstuvwxyz0123456789"
480         "abcdefghijklmnopqrstuvwxyz0123456789"
481         "abcdefghijklmnopqrstuvwxyz0123456789"
482         "abcdefghijklmnopqrstuvwxyz0123456789"
483         "abcdefghijklmnopqrstuvwxyz0123456789"
484         "abcdefghijklmnopqrstuvwxyz0123456789"
485         "abcdefghijklmnopqrstuvwxyz0123456789"
486         "abcdefghijklmnopqrstuvwxyz0123456789"
487         "abcdefghijklmnopqrstuvwxyz0123456789"
488         "abcdefghijklmnopqrstuvwxyz0123456789"
489         "abcdefghijklmnopqrstuvwxyz0123456789"
490         "abcdefghijklmnopqrstuvwxyz0123456789"
491         "abcdefghijklmnopqrstuvwxyz0123456789"
492         "abcdefghijklmnopqrstuvwxyz0123456789"
493         "abcdefghijklmnopqrstuvwxyz0123456789"
494         "abcdefghijklmnopqrstuvwxyz0123456789"
495         "abcdefghijklmnopqrstuvwxyz0123456789"
496         "abcdefghijklmnopqrstuvwxyz0123456789"
497         "abcdefghijklmnopqrstuvwxyz0123456789"
498         "abcdefghijklmnopqrstuvwxyz0123456789"
499         "abcdefghijklmnopqrstuvwxyz0123456789"
500         "abcdefghijklmnopqrstuvwxyz0123456789"
501         "abcdefghijklmnopqrstuvwxyz0123456789"
502 };
503
504
505 int fletcher32_testRun(void)
506 {
507         Fletcher32 f;
508         Fletcher32 ft;
509         size_t tot = 0;
510         fletcher32_init(&ft);
511         for (unsigned t = 0; t < countof(tstbufs); t++)
512         {
513                 fletcher32_init(&f);
514                 fletcher32_update(&f, tstbufs[t], strlen(tstbufs[t]));
515                 uint32_t f1 = fletcher32_final(&f);
516
517                 uint32_t f2 = fletcher32_b(tstbufs[t], strlen(tstbufs[t]));
518
519                 fletcher32_update(&ft, tstbufs[t], strlen(tstbufs[t]));
520                 tot += strlen(tstbufs[t]);
521
522                 //kdump(tstbufs[t], strlen(tstbufs[t]));
523                 kprintf("f1 %04lX, f2 %04lX\n", f1, f2);
524                 ASSERT(f1 == f2);
525         }
526
527         uint8_t *b = malloc(tot);
528         uint8_t *start = b;
529         ASSERT(b);
530         for (unsigned t = 0; t < countof(tstbufs); t++)
531         {
532                 memcpy(b, tstbufs[t], strlen(tstbufs[t]));
533                 b += strlen(tstbufs[t]);
534         }
535         uint32_t ft2 = fletcher32_b(start, tot);
536         uint32_t ft1 = fletcher32_final(&ft);
537         //kdump(start, tot);
538         free(start);
539         kprintf("ft1 %04lX, ft2 %04lX\n", ft1, ft2);
540         ASSERT(ft1 == ft2);
541         return 0;
542 }
543
544 TEST_MAIN(fletcher32);
545
546