1 # Makefile to run a battery of tests of the basic functionality of pgn-extract.
2 # Copyright (C) David J. Barnes, 2013
4 # Each test is run and then, where relevant, a comparison is made between
5 # the output files generated in the current directory and the 'oracle'
6 # files that exist in $(OUTPUT).
8 # Beware of case-insensitive filenames when testing flags that
9 # differ only in letter case. In general, double letters have been
10 # used for output-files generated from using upper-case flag letters.
12 PGN_EXTRACT=../pgn-extract
13 # Use for memory checking if valgrind is installed.
14 #PGN_EXTRACT=valgrind --dsymutil=yes ../pgn-extract
16 # Location of the file of ECO classifications.
19 # Location of the input files
21 # Location of the oracle output files
25 all: no-flags-1 no-flags-2 test-7 test-append test-AA test-bl45 \
26 test-bu45 test-bu30 test-checkfile test-nocomments test-duplicates \
27 test-noduplicates test-e test-EE test-f test-FF test-h test-l \
28 test-LL test-checkmate test-n test-NN test-output test-PP test-r \
29 test-RR test-s test-SS test-t test-TT test-nounique test-v \
30 test-VV test-linelength test-WW test-x test-ZZ test-z test-hash \
31 test-evaluation test-fencomments test-markmatches test-nochecks \
32 test-nomovenumbers test-noresults test-notags test-plylimit \
33 test-stalemate test-long-line test-totalplycount test-addhashcode \
36 # BEWARE: This removes all PGN files in the current directory.
37 # The required test PGN files are assumed to be in $(INPUT).
43 # - Input file(s): N/A
46 # - Resulting output should be that the game input on standard input is
47 # formatted as PGN on standard output.
49 # Contents of fools-mate.pgn on standard output.
51 echo "test: No input file."
52 $(PGN_EXTRACT) < $(INPUT)/fools-mate.txt
56 # - Input file(s): fools-mate.txt
57 # - Resulting output should be the input formatted as PGN on standard output.
58 # - Expected output: Contents of fools-mate.pgn should appear on standard output.
60 echo "test: No flags."
61 $(PGN_EXTRACT) $(INPUT)/fools-mate.txt
64 # + Input file with games having tags additional to the seven tag roster.
65 # - Input file(s): test-7.pgn
66 # - Game output should have only the tags of the seven tag roster.
67 # - Expected output: test-7-out.pgn
70 $(PGN_EXTRACT) -7 -otest-7-out.pgn $(INPUT)/test-7.pgn
71 -cmp test-7-out.pgn $(OUTPUT)/test-7-out.pgn
74 # + Input file containing games in any accepted format.
75 # - Input file(s): test-a.txt
76 # - Resulting output should contain two versions of the input game
77 # formatted in PGN. The --output command is run first to create
78 # a new file, then the -a version to append to that file.
79 # - Expected output: test-a-out.pgn
82 $(PGN_EXTRACT) --output test-a-out.pgn $(INPUT)/test-a.txt
83 $(PGN_EXTRACT) -atest-a-out.pgn $(INPUT)/test-a.txt
84 -cmp test-a-out.pgn $(OUTPUT)/test-a-out.pgn
86 $(PGN_EXTRACT) --output test-a-out.pgn $(INPUT)/test-a.txt
87 $(PGN_EXTRACT) --append test-a-out.pgn $(INPUT)/test-a.txt
88 -cmp test-a-out.pgn $(OUTPUT)/test-a-out.pgn
91 # + Input file containing games and a file of arguments.
92 # - Input file(s): fischer.pgn, petrosian.pgn, arglist.txt
93 # - Resulting output should be files separating the unique and
94 # duplicated games in the input files.
95 # - Expected output: test-AA-unique.pgn, test-AA-dupes.pgn
98 $(PGN_EXTRACT) -A$(INPUT)/argslist.txt
99 -cmp test-AA-dupes.pgn $(OUTPUT)/test-AA-dupes.pgn
100 -cmp test-AA-unique.pgn $(OUTPUT)/test-AA-unique.pgn
103 # + Input file containing games of different length.
104 # - Input file(s): fischer.pgn
105 # - Resulting output: games whose number of moves is within
106 # the specified bounds.
108 test-b: test-bl45 test-bu45 test-bu30
110 # - Expected output: 45 moves or more: test-bl45-out.pgn
113 $(PGN_EXTRACT) -bl45 -s -otest-bl45-out.pgn $(INPUT)/fischer.pgn
114 -cmp test-bl45-out.pgn $(OUTPUT)/test-bl45-out.pgn
116 # - Expected output: 45 moves or less: test-bu45-out.pgn
119 $(PGN_EXTRACT) -bu45 -s -otest-bu45-out.pgn $(INPUT)/fischer.pgn
120 -cmp test-bu45-out.pgn $(OUTPUT)/test-bu45-out.pgn
122 # - Expected output: exactly 30 moves: test-b30-out.pgn
125 $(PGN_EXTRACT) -b30 -s -otest-b30-out.pgn $(INPUT)/fischer.pgn
126 -cmp test-b30-out.pgn $(OUTPUT)/test-b30-out.pgn
130 # + Input files containing games.
131 # - Input file(s): fischer.pgn, petrosian.pgn
132 # - Resulting output should contain matched games that do not already occur in
134 # - Expected output: test-c-out.pgn
136 echo "test-checkfile:"
137 $(PGN_EXTRACT) -c$(INPUT)/petrosian.pgn -D -TpPetrosian -otest-c-out.pgn $(INPUT)/fischer.pgn
138 -cmp test-c-out.pgn $(OUTPUT)/test-c-out.pgn
139 $(PGN_EXTRACT) -c$(INPUT)/clist.txt -D -TpPetrosian -otest-c-out.pgn $(INPUT)/fischer.pgn
140 -cmp test-c-out.pgn $(OUTPUT)/test-c-out.pgn
143 # + Input file containing games with comments
144 # - Input file(s): test-C.pgn
145 # - Resulting output should have all comments removed.
146 # - Expected output: test-CC-out.pgn
148 echo "test-nocomments:"
149 $(PGN_EXTRACT) -C -otest-CC-out.pgn $(INPUT)/test-C.pgn
150 -cmp test-CC-out.pgn $(OUTPUT)/test-CC-out.pgn
153 # + Input file containing games with duplicates and non-duplicates.
154 # - Input file(s): fischer.pgn, $(INPUT)/petrosian.pgn
155 # - Resulting output should be files separating the unique and
156 # duplicated games in the input files.
157 # - Expected output: test-d-unique.pgn, test-d-dupes.pgn
159 echo "test-duplicates:"
160 $(PGN_EXTRACT) -dtest-d-dupes.pgn -s -otest-d-unique.pgn $(INPUT)/fischer.pgn $(INPUT)/petrosian.pgn
161 -cmp test-d-dupes.pgn $(OUTPUT)/test-d-dupes.pgn
162 -cmp test-d-unique.pgn $(OUTPUT)/test-d-unique.pgn
164 # -D / --noduplicates
165 # + Input file containing games with duplicates and non-duplicates.
166 # - Input file(s): fischer.pgn, $(INPUT)/petrosian.pgn
167 # - Resulting output should be a file containing the combined input
168 # with duplicate games removed.
169 # - Expected output: test-DD-unique.pgn
171 echo "test-noduplicates:"
172 $(PGN_EXTRACT) -D -s -otest-DD-unique.pgn $(INPUT)/fischer.pgn $(INPUT)/petrosian.pgn
173 -cmp test-DD-unique.pgn $(OUTPUT)/test-DD-unique.pgn
174 $(PGN_EXTRACT) --noduplicates -s -otest-DD-unique.pgn $(INPUT)/fischer.pgn $(INPUT)/petrosian.pgn
175 -cmp test-DD-unique.pgn $(OUTPUT)/test-DD-unique.pgn
178 # + Input file containing games without ECO classifications.
179 # - Input file(s): test-e.pgn and eco.pgn in the test folder.
180 # - Resulting output should have ECO classification added to the tags.
181 # - Expected output: test-e-out.pgn
184 $(PGN_EXTRACT) -e$(ECO_FILE) -otest-e-out.pgn $(INPUT)/test-e.pgn
185 -cmp test-e-out.pgn $(OUTPUT)/test-e-out.pgn
188 # + Input file containing games.
189 # - Input file(s): test-E.pgn and eco.pgn if -e flag is used.
190 # - Resulting output should be separate files for each ECO classification
191 # at the level of the initial letter (A-E).
192 # - Expected output: A.pgn, B.pgn, E.pgn
195 $(PGN_EXTRACT) -e$(ECO_FILE) -E1 $(INPUT)/test-E.pgn
196 -cmp A.pgn $(OUTPUT)/A.pgn
197 -cmp B.pgn $(OUTPUT)/B.pgn
198 -cmp E.pgn $(OUTPUT)/E.pgn
201 # + Input files containing games.
202 # - Input file(s): test-f1.pgn, test-f2.pgn, files.txt
203 # - Resulting output should be the combination of the input files.
204 # - Expected output: test-f-out.pgn
207 $(PGN_EXTRACT) -f$(INPUT)/files.txt -otest-f-out.pgn
208 -cmp test-f-out.pgn $(OUTPUT)/test-f-out.pgn
211 # + Input file containing games without a trailing FEN comment.
212 # - Input file(s): test-F.pgn
213 # - Resulting output should have a comment at the end containing
214 # the FEN description of the final position.
215 # - Expected output: test-FF-out.pgn
218 $(PGN_EXTRACT) -F -otest-FF-out.pgn $(INPUT)/test-F.pgn
219 -cmp test-FF-out.pgn $(OUTPUT)/test-FF-out.pgn
223 # + No input required.
224 # - Input file(s): N/A
225 # - Resulting output should be a description of how to use pgn-extract
226 # - Expected output: N/A
229 # ../pgn-extract --help
235 # + Input file containing games.
236 # - Input file(s): fischer.pgn
237 # - Resulting output: List of games parsed written to log.txt
238 # - Expected output: log.txt
241 $(PGN_EXTRACT) -llog.txt -otest-l-out.pgn $(INPUT)/fischer.pgn
242 -cmp log.txt $(OUTPUT)/log.txt
243 -cmp test-l-out.pgn $(OUTPUT)/test-l-out.pgn
246 # + Input file containing games.
247 # - Input file(s): test-L1.pgn, test-L2.pgn
248 # - Resulting output should be that log.txt contains the combined
249 # logs from two runs of pgn-extract.
250 # - Expected output: log.txt
253 $(PGN_EXTRACT) -lLLog.txt -r $(INPUT)/test-L1.pgn
254 $(PGN_EXTRACT) -LLLog.txt -r $(INPUT)/test-L2.pgn
255 -cmp LLog.txt $(OUTPUT)/LLog.txt
258 # + Input file containing games.
259 # - Input file(s): test-checkmate.pgn
260 # - Resulting output should contain only those games that end in checkmate.
261 # - Expected output: test-checkmate-out.pgn
263 echo "test-checkmate:"
264 $(PGN_EXTRACT) --checkmate -otest-checkmate-out.pgn $(INPUT)/test-checkmate.pgn
265 -cmp test-checkmate-out.pgn $(OUTPUT)/test-checkmate-out.pgn
268 # + Input file containing games.
269 # - Input file(s): petrosian.pgn
270 # - Resulting output should be separate files containing matched
271 # and non-matched games.
272 # - Expected output: test-n-matched.pgn, test-n-unmatched.pgn
275 $(PGN_EXTRACT) -TpFischer -otest-n-matched.pgn -ntest-n-unmatched.pgn $(INPUT)/petrosian.pgn
276 -cmp test-n-matched.pgn $(OUTPUT)/test-n-matched.pgn
277 -cmp test-n-unmatched.pgn $(OUTPUT)/test-n-unmatched.pgn
280 # + Input file containing games with NAGs.
281 # - Input file(s): test-N.pgn
282 # - Resulting output should have all NAGs removed.
283 # - Expected output: test-NN-out.pgn
286 $(PGN_EXTRACT) -N -otest-NN-out.pgn $(INPUT)/test-N.pgn
287 -cmp test-NN-out.pgn $(OUTPUT)/test-NN-out.pgn
291 # + Input file containing games in any accepted format.
292 # - Input file(s): test-o.txt
293 # - Resulting output should contain the input game formatted in PGN.
294 # - Expected output: test-o-out.pgn
297 $(PGN_EXTRACT) -otest-o-out.pgn $(INPUT)/test-o.txt
298 -cmp test-o-out.pgn $(OUTPUT)/test-o-out.pgn
299 $(PGN_EXTRACT) --output test-o-out.pgn $(INPUT)/test-o.txt
300 -cmp test-o-out.pgn $(OUTPUT)/test-o-out.pgn
303 # + Input file containing games with different sequences for the same
305 # - Input file(s): test-P.pgn, Pvars.txt
306 # - Resulting output should be games whose opening move exactly match
307 # the sequence specified in Pvars.txt
308 # - Expected output: test-PP-out.pgn
311 $(PGN_EXTRACT) -P -v$(INPUT)/Pvars.txt -otest-PP-out.pgn $(INPUT)/test-P.pgn
312 -cmp test-PP-out.pgn $(OUTPUT)/test-PP-out.pgn
315 # + Input file containing games in any accepted format.
316 # - Input file(s): test-r.text
317 # - Resulting output should contain tag summary lines for the games
318 # matched and a report of any errors.
319 # - Expected output: test-r-log.txt
322 $(PGN_EXTRACT) -r -ltest-r-log.txt $(INPUT)/test-r.txt
323 -cmp test-r-log.txt $(OUTPUT)/test-r-log.txt
326 # + Input file containing games.
327 # - Input file(s): test-R.pgn, roster.txt
328 # - Resulting output should contain games with their tag roster in
329 # the order specified in roster.txt
330 # - Expected output: test-R-out.pgn
333 $(PGN_EXTRACT) -R$(INPUT)/roster.txt --output test-RR-out.pgn $(INPUT)/test-R.pgn
334 -cmp test-RR-out.pgn $(OUTPUT)/test-RR-out.pgn
337 # + Input file containing games.
338 # - Input file(s): test-s.pgn
339 # - Resulting output should be silent, with games written to the output file.
340 # - Expected output: test-s-out.pgn
343 $(PGN_EXTRACT) -s -o test-s-out.pgn $(INPUT)/test-s.pgn
344 -cmp test-s-out.pgn $(OUTPUT)/test-s-out.pgn
347 # + Input file containing games whose players' names have slight
348 # sound variations from anglesized versions.
349 # - Input file(s): test-S.pgn
350 # - Resulting output should be games that match by ignoring slight
351 # soundex differences.
352 # - Expected output: test-S-out.pgn
355 $(PGN_EXTRACT) -S -TpPetrosian -otest-SS-out.pgn $(INPUT)/test-S.pgn
356 -cmp test-SS-out.pgn $(OUTPUT)/test-SS-out.pgn
359 # + Input file containing games and a file of tag criteria.
360 # - Input file(s): test-t.pgn, taglist.txt
361 # - Resulting output should be only those games whose tags match
362 # all of the criteria.
363 # - Expected output: test-t-out.pgn
366 $(PGN_EXTRACT) -t$(INPUT)/taglist.txt -otest-t-out.pgn $(INPUT)/test-t.pgn
367 -cmp test-t-out.pgn $(OUTPUT)/test-t-out.pgn
370 # + Input file containing games with tag information.
371 # - Input file(s): fischer.pgn, test-Ta.pgn (and eco.pgn for -Te test.)
372 # - Resulting output should contain only those games whose tag information
373 # matches that specified.
374 # - Expected output: test-Ta-out.pgn, test-Tb-out.pgn, test-Td-out.pgn,
375 # test-Tdd-out.pgn test-Te-out.pgn, test-Tp-out.pgn,
379 $(PGN_EXTRACT) -Td1970 -s -otest-TTd-out.pgn $(INPUT)/fischer.pgn
380 -cmp test-TTd-out.pgn $(OUTPUT)/test-TTd-out.pgn
381 $(PGN_EXTRACT) -Td1960 -Td1962 -s -otest-TTdd-out.pgn $(INPUT)/fischer.pgn
382 -cmp test-TTdd-out.pgn $(OUTPUT)/test-TTdd-out.pgn
383 $(PGN_EXTRACT) -TbPetrosian -s -otest-TTb-out.pgn $(INPUT)/fischer.pgn
384 -cmp test-TTb-out.pgn $(OUTPUT)/test-TTb-out.pgn
385 $(PGN_EXTRACT) -e$(ECO_FILE) -TeB14 -s -otest-Te-out.pgn $(INPUT)/fischer.pgn
386 $(PGN_EXTRACT) -TpPetrosian -s -otest-TTp-out.pgn $(INPUT)/fischer.pgn
387 -cmp test-TTp-out.pgn $(OUTPUT)/test-TTp-out.pgn
388 $(PGN_EXTRACT) -Tr0-1 -s -otest-TTr-out.pgn $(INPUT)/fischer.pgn
389 -cmp test-TTr-out.pgn $(OUTPUT)/test-TTr-out.pgn
390 $(PGN_EXTRACT) -TwFischer -s -otest-TTw-out.pgn $(INPUT)/fischer.pgn
391 -cmp test-TTw-out.pgn $(OUTPUT)/test-TTw-out.pgn
392 $(PGN_EXTRACT) -TaBarnes -s -otest-TTa-out.pgn $(INPUT)/test-Ta.pgn
393 -cmp test-TTa-out.pgn $(OUTPUT)/test-TTa-out.pgn
396 # + Input file containing games with duplicates and non-duplicates.
397 # - Input file(s): fischer.pgn, petrosian.pgn
398 # - Resulting output should be a file containing just the duplicate games.
399 # - Expected output: test-U-unique.pgn
401 echo "test-nounique:"
402 $(PGN_EXTRACT) -U -s -otest-UU-unique.pgn $(INPUT)/fischer.pgn $(INPUT)/petrosian.pgn
403 -cmp test-UU-unique.pgn $(OUTPUT)/test-UU-unique.pgn
404 $(PGN_EXTRACT) --nounique -s -otest-UU-unique.pgn $(INPUT)/fischer.pgn $(INPUT)/petrosian.pgn
405 -cmp test-UU-unique.pgn $(OUTPUT)/test-UU-unique.pgn
408 # + Input file containing games.
409 # - Input file(s): najdorf.pgn, vvars.txt
410 # - Resulting output should be only those games whose opening moves
411 # textually match (in any order) the moves in vars.txt.
412 # - Expected output: test-v-out.pgn
415 $(PGN_EXTRACT) -v$(INPUT)/vvars.txt -otest-v-out.pgn $(INPUT)/najdorf.pgn
416 -cmp test-v-out.pgn $(OUTPUT)/test-v-out.pgn
419 # + Input file containing games with variations
420 # - Input file(s): test-V.pgn
421 # - Resulting output should have all variations removed.
422 # - Expected output: test-V-out.pgn
425 $(PGN_EXTRACT) -V -otest-VV-out.pgn $(INPUT)/test-V.pgn
426 -cmp test-VV-out.pgn $(OUTPUT)/test-VV-out.pgn
429 # + Input file containing games.
430 # - Input file(s): test-w.pgn
431 # - Resulting output Games formatted up to the specified line length.
433 # - Expected output: test-w60-out.pgn, test-w75-out.pgn, test-w1000-out.pgn
435 echo "test-linelength:"
436 $(PGN_EXTRACT) -w60 -otest-w60-out.pgn $(INPUT)/test-w.pgn
437 -cmp test-w60-out.pgn $(OUTPUT)/test-w60-out.pgn
438 $(PGN_EXTRACT) -w75 -otest-w75-out.pgn $(INPUT)/test-w.pgn
439 -cmp test-w75-out.pgn $(OUTPUT)/test-w75-out.pgn
440 $(PGN_EXTRACT) -w1000 -otest-w1000-out.pgn $(INPUT)/test-w.pgn
441 -cmp test-w1000-out.pgn $(OUTPUT)/test-w1000-out.pgn
443 $(PGN_EXTRACT) --linelength 60 -otest-w60-out.pgn $(INPUT)/test-w.pgn
444 -cmp test-w60-out.pgn $(OUTPUT)/test-w60-out.pgn
445 $(PGN_EXTRACT) --linelength 75 -otest-w75-out.pgn $(INPUT)/test-w.pgn
446 -cmp test-w75-out.pgn $(OUTPUT)/test-w75-out.pgn
447 $(PGN_EXTRACT) --linelength 1000 -otest-w1000-out.pgn $(INPUT)/test-w.pgn
448 -cmp test-w1000-out.pgn $(OUTPUT)/test-w1000-out.pgn
451 # + Input file containing games.
452 # - Input file(s): test-W.pgn
453 # - Resulting output should be games formatted in the specified notation:
454 # halg (hyphenated long algebraic), lalg (non-hyphenated long algebraic),
455 # elalg (enhanced long algebraic), uci (UCI-compatible output),
456 # and alternative piece letters.
457 # - Expected output: test-WWhalg-out.pgn, test-WWlalg-out.pgn,
458 # test-WWelalg-out.pgn, test-WWdeutsch-out.pgn,
462 $(PGN_EXTRACT) -Whalg -otest-WWhalg-out.pgn $(INPUT)/test-W.pgn
463 -cmp test-WWhalg-out.pgn $(OUTPUT)/test-WWhalg-out.pgn
464 $(PGN_EXTRACT) -Wlalg -otest-WWlalg-out.pgn $(INPUT)/test-W.pgn
465 -cmp test-WWlalg-out.pgn $(OUTPUT)/test-WWlalg-out.pgn
466 $(PGN_EXTRACT) -Welalg -otest-WWelalg-out.pgn $(INPUT)/test-W.pgn
467 -cmp test-WWelalg-out.pgn $(OUTPUT)/test-WWelalg-out.pgn
468 $(PGN_EXTRACT) -WsanBSLTDK -otest-WWdeutsch-out.pgn $(INPUT)/test-W.pgn
469 -cmp test-WWdeutsch-out.pgn $(OUTPUT)/test-WWdeutsch-out.pgn
470 $(PGN_EXTRACT) -Wuci -otest-WWuci-out.pgn $(INPUT)/test-W.pgn
471 -cmp test-WWuci-out.pgn $(OUTPUT)/test-WWuci-out.pgn
474 # + Input file containing games.
475 # - Input file(s): najdorf.pgn, xvars.txt
476 # - Resulting output should be only those games which match
477 # the result of reaching the opening sequence in vars.txt.
478 # - Expected output: test-x-out.pgn
481 $(PGN_EXTRACT) -x$(INPUT)/xvars.txt -otest-x-out.pgn $(INPUT)/najdorf.pgn
482 -cmp test-x-out.pgn $(OUTPUT)/test-x-out.pgn
485 # + Input file containing games.
486 # - Input file(s): petrosian.pgn, zmatch.txt
487 # - Resulting output should be games whose material balance matches that
488 # specified in zmatch.txt
489 # - Expected output: test-z-out.pgn
492 $(PGN_EXTRACT) -z$(INPUT)/zmatch.txt -otest-z-out.pgn $(INPUT)/petrosian.pgn
493 -cmp test-z-out.pgn $(OUTPUT)/test-z-out.pgn
496 # + Input file containing games with duplicates and non-duplicates.
497 # - Input file(s): fischer.pgn, petrosian.pgn
498 # - Resulting output should be files separating the unique and
499 # duplicated games in the input files.
500 # - Expected output: test-ZZ-unique.pgn, test-ZZ-dupes.pgn
503 $(PGN_EXTRACT) -Z -s -dtest-ZZ-dupes.pgn -otest-ZZ-unique.pgn $(INPUT)/fischer.pgn $(INPUT)/petrosian.pgn
504 -cmp test-ZZ-dupes.pgn $(OUTPUT)/test-ZZ-dupes.pgn
505 -cmp test-ZZ-unique.pgn $(OUTPUT)/test-ZZ-unique.pgn
508 # + Input file containing games.
509 # - Input file(s): test-hash.pgn
510 # - Resulting output The input file split in to separate sub-files,
511 # each containing 10 games, except the last which may contain fewer.
512 # - Expected output: 1.pgn, 2.pgn
515 $(PGN_EXTRACT) -#20 -s $(INPUT)/test-hash.pgn
516 -cmp 1.pgn $(OUTPUT)/1.pgn
517 -cmp 2.pgn $(OUTPUT)/2.pgn
520 # + Input file containing games.
521 # - Input file(s): test-evaluation.pgn
522 # - Resulting output should include an evaluation value in a comment
524 # - Expected output: test-evaluation-out.pgn
526 echo "test-evaluation:"
527 $(PGN_EXTRACT) --evaluation -otest-evaluation-out.pgn $(INPUT)/test-evaluation.pgn
528 -cmp test-evaluation-out.pgn $(OUTPUT)/test-evaluation-out.pgn
531 # + Input file containing games.
532 # - Input file(s): test-fencomments.pgn
533 # - Resulting output should have a comment after every move containing a
534 # FEN description of the position after that move.
535 # - Expected output: test-fencomments-out.pgn
537 echo "test-fencomments:"
538 $(PGN_EXTRACT) --fencomments -otest-fencomments-out.pgn $(INPUT)/test-fencomments.pgn
539 -cmp test-fencomments-out.pgn $(OUTPUT)/test-fencomments-out.pgn
542 # + Input file containing games.
543 # - Input file(s): najdorf.pgn, xvars.txt
544 # - Resulting output should be only those games which match
545 # the result of reaching the opening sequence in vars.txt.
546 # The point of each match is marked with the comment { MATCH }
547 # - Expected output: test-markmatches-out.pgn
549 echo "test-markmatches:"
550 $(PGN_EXTRACT) --markmatches MATCH -x$(INPUT)/xvars.txt -otest-markmatches-out.pgn $(INPUT)/najdorf.pgn
551 -cmp test-markmatches-out.pgn $(OUTPUT)/test-markmatches-out.pgn
554 # + Input file containing games with moves involving moves that give check
556 # - Input file(s): test-nochecks.pgn
557 # - Resulting output should contain games with no check indicators after moves.
558 # - Expected output: test-nochecks-out.pgn
560 echo "test-nochecks:"
561 $(PGN_EXTRACT) --nochecks -otest-nochecks-out.pgn $(INPUT)/test-nochecks.pgn
562 -cmp test-nochecks-out.pgn $(OUTPUT)/test-nochecks-out.pgn
565 # + Input file containing games with move numbers.
566 # - Input file(s): test-nomovenumbers.pgn
567 # - Resulting output should contain games with no move numbers.
568 # - Expected output: test-nomovenumbers-out.pgn
570 echo "test-nomovenumbers:"
571 $(PGN_EXTRACT) -otest-nomovenumbers-out.pgn --nomovenumbers $(INPUT)/test-nomovenumbers.pgn
572 -cmp test-nomovenumbers-out.pgn $(OUTPUT)/test-nomovenumbers-out.pgn
575 # + Input file containing games with results.
576 # - Input file(s): test-noresults.pgn
577 # - Resulting output should contain games with no results.
578 # - Expected output: test-noresults-out.pgn
580 echo "test-noresults:"
581 $(PGN_EXTRACT) -otest-noresults-out.pgn --noresults $(INPUT)/test-noresults.pgn
582 -cmp test-noresults-out.pgn $(OUTPUT)/test-noresults-out.pgn
585 # + Input file containing games with tag information.
586 # - Input file(s): test-notags.pgn
587 # - Resulting output should contain games with no tag information.
588 # - Expected output: test-notags-out.pgn
591 $(PGN_EXTRACT) -otest-notags-out.pgn --notags $(INPUT)/test-notags.pgn
592 -cmp test-notags-out.pgn $(OUTPUT)/test-notags-out.pgn
595 # + Input file containing games.
596 # - Input file(s): test-plylimit.pgn
597 # - Resulting output should contain games whose number of moves (plies) are
598 # limited at the specified ply limit.
599 # - Expected output: test-plylimit-out.pgn
601 echo "test-plylimit:"
602 $(PGN_EXTRACT) --plylimit 10 -otest-plylimit-out.pgn $(INPUT)/test-plylimit.pgn
603 -cmp test-plylimit-out.pgn $(OUTPUT)/test-plylimit-out.pgn
606 # + Input file containing games.
607 # - Input file(s): test-selectonly.pgn
608 # - Resulting output should contain a single matched game.
609 # - Expected output: test-selectonly-out.pgn
611 echo "test-selectonly:"
612 $(PGN_EXTRACT) -TpPetrosian --selectonly 2 -otest-selectonly-out.pgn $(INPUT)/test-selectonly.pgn
613 -cmp test-selectonly-out.pgn $(OUTPUT)/test-selectonly-out.pgn
616 # + Input file containing games.
617 # - Input file(s): test-stalemate.pgn
618 # - Resulting output should contain only those games that end in stalemate.
619 # - Expected output: test-stalemate-out.pgn
621 echo "test-stalemate:"
622 $(PGN_EXTRACT) --stalemate -otest-stalemate-out.pgn $(INPUT)/test-stalemate.pgn
623 -cmp test-stalemate-out.pgn $(OUTPUT)/test-stalemate-out.pgn
626 # + Input file containing games.
627 # - Input file(s): test-totalplycount.pgn
628 # - Resulting output should contain games with a TotalPlyCount tag.
629 # - Expected output: test-totalplycount-out.pgn
631 echo "test-totalplycount:"
632 $(PGN_EXTRACT) --totalplycount -otest-totalplycount-out.pgn $(INPUT)/test-totalplycount.pgn
633 -cmp test-totalplycount-out.pgn $(OUTPUT)/test-totalplycount-out.pgn
636 # + Input file containing games.
637 # - Input file(s): test-addhashcode.pgn
638 # - Resulting output should contain games with a HashCode tag.
639 # - Expected output: test-addhashcode-out.pgn
641 echo "test-addhashcode:"
642 $(PGN_EXTRACT) --addhashcode -otest-addhashcode-out.pgn $(INPUT)/test-addhashcode.pgn
643 -cmp test-addhashcode-out.pgn $(OUTPUT)/test-addhashcode-out.pgn
645 # Test on a file with a string too long to be output within the
646 # defined line length.
647 # + Input file containing a game with a very long comment.
648 # + Input file(s): test-long-line.pgn
649 # + Resulting output should contain the game properly formatted and
650 # the log file should contain an error message reporting the problem.
651 # + Expected output: test-long-line-out.pgn, test-long-line-log.txt
653 echo "test long line:"
654 $(PGN_EXTRACT) -otest-long-line-out.pgn -ltest-long-line-log.txt $(INPUT)/test-long-line.pgn
655 -cmp test-long-line-out.pgn $(OUTPUT)/test-long-line-out.pgn
656 -cmp test-long-line-log.txt $(OUTPUT)/test-long-line-log.txt