From 279618fde2f0df43d467ca6c8edb94812a6982ef Mon Sep 17 00:00:00 2001 From: Abdulaziz Ghuloum Date: Wed, 10 Dec 2008 03:03:49 -0500 Subject: [PATCH] added simple regression test for guardians. --- scheme/last-revision | 2 +- scheme/run-tests.ss | 2 +- scheme/tests/guardians.ss | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 scheme/tests/guardians.ss diff --git a/scheme/last-revision b/scheme/last-revision index 758f7c9..058fbb1 100644 --- a/scheme/last-revision +++ b/scheme/last-revision @@ -1 +1 @@ -1712 +1713 diff --git a/scheme/run-tests.ss b/scheme/run-tests.ss index ac38dfb..244fe74 100755 --- a/scheme/run-tests.ss +++ b/scheme/run-tests.ss @@ -22,7 +22,7 @@ lists strings bytevectors hashtables fixnums bignums numerics bitwise enums pointers sorting io fasl reader case-folding parse-flonums string-to-number bignum-to-flonum div-and-mod - fldiv-and-mod unicode normalization repl set-position)) + fldiv-and-mod unicode normalization repl set-position guardians)) (define (run-test-from-library x) (printf "[testing ~a] ..." x) diff --git a/scheme/tests/guardians.ss b/scheme/tests/guardians.ss new file mode 100644 index 0000000..1a19b9e --- /dev/null +++ b/scheme/tests/guardians.ss @@ -0,0 +1,36 @@ + +(library (tests guardians) + (export run-tests) + (import (ikarus)) + + (define (test1) + (define (for-each-pair f x) + (when (pair? x) + (f x) + (for-each-pair f (cdr x)))) + + (define n 100) + + (define ls (make-list n)) + + (define g (make-guardian)) + + (for-each-pair g ls) + + (set! ls (cdr ls)) + + (let f ([i 1]) + (unless (= i n) + (collect) + (cond + [(g) => + (lambda (p) + (assert (eq? (cdr p) ls)) + (set! ls (cdr ls)) + (f (+ i 1)))] + [else (f i)]))) + (assert (null? ls))) + + (define (run-tests) + (test1))) +