Mercurial > hg > xemacs-beta
comparison tests/automated/test-harness.el @ 4856:9bf09492cff7
Clean up macro Assert
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Thu, 14 Jan 2010 02:29:13 -0600 |
parents | 189fb67ca31a |
children | 732c35cdded8 8b230c53075b |
comparison
equal
deleted
inserted
replaced
4855:189fb67ca31a | 4856:9bf09492cff7 |
---|---|
1 ;; test-harness.el --- Run Emacs Lisp test suites. | 1 ;; test-harness.el --- Run Emacs Lisp test suites. |
2 | 2 |
3 ;;; Copyright (C) 1998, 2002, 2003 Free Software Foundation, Inc. | 3 ;;; Copyright (C) 1998, 2002, 2003 Free Software Foundation, Inc. |
4 ;;; Copyright (C) 2002 Ben Wing. | 4 ;;; Copyright (C) 2002, 2010 Ben Wing. |
5 | 5 |
6 ;; Author: Martin Buchholz | 6 ;; Author: Martin Buchholz |
7 ;; Maintainer: Stephen J. Turnbull <stephen@xemacs.org> | 7 ;; Maintainer: Stephen J. Turnbull <stephen@xemacs.org> |
8 ;; Keywords: testing | 8 ;; Keywords: testing |
9 | 9 |
267 (Print-Skip ,description ,reason)) | 267 (Print-Skip ,description ,reason)) |
268 ,@body)) | 268 ,@body)) |
269 | 269 |
270 (defmacro Assert (assertion &optional failing-case description) | 270 (defmacro Assert (assertion &optional failing-case description) |
271 "Test passes if ASSERTION is true. | 271 "Test passes if ASSERTION is true. |
272 Optional FAILING-CASE describes the particular failure. | 272 Optional FAILING-CASE describes the particular failure. Optional |
273 Optional DESCRIPTION describes the assertion. | 273 DESCRIPTION describes the assertion; by default, the unevalated assertion |
274 FAILING-CASE and DESCRIPTION are useful when Assert is used in a loop." | 274 expression is given. FAILING-CASE and DESCRIPTION are useful when Assert |
275 `(condition-case error-info | 275 is used in a loop." |
276 (progn | 276 (let ((description |
277 (assert ,assertion) | 277 (or description `(quote ,assertion)))) |
278 (Print-Pass "%S" ,(or description `(quote ,assertion))) | 278 `(condition-case error-info |
279 (incf passes)) | 279 (progn |
280 (cl-assertion-failed | 280 (assert ,assertion) |
281 (Print-Failure (if ,failing-case | 281 (Print-Pass "%S" ,description) |
282 "Assertion failed: %S; failing case = %S" | 282 (incf passes)) |
283 "Assertion failed: %S") | 283 (cl-assertion-failed |
284 ,(or description `(quote ,assertion)) ,failing-case) | 284 (Print-Failure (if ,failing-case |
285 (incf assertion-failures)) | 285 "Assertion failed: %S; failing case = %S" |
286 (t (Print-Failure (if ,failing-case | 286 "Assertion failed: %S") |
287 "%S ==> error: %S; failing case = %S" | 287 ,description ,failing-case) |
288 "%S ==> error: %S") | 288 (incf assertion-failures)) |
289 ,(or description `(quote ,assertion)) | 289 (t (Print-Failure (if ,failing-case |
290 error-info ,failing-case) | 290 "%S ==> error: %S; failing case = %S" |
291 (incf other-failures) | 291 "%S ==> error: %S") |
292 ))) | 292 ,description error-info ,failing-case) |
293 (incf other-failures) | |
294 )))) | |
293 | 295 |
294 (defmacro Assert-test (test testval expected &optional failing-case | 296 (defmacro Assert-test (test testval expected &optional failing-case |
295 description) | 297 description) |
296 "Test passes if TESTVAL is equal to EXPECTED, using TEST as comparator. | 298 "Test passes if TESTVAL is equal to EXPECTED, using TEST as comparator. |
297 TEST should be a function such as `eq', `equal', `equalp', `=', `<=', etc. | 299 TEST should be a function such as `eq', `equal', `equalp', `=', `<=', etc. |