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.