~ chicken-core (chicken-5) 2d9911abb77674f064f49d25b713e5b3f436c861
commit 2d9911abb77674f064f49d25b713e5b3f436c861 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Fri Jun 25 08:44:55 2010 +0200 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Fri Jun 25 08:44:55 2010 +0200 added dwindtst from slib diff --git a/distribution/manifest b/distribution/manifest index 613454a7..d82681cd 100644 --- a/distribution/manifest +++ b/distribution/manifest @@ -157,6 +157,8 @@ tests/slatex.sty tests/symbolgc-tests.scm tests/private-repository-test.scm tests/records-and-setters-test.scm +tests/dwindtst.scm +tests/dwindtst.expected tweaks.scm utils.scm apply-hack.x86.S diff --git a/tests/dwindtst.expected b/tests/dwindtst.expected new file mode 100644 index 00000000..7409bb54 --- /dev/null +++ b/tests/dwindtst.expected @@ -0,0 +1,41 @@ +testing escape from thunk1 +visiting: +thunk1 +testing escape from thunk2 +visiting: +thunk1 +thunk2 +thunk3 +testing escape from thunk3 +visiting: +thunk1 +thunk2 +thunk3 +creating continuation thunk +visiting: +thunk1 +thunk2 +thunk3 +testing escape from continuation thunk1 +visiting: +thunk1 +creating continuation thunk +visiting: +thunk1 +thunk2 +thunk3 +testing escape from continuation thunk2 +visiting: +thunk1 +thunk2 +thunk3 +creating continuation thunk +visiting: +thunk1 +thunk2 +thunk3 +testing escape from continuation thunk3 +visiting: +thunk1 +thunk2 +thunk3 diff --git a/tests/dwindtst.scm b/tests/dwindtst.scm new file mode 100644 index 00000000..088db07d --- /dev/null +++ b/tests/dwindtst.scm @@ -0,0 +1,78 @@ +;;;; "dwindtst.scm", routines for characterizing dynamic-wind. +;Copyright (C) 1992 Aubrey Jaffer +; +;Permission to copy this software, to modify it, to redistribute it, +;to distribute modified versions, and to use it for any purpose is +;granted, subject to the following restrictions and understandings. +; +;1. Any copy made of this software must include this copyright notice +;in full. +; +;2. I have made no warranty or representation that the operation of +;this software will be error-free, and I am under no obligation to +;provide any services, by way of maintenance, update, or otherwise. +; +;3. In conjunction with products arising from the use of this +;material, there shall be no use of my name in any advertising, +;promotional, or sales literature without prior written consent in +;each case. + +(define (dwtest n) + (define cont #f) + (display "testing escape from thunk") (display n) (newline) + (display "visiting:") (newline) + (call-with-current-continuation + (lambda (x) (set! cont x))) + (if n + (dynamic-wind + (lambda () + (display "thunk1") (newline) + (if (eqv? n 1) (let ((ntmp n)) + (set! n #f) + (cont ntmp)))) + (lambda () + (display "thunk2") (newline) + (if (eqv? n 2) (let ((ntmp n)) + (set! n #f) + (cont ntmp)))) + (lambda () + (display "thunk3") (newline) + (if (eqv? n 3) (let ((ntmp n)) + (set! n #f) + (cont ntmp))))))) +(define (dwctest n) + (define cont #f) + (define ccont #f) + (display "creating continuation thunk") (newline) + (display "visiting:") (newline) + (call-with-current-continuation + (lambda (x) (set! cont x))) + (if n (set! n (- n))) + (if n + (dynamic-wind + (lambda () + (display "thunk1") (newline) + (if (eqv? n 1) (let ((ntmp n)) + (set! n #f) + (cont ntmp)))) + (lambda () + (call-with-current-continuation + (lambda (x) (set! ccont x))) + (display "thunk2") (newline) + (if (eqv? n 2) (let ((ntmp n)) + (set! n #f) + (cont ntmp)))) + (lambda () + (display "thunk3") (newline) + (if (eqv? n 3) (let ((ntmp n)) + (set! n #f) + (cont ntmp)))))) + (cond + (n + (set! n (- n)) + (display "testing escape from continuation thunk") (display n) (newline) + (display "visiting:") (newline) + (ccont #f)))) + +(dwtest 1) (dwtest 2) (dwtest 3) +(dwctest 1) (dwctest 2) (dwctest 3) diff --git a/tests/runtests.sh b/tests/runtests.sh index 74e0e328..50613244 100644 --- a/tests/runtests.sh +++ b/tests/runtests.sh @@ -84,6 +84,15 @@ $interpret -s records-and-setters-test.scm $compile records-and-setters-test.scm ./a.out +echo "======================================== dynamic-wind tests ..." +$interpret -s dwindtst.scm >dwindtst.out +diff -bu dwindtst.expected dwindtst.out +$compile dwindtest.scm +./a.out >dwindtst.out +diff -bu dwindtst.expected dwindtst.out +echo "*** Skipping \"feeley-dynwind\" for now ***" +# $interpret -s feeley-dynwind.scm + echo "======================================== syntax tests ..." $interpret -s syntax-tests.scm @@ -190,8 +199,6 @@ $interpret -s srfi-4-tests.scm echo "======================================== srfi-18 tests ..." $interpret -s srfi-18-tests.scm -echo "*** Skipping \"feeley-dynwind\" for now ***" -# $interpret -s feeley-dynwind.scm echo "======================================== path tests ..." $interpret -bnq path-tests.scmTrap