source: project/release/4/binary-search/tests/run.scm @ 31138

Last change on this file since 31138 was 31138, checked in by felix winkelmann, 6 years ago

added preliminary eggs for extraction from core libraries

File size: 1.0 KB
Line 
1(use 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.