diff options
| -rw-r--r-- | chess-test.el | 76 |
1 files changed, 41 insertions, 35 deletions
diff --git a/chess-test.el b/chess-test.el index 2446982..c54b91b 100644 --- a/chess-test.el +++ b/chess-test.el @@ -18,30 +18,31 @@ (message "Opening chess database '%s'" file) - (let ((database (chess-database-open file))) + (let ((database (chess-database-open file)) + error-occurred) (if database (progn (message "Running validation suite...") - (condition-case err - (let* ((db-count (chess-database-count database)) - (ply-count 0) - (index (if start - (max start 1) - 1)) - (last-index (if (and count (> count 0)) - (min db-count (+ index count)) - db-count)) - (begin (current-time)) - (read-count 0)) - (message "Testing legality of games in range [%d, %d):" - index last-index) - (while (< index last-index) - ;; Reading in the game will cause it to be converted from PGN - ;; (this is true currently) to a chess-game, during which time - ;; every move will be tested for legality. - ;; - ;; jww (2008-08-31): We should add some extra checks here, if we - ;; want to verify the final position and such. + (let* ((db-count (chess-database-count database)) + (ply-count 0) + (index (if start + (max start 1) + 1)) + (last-index (if (and count (> count 0)) + (min db-count (+ index count)) + db-count)) + (begin (current-time)) + (read-count 0)) + (message "Testing legality of games in range [%d, %d):" + index last-index) + (while (< index last-index) + ;; Reading in the game will cause it to be converted from PGN + ;; (this is true currently) to a chess-game, during which time + ;; every move will be tested for legality. + ;; + ;; jww (2008-08-31): We should add some extra checks here, if we + ;; want to verify the final position and such. + (condition-case err (let ((game (chess-database-read database index))) (when game (setq read-count (1+ read-count) @@ -55,19 +56,24 @@ (time-to-seconds (subtract-time (current-time) begin)))))))) - (setq index (1+ index))) - (message "Read %d games (up to game %d): %d plies (%.2f ply/sec, %.2f seconds)" - read-count index ply-count - (/ (float ply-count) - (float - (time-to-seconds - (subtract-time (current-time) - begin)))) - (time-to-seconds (subtract-time (current-time) - begin))) - (message "Running validation suite...done")) - (t - (error "Failed to open chess database '%s'" file))) - (chess-database-close database))))) + (error + (setq error-occurred t) + (message "Error reading game %d: %s" + index (error-message-string err)))) + (setq index (1+ index))) + (message "Read %d games (up to game %d): %d plies (%.2f ply/sec, %.2f seconds)" + read-count index ply-count + (/ (float ply-count) + (float + (time-to-seconds + (subtract-time (current-time) + begin)))) + (time-to-seconds (subtract-time (current-time) + begin))) + (message "Running validation suite...done") + (chess-database-close database))) + (error "Failed to open chess database '%s'" file)) + (if error-occurred + (error "Some of the tests failed")))) ;;; chess-test.el ends here |
