source: project/release/5/binary-search/trunk/tests/run.scm @ 34718

Last change on this file since 34718 was 34718, checked in by sjamaan, 21 months ago

release/5: Replace use by import in eggs

File size: 1.0 KB
Line 
1(import (chicken random) binary-search)
2
3;; fill and search vector
4
5(define count 10000000)
6
7(print "fill vector")
8
9(define seq (make-vector count))
10
11(do ((i 0 (add1 i)))
12    ((>= i count))
13  (vector-set! seq i i))
14
15(define ((compare x) y) (- x y))
16
17(print "search vector")
18
19(time
20 (do ((i 0 (add1 i)))
21     ((>= i 10000))
22   (let ((j (random count)))
23     (assert (= j (binary-search seq (compare j)))))))
24
25(print "failing search of vector")
26(assert (not (binary-search seq (compare -3))))
27
28;; same for list
29
30(print "search list")
31
32(let ((lst (vector->list seq)))
33  (time
34   (do ((i 0 (add1 i)))
35       ((>= i 10))
36     (let ((j (random count)))
37       (assert (= j (binary-search lst (compare j)))))))
38  (print "failing search of list")
39  (assert (not (binary-search lst (compare -3)))))
40
41;; abstract sequence
42
43(define (square x) (* x x))
44
45(print "search abstract sequence")
46(time
47 (do ((i 0 (add1 i)))
48     ((>= i 10000))
49   (let* ((j (random count))
50          (k (square j)))
51     (assert (= j (binary-search
52                   count
53                   (lambda (x) (- k (square x)))))))))
Note: See TracBrowser for help on using the repository browser.