Skip to content

Instantly share code, notes, and snippets.

@dcorking
Created October 10, 2013 12:48
Show Gist options
  • Save dcorking/6917785 to your computer and use it in GitHub Desktop.
Save dcorking/6917785 to your computer and use it in GitHub Desktop.
Is this number of "white-box" tests overkill? I see that even with 6 tests, I forgot to test the base case. It is a binary search tree insert function, from Module 6a of the Systematic Program Design MOOC by Gregor Kiczales.
(define BST0 false)
(define BST1 (make-node 1 "abc" false false))
(define BST4 (make-node 4 "dcj" false (make-node 7 "ruf" false false)))
(define BST3 (make-node 3 "ilk" BST1 BST4))
(define BST42
(make-node 42 "ily"
(make-node 27 "wit" (make-node 14 "olp" false false) false)
false))
(define BST10 (make-node 10 "why" BST3 BST42))
(check-expect (insert 43 "ygh" BST42) ; top-right
(make-node 42 "ily"
(make-node 27 "wit"
(make-node 14 "olp" false false)
false)
(make-node 43 "ygh" false false)))
(check-expect (insert 2 "uvw" BST10) ; left-left-right
(make-node 10 "why"
(make-node 3 "ilk"
(make-node 1 "abc"
false
(make-node 2 "uvw" false false))
BST4)
BST42)) ;
(check-expect (insert 37 "ijk" BST10) ; right-left-right
(make-node 10 "why"
BST3
(make-node 42 "ily"
(make-node 27 "wit"
(make-node 14 "olp" false false)
(make-node 37 "ijk" false false))
false)))
(check-expect (insert 2 "uvw"
(make-node 3 "ilk" false BST4)) ; top-left
(make-node 3 "ilk"
(make-node 2 "uvw" false false)
BST4))
(check-expect (insert 5 "uvw" ; right-right-left
(make-node 3 "ilk"
(make-node 1 "abc" false false)
(make-node 6 "bcd"
false
(make-node 7 "ruf" false false))))
(make-node 3 "ilk"
(make-node 1 "abc" false false)
(make-node 6 "bcd"
(make-node 5 "uvw" false false)
(make-node 7 "ruf" false false))))
(check-expect (insert 29 "hat" ; right-left-left
(make-node 10 "why"
BST3
(make-node 42 "ily"
(make-node 35 "oxo" false false)
(make-node 51 "bui" false false))))
(make-node 10 "why"
BST3
(make-node 42 "ily"
(make-node 35 "oxo"
(make-node 29 "hat" false false)
false)
(make-node 51 "bui" false false))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment