Add basic BST tests.

This commit is contained in:
Dominik Pantůček 2023-07-06 21:50:21 +02:00
parent 8d6ca4697c
commit f9a2fdbcdf

View file

@ -22,6 +22,8 @@
;;kvv-filter ;;kvv-filter
;;bst-balance ;;bst-balance
util-bst-tests!
) )
(import scheme (import scheme
@ -29,8 +31,8 @@
testing) testing)
;; Unique tags ;; Unique tags
(define TAG-BST (make-tag 'bst)) (define TAG-BST (make-tag bst))
(define TAG-KVV (make-tag 'kvv)) (define TAG-KVV (make-tag kvv))
(define/doc (make-bst subtag EQ? <?) (define/doc (make-bst subtag EQ? <?)
("Creates empty BST with given comparators") ("Creates empty BST with given comparators")
@ -60,10 +62,35 @@
("Returns #t if given BST is empty.") ("Returns #t if given BST is empty.")
(not (bst-root bst))) (not (bst-root bst)))
;; Wrapper to setup comparators
(define-syntax define-bst-proc
(syntax-rules ()
((_ EQ? <? (name bst . args) expr ...)
(define (name bst . args)
(let ((EQ? (bst-eq? bst))
(<? (bst-<? bst)))
expr ...)))))
;; Module self-tests ;; Module self-tests
(define (util-bst-tests!) (define (util-bst-tests!)
(run-tests (run-tests
util-bst util-bst
(test-equal? make-bst
(make-bst 'fixnum eq? <)
`(,TAG-BST
. ((#f . 0)
. (fixnum . (,eq? . ,<)))))
(test-true bst?
((bst? 'fixnum) (make-bst 'fixnum eq? <)))
(test-false bst?
((bst? 'fixnum) (make-bst 'string eq? <)))
(test-false bst?
((bst? 'fixnum) "string"))
(test-true bst-empty?
(bst-empty? (make-bst 'fixnum eq? <)))
)) ))
) )
(import util-bst)
(util-bst-tests!)