Skip to content

Commit 3991af7

Browse files
committed
Add test for solution 2-66
1 parent f5f768b commit 3991af7

File tree

1 file changed

+37
-3
lines changed

1 file changed

+37
-3
lines changed

chapter2/exercise2-66.scm

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,41 @@
1313

1414
(define (look-up given-key set-of-records)
1515
(cond ((null? set-of-records) #f)
16-
((equal? given-key (key (entry set-of-records)))
16+
((= given-key (key set-of-records))
1717
(entry set-of-records))
18-
(else (and (look-up given-key (left-branch set-of-records))
19-
(look-up given-key (right-branch set-of-records))))))
18+
((< given-key (key set-of-records))
19+
;; 查找左子树
20+
(look-up given-key (left-branch set-of-records)))
21+
(else
22+
;; 查找右子树
23+
(look-up given-key (right-branch set-of-records)))))
24+
25+
(module+ test
26+
(require rackunit)
27+
;; 5
28+
;; 3 8
29+
;; 1 4 6 9
30+
(define tree
31+
'(5 "data5"
32+
(3 "data3"
33+
(1 "data1" () ())
34+
(4 "data4" () ()))
35+
(8 "data8"
36+
(6 "data6" () ())
37+
(9 "data9" () ()))))
38+
39+
(test-case "Test for look-up existing key"
40+
(check-equal? (look-up 3 tree) "data3")
41+
(check-equal? (entry '(6 "data6" () ())) "data6")
42+
)
43+
(test-case "Test for non-exist key"
44+
(check-false (look-up 100 tree))
45+
)
46+
47+
(test-case "Test for edge case"
48+
(define empty-tree '())
49+
(check-false (look-up 5 empty-tree))
50+
(define root '(5 "root" () ()))
51+
(check-equal? (look-up 5 root) "root" )
52+
)
53+
)

0 commit comments

Comments
 (0)