test/test-real-pgn.c

changeset 149
ea2448961441
child 150
7d57a252948e
equal deleted inserted replaced
148:6cc15ba51424 149:ea2448961441
1 /*
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3 *
4 * Copyright 2026 Mike Becker. All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 * POSSIBILITY OF SUCH DAMAGE.
27 *
28 */
29
30 #include "ucxtest.h"
31 #include "chess/pgn.h"
32
33 #if __STDC_VERSION__ < 202310L
34 #error Need C23 compiler to compile this test.
35 #endif
36
37 const char pgn_data[150][1500];
38
39 static CX_TEST(test_real_pgn) {
40 static unsigned index = 0;
41 ++index;
42 GameState gamestate;
43 gamestate_init(&gamestate);
44 CX_TEST_DO {
45 int result = parse_pgn(pgn_data[index-1], &gamestate);
46 char msg[32];
47 sprintf(msg, "failed to parse game%03u.pgn", index);
48 CX_TEST_ASSERTM(result == pgn_no_error, msg);
49 }
50 gamestate_cleanup(&gamestate);
51 }
52
53 CxTestSuite* test_real_pgn_suite(void) {
54 CxTestSuite* suite = cx_test_suite_new("Real PGN Files");
55 for (unsigned i = 0 ; i < 150 ; i++) {
56 cx_test_register(suite, test_real_pgn);
57 }
58 return suite;
59 }
60
61 const char pgn_data[150][1500] = {
62 {
63 #embed "data/game001.pgn"
64 , '\0'
65 },
66 {
67 #embed "data/game002.pgn"
68 , '\0'
69 },
70 {
71 #embed "data/game003.pgn"
72 , '\0'
73 },
74 {
75 #embed "data/game004.pgn"
76 , '\0'
77 },
78 {
79 #embed "data/game005.pgn"
80 , '\0'
81 },
82 {
83 #embed "data/game006.pgn"
84 , '\0'
85 },
86 {
87 #embed "data/game007.pgn"
88 , '\0'
89 },
90 {
91 #embed "data/game008.pgn"
92 , '\0'
93 },
94 {
95 #embed "data/game009.pgn"
96 , '\0'
97 },
98 {
99 #embed "data/game010.pgn"
100 , '\0'
101 },
102 {
103 #embed "data/game011.pgn"
104 , '\0'
105 },
106 {
107 #embed "data/game012.pgn"
108 , '\0'
109 },
110 {
111 #embed "data/game013.pgn"
112 , '\0'
113 },
114 {
115 #embed "data/game014.pgn"
116 , '\0'
117 },
118 {
119 #embed "data/game015.pgn"
120 , '\0'
121 },
122 {
123 #embed "data/game016.pgn"
124 , '\0'
125 },
126 {
127 #embed "data/game017.pgn"
128 , '\0'
129 },
130 {
131 #embed "data/game018.pgn"
132 , '\0'
133 },
134 {
135 #embed "data/game019.pgn"
136 , '\0'
137 },
138 {
139 #embed "data/game020.pgn"
140 , '\0'
141 },
142 {
143 #embed "data/game021.pgn"
144 , '\0'
145 },
146 {
147 #embed "data/game022.pgn"
148 , '\0'
149 },
150 {
151 #embed "data/game023.pgn"
152 , '\0'
153 },
154 {
155 #embed "data/game024.pgn"
156 , '\0'
157 },
158 {
159 #embed "data/game025.pgn"
160 , '\0'
161 },
162 {
163 #embed "data/game026.pgn"
164 , '\0'
165 },
166 {
167 #embed "data/game027.pgn"
168 , '\0'
169 },
170 {
171 #embed "data/game028.pgn"
172 , '\0'
173 },
174 {
175 #embed "data/game029.pgn"
176 , '\0'
177 },
178 {
179 #embed "data/game030.pgn"
180 , '\0'
181 },
182 {
183 #embed "data/game031.pgn"
184 , '\0'
185 },
186 {
187 #embed "data/game032.pgn"
188 , '\0'
189 },
190 {
191 #embed "data/game033.pgn"
192 , '\0'
193 },
194 {
195 #embed "data/game034.pgn"
196 , '\0'
197 },
198 {
199 #embed "data/game035.pgn"
200 , '\0'
201 },
202 {
203 #embed "data/game036.pgn"
204 , '\0'
205 },
206 {
207 #embed "data/game037.pgn"
208 , '\0'
209 },
210 {
211 #embed "data/game038.pgn"
212 , '\0'
213 },
214 {
215 #embed "data/game039.pgn"
216 , '\0'
217 },
218 {
219 #embed "data/game040.pgn"
220 , '\0'
221 },
222 {
223 #embed "data/game041.pgn"
224 , '\0'
225 },
226 {
227 #embed "data/game042.pgn"
228 , '\0'
229 },
230 {
231 #embed "data/game043.pgn"
232 , '\0'
233 },
234 {
235 #embed "data/game044.pgn"
236 , '\0'
237 },
238 {
239 #embed "data/game045.pgn"
240 , '\0'
241 },
242 {
243 #embed "data/game046.pgn"
244 , '\0'
245 },
246 {
247 #embed "data/game047.pgn"
248 , '\0'
249 },
250 {
251 #embed "data/game048.pgn"
252 , '\0'
253 },
254 {
255 #embed "data/game049.pgn"
256 , '\0'
257 },
258 {
259 #embed "data/game050.pgn"
260 , '\0'
261 },
262 {
263 #embed "data/game051.pgn"
264 , '\0'
265 },
266 {
267 #embed "data/game052.pgn"
268 , '\0'
269 },
270 {
271 #embed "data/game053.pgn"
272 , '\0'
273 },
274 {
275 #embed "data/game054.pgn"
276 , '\0'
277 },
278 {
279 #embed "data/game055.pgn"
280 , '\0'
281 },
282 {
283 #embed "data/game056.pgn"
284 , '\0'
285 },
286 {
287 #embed "data/game057.pgn"
288 , '\0'
289 },
290 {
291 #embed "data/game058.pgn"
292 , '\0'
293 },
294 {
295 #embed "data/game059.pgn"
296 , '\0'
297 },
298 {
299 #embed "data/game060.pgn"
300 , '\0'
301 },
302 {
303 #embed "data/game061.pgn"
304 , '\0'
305 },
306 {
307 #embed "data/game062.pgn"
308 , '\0'
309 },
310 {
311 #embed "data/game063.pgn"
312 , '\0'
313 },
314 {
315 #embed "data/game064.pgn"
316 , '\0'
317 },
318 {
319 #embed "data/game065.pgn"
320 , '\0'
321 },
322 {
323 #embed "data/game066.pgn"
324 , '\0'
325 },
326 {
327 #embed "data/game067.pgn"
328 , '\0'
329 },
330 {
331 #embed "data/game068.pgn"
332 , '\0'
333 },
334 {
335 #embed "data/game069.pgn"
336 , '\0'
337 },
338 {
339 #embed "data/game070.pgn"
340 , '\0'
341 },
342 {
343 #embed "data/game071.pgn"
344 , '\0'
345 },
346 {
347 #embed "data/game072.pgn"
348 , '\0'
349 },
350 {
351 #embed "data/game073.pgn"
352 , '\0'
353 },
354 {
355 #embed "data/game074.pgn"
356 , '\0'
357 },
358 {
359 #embed "data/game075.pgn"
360 , '\0'
361 },
362 {
363 #embed "data/game076.pgn"
364 , '\0'
365 },
366 {
367 #embed "data/game077.pgn"
368 , '\0'
369 },
370 {
371 #embed "data/game078.pgn"
372 , '\0'
373 },
374 {
375 #embed "data/game079.pgn"
376 , '\0'
377 },
378 {
379 #embed "data/game080.pgn"
380 , '\0'
381 },
382 {
383 #embed "data/game081.pgn"
384 , '\0'
385 },
386 {
387 #embed "data/game082.pgn"
388 , '\0'
389 },
390 {
391 #embed "data/game083.pgn"
392 , '\0'
393 },
394 {
395 #embed "data/game084.pgn"
396 , '\0'
397 },
398 {
399 #embed "data/game085.pgn"
400 , '\0'
401 },
402 {
403 #embed "data/game086.pgn"
404 , '\0'
405 },
406 {
407 #embed "data/game087.pgn"
408 , '\0'
409 },
410 {
411 #embed "data/game088.pgn"
412 , '\0'
413 },
414 {
415 #embed "data/game089.pgn"
416 , '\0'
417 },
418 {
419 #embed "data/game090.pgn"
420 , '\0'
421 },
422 {
423 #embed "data/game091.pgn"
424 , '\0'
425 },
426 {
427 #embed "data/game092.pgn"
428 , '\0'
429 },
430 {
431 #embed "data/game093.pgn"
432 , '\0'
433 },
434 {
435 #embed "data/game094.pgn"
436 , '\0'
437 },
438 {
439 #embed "data/game095.pgn"
440 , '\0'
441 },
442 {
443 #embed "data/game096.pgn"
444 , '\0'
445 },
446 {
447 #embed "data/game097.pgn"
448 , '\0'
449 },
450 {
451 #embed "data/game098.pgn"
452 , '\0'
453 },
454 {
455 #embed "data/game099.pgn"
456 , '\0'
457 },
458 {
459 #embed "data/game100.pgn"
460 , '\0'
461 },
462 {
463 #embed "data/game101.pgn"
464 , '\0'
465 },
466 {
467 #embed "data/game102.pgn"
468 , '\0'
469 },
470 {
471 #embed "data/game103.pgn"
472 , '\0'
473 },
474 {
475 #embed "data/game104.pgn"
476 , '\0'
477 },
478 {
479 #embed "data/game105.pgn"
480 , '\0'
481 },
482 {
483 #embed "data/game106.pgn"
484 , '\0'
485 },
486 {
487 #embed "data/game107.pgn"
488 , '\0'
489 },
490 {
491 #embed "data/game108.pgn"
492 , '\0'
493 },
494 {
495 #embed "data/game109.pgn"
496 , '\0'
497 },
498 {
499 #embed "data/game110.pgn"
500 , '\0'
501 },
502 {
503 #embed "data/game111.pgn"
504 , '\0'
505 },
506 {
507 #embed "data/game112.pgn"
508 , '\0'
509 },
510 {
511 #embed "data/game113.pgn"
512 , '\0'
513 },
514 {
515 #embed "data/game114.pgn"
516 , '\0'
517 },
518 {
519 #embed "data/game115.pgn"
520 , '\0'
521 },
522 {
523 #embed "data/game116.pgn"
524 , '\0'
525 },
526 {
527 #embed "data/game117.pgn"
528 , '\0'
529 },
530 {
531 #embed "data/game118.pgn"
532 , '\0'
533 },
534 {
535 #embed "data/game119.pgn"
536 , '\0'
537 },
538 {
539 #embed "data/game120.pgn"
540 , '\0'
541 },
542 {
543 #embed "data/game121.pgn"
544 , '\0'
545 },
546 {
547 #embed "data/game122.pgn"
548 , '\0'
549 },
550 {
551 #embed "data/game123.pgn"
552 , '\0'
553 },
554 {
555 #embed "data/game124.pgn"
556 , '\0'
557 },
558 {
559 #embed "data/game125.pgn"
560 , '\0'
561 },
562 {
563 #embed "data/game126.pgn"
564 , '\0'
565 },
566 {
567 #embed "data/game127.pgn"
568 , '\0'
569 },
570 {
571 #embed "data/game128.pgn"
572 , '\0'
573 },
574 {
575 #embed "data/game129.pgn"
576 , '\0'
577 },
578 {
579 #embed "data/game130.pgn"
580 , '\0'
581 },
582 {
583 #embed "data/game131.pgn"
584 , '\0'
585 },
586 {
587 #embed "data/game132.pgn"
588 , '\0'
589 },
590 {
591 #embed "data/game133.pgn"
592 , '\0'
593 },
594 {
595 #embed "data/game134.pgn"
596 , '\0'
597 },
598 {
599 #embed "data/game135.pgn"
600 , '\0'
601 },
602 {
603 #embed "data/game136.pgn"
604 , '\0'
605 },
606 {
607 #embed "data/game137.pgn"
608 , '\0'
609 },
610 {
611 #embed "data/game138.pgn"
612 , '\0'
613 },
614 {
615 #embed "data/game139.pgn"
616 , '\0'
617 },
618 {
619 #embed "data/game140.pgn"
620 , '\0'
621 },
622 {
623 #embed "data/game141.pgn"
624 , '\0'
625 },
626 {
627 #embed "data/game142.pgn"
628 , '\0'
629 },
630 {
631 #embed "data/game143.pgn"
632 , '\0'
633 },
634 {
635 #embed "data/game144.pgn"
636 , '\0'
637 },
638 {
639 #embed "data/game145.pgn"
640 , '\0'
641 },
642 {
643 #embed "data/game146.pgn"
644 , '\0'
645 },
646 {
647 #embed "data/game147.pgn"
648 , '\0'
649 },
650 {
651 #embed "data/game148.pgn"
652 , '\0'
653 },
654 {
655 #embed "data/game149.pgn"
656 , '\0'
657 },
658 {
659 #embed "data/game150.pgn"
660 , '\0'
661 },
662 };

mercurial