mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-18 21:29:19 +02:00
Adding memoize-file-loader test.
This commit is contained in:
parent
f25329b5aa
commit
6ae3a43ee7
1 changed files with 47 additions and 9 deletions
|
@ -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))))
|
||||
|
|
Loading…
Add table
Reference in a new issue