Adding memoize-file-loader test.

This commit is contained in:
Alex Shinn 2024-05-13 22:06:19 +09:00
parent f25329b5aa
commit 6ae3a43ee7

View file

@ -1,6 +1,13 @@
(define-library (chibi memoize-test) (define-library (chibi memoize-test)
(export run-tests) (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 (begin
(define (run-tests) (define (run-tests)
(test-begin "memoize") (test-begin "memoize")
@ -39,13 +46,44 @@
(test 9 (f 3)) (test 9 (f 3))
(test 1 n))) (test 1 n)))
(letrec ((fib (lambda (n) (let ((calls 0))
(if (<= n 1) (letrec ((fib (lambda (n)
1 (set! calls (+ calls 1))
(+ (fib (- n 1)) (fib (- n 2))))))) (if (<= n 1)
(let ((f (memoize-to-file fib 'memo-dir: "/tmp/memo.d/"))) 1
(test 89 (f 10)) (+ (fib (- n 1)) (fib (- n 2)))))))
(test-assert (file-exists? "/tmp/memo.d/10.memo")) (call-with-temp-dir
(test 89 (f 10)))) "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)))) (test-end))))