diff --git a/lib/chibi/memoize-test.sld b/lib/chibi/memoize-test.sld index 14eb243a..b7ae94ec 100644 --- a/lib/chibi/memoize-test.sld +++ b/lib/chibi/memoize-test.sld @@ -1,6 +1,13 @@ (define-library (chibi memoize-test) (export run-tests) - (import (scheme base) (scheme file) (chibi memoize) (chibi test)) + (import (scheme base) + (scheme file) + (chibi filesystem) + (chibi memoize) + (chibi pathname) + (chibi process) + (chibi temp-file) + (chibi test)) (begin (define (run-tests) (test-begin "memoize") @@ -39,13 +46,44 @@ (test 9 (f 3)) (test 1 n))) - (letrec ((fib (lambda (n) - (if (<= n 1) - 1 - (+ (fib (- n 1)) (fib (- n 2))))))) - (let ((f (memoize-to-file fib 'memo-dir: "/tmp/memo.d/"))) - (test 89 (f 10)) - (test-assert (file-exists? "/tmp/memo.d/10.memo")) - (test 89 (f 10)))) + (let ((calls 0)) + (letrec ((fib (lambda (n) + (set! calls (+ calls 1)) + (if (<= n 1) + 1 + (+ (fib (- n 1)) (fib (- n 2))))))) + (call-with-temp-dir + "memo.d" + (lambda (dir preserve) + (let ((f (memoize-to-file fib 'memo-dir: dir))) + (test 89 (f 10)) + (test 177 calls) + ;; (test-assert (file-exists? (make-path dir "%2810%29.memo"))) + (test 89 (f 10)) + (test 177 calls)))))) + + (call-with-temp-file + "tmp-file" + (lambda (tmp-file out preserve) + (write-string "123" out) + (close-output-port out) + (let ((calls 0)) + (let ((fast-file-size + (memoize-file-loader + (lambda (file) + (set! calls (+ calls 1)) + (file-size file))))) + (test 3 (fast-file-size tmp-file)) + (test 1 calls) + (test 3 (fast-file-size tmp-file)) + (test 1 calls) + (sleep 1) + (call-with-output-file tmp-file + (lambda (out) (write-string "1234" out))) + (test 4 (fast-file-size tmp-file)) + (test 2 calls) + (test 4 (fast-file-size tmp-file)) + (test 2 calls) + )))) (test-end))))