[uim-commit] r2063 - branches/r5rs/sigscheme/test
yamaken at freedesktop.org
yamaken at freedesktop.org
Mon Nov 7 06:39:53 PST 2005
Author: yamaken
Date: 2005-11-07 06:39:48 -0800 (Mon, 07 Nov 2005)
New Revision: 2063
Added:
branches/r5rs/sigscheme/test/test-srfi34-2.scm
Log:
* sigscheme/test/test-srfi34-2.scm
- New file
- The tests are ported from "Examples" section of SRFI-34. Currently
test #5 and #6 produces SEGV
Added: branches/r5rs/sigscheme/test/test-srfi34-2.scm
===================================================================
--- branches/r5rs/sigscheme/test/test-srfi34-2.scm 2005-11-07 14:13:12 UTC (rev 2062)
+++ branches/r5rs/sigscheme/test/test-srfi34-2.scm 2005-11-07 14:39:48 UTC (rev 2063)
@@ -0,0 +1,172 @@
+;; FileName : test-srfi34-2.scm
+;; About : unit test for SRFI-34 taken from "Examples" section of SRFI-34
+;;
+;; Copyright (C) 2005 by YamaKen <yamaken AT bp.iij4u.or.jp>
+;;
+;; All rights reserved.
+;;
+;; Redistribution and use in source and binary forms, with or without
+;; modification, are permitted provided that the following conditions
+;; are met:
+;;
+;; 1. Redistributions of source code must retain the above copyright
+;; notice, this list of conditions and the following disclaimer.
+;; 2. Redistributions in binary form must reproduce the above copyright
+;; notice, this list of conditions and the following disclaimer in the
+;; documentation and/or other materials provided with the distribution.
+;; 3. Neither the name of authors nor the names of its contributors
+;; may be used to endorse or promote products derived from this software
+;; without specific prior written permission.
+;;
+;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
+;; IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+;; THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+;; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
+;; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+;; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+;; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+;; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+(load "./test/unittest.scm")
+
+(use srfi-34)
+
+;; these tests are ported from "Examples" section of SRFI-34
+
+(define print-expected
+ (lambda (expected)
+ (display " expected print: ")
+ (display expected)
+ (newline)
+ (display " actual print: ")))
+
+(display "test #1")
+(newline)
+;;PRINTS: condition: an-error
+(print-expected "condition: an-error")
+(assert-equal? "Examples of SRFI-34 document"
+ 'exception
+ (call-with-current-continuation
+ (lambda (k)
+ (with-exception-handler (lambda (x)
+ (display "condition: ")
+ (write x)
+ (newline)
+ (k 'exception))
+ (lambda ()
+ (+ 1 (raise 'an-error)))))))
+
+(display "test #2")
+(newline)
+;;PRINTS: something went wrong
+;;then behaves in an unspecified way
+(print-expected "something went wrong")
+(call-with-current-continuation
+ (lambda (k)
+ (with-exception-handler (lambda (x)
+ (display "something went wrong")
+ (newline)
+ 'dont-care)
+ (lambda ()
+ (+ 1 (raise 'an-error))))))
+
+(display "test #3")
+(newline)
+;;PRINTS: condition: an-error
+(print-expected "condition: an-error")
+(assert-equal? "Examples of SRFI-34 document"
+ 'exception
+ (guard (condition
+ (else
+ (display "condition: ")
+ (write condition)
+ (newline)
+ 'exception))
+ (+ 1 (raise 'an-error))))
+
+;; the result is not specified by SRFI-34, but we should result #<UNDEF> to
+;; prevent misuse of 'guard' procedure.
+(for-each values '()) ;; to produce #<UNDEF>
+
+(display "test #4")
+(newline)
+;;PRINTS: something went wrong
+(print-expected "something went wrong")
+(assert-equal? "Examples of SRFI-34 document"
+ 'dont-care
+ (guard (condition
+ (else
+ (display "something went wrong")
+ (newline)
+ 'dont-care))
+ (+ 1 (raise 'an-error))))
+
+(display "test #5")
+(newline)
+(assert-equal? "Examples of SRFI-34 document"
+ 'positive
+ (call-with-current-continuation
+ (lambda (k)
+ (with-exception-handler (lambda (x)
+ (display "reraised ") (write x) (newline)
+ (k 'zero))
+ (lambda ()
+ (guard (condition
+ ((positive? condition) 'positive)
+ ((negative? condition) 'negative))
+ (raise 1)))))))
+
+(display "test #6")
+(newline)
+(assert-equal? "Examples of SRFI-34 document"
+ 'negative
+ (call-with-current-continuation
+ (lambda (k)
+ (with-exception-handler (lambda (x)
+ (display "reraised ") (write x) (newline)
+ (k 'zero))
+ (lambda ()
+ (guard (condition
+ ((positive? condition) 'positive)
+ ((negative? condition) 'negative))
+ (raise -1)))))))
+
+(display "test #7")
+(newline)
+;;PRINTS: reraised 0
+(print-expected "reraised 0")
+(assert-equal? "Examples of SRFI-34 document"
+ 'zero
+ (call-with-current-continuation
+ (lambda (k)
+ (with-exception-handler (lambda (x)
+ (display "reraised ") (write x) (newline)
+ (k 'zero))
+ (lambda ()
+ (guard (condition
+ ((positive? condition) 'positive)
+ ((negative? condition) 'negative))
+ (raise 0)))))))
+
+(display "test #8")
+(newline)
+(assert-equal? "Examples of SRFI-34 document"
+ 42
+ (guard (condition
+ ((assq 'a condition) => cdr)
+ ((assq 'b condition)))
+ (raise (list (cons 'a 42)))))
+
+(display "test #9")
+(newline)
+(assert-equal? "Examples of SRFI-34 document"
+ '(b . 23)
+ (guard (condition
+ ((assq 'a condition) => cdr)
+ ((assq 'b condition)))
+ (raise (list (cons 'b 23)))))
+
+(total-report)
More information about the uim-commit
mailing list