Additional test case. Somewhat confusing situation. Potential TODO
This commit is contained in:
parent
23c482bb3e
commit
226e909f2a
|
@ -1019,7 +1019,7 @@
|
||||||
['() (void)]
|
['() (void)]
|
||||||
[(list* message expectedstr rest)
|
[(list* message expectedstr rest)
|
||||||
(define actualset (trie-lookup trie message (tset)))
|
(define actualset (trie-lookup trie message (tset)))
|
||||||
(printf "~v ==> ~v\n" message actualset)
|
(printf "~v ==> ~v\n" message (tset->list actualset))
|
||||||
(check-equal? actualset
|
(check-equal? actualset
|
||||||
(apply tset (map (lambda (c) (string->symbol (string c)))
|
(apply tset (map (lambda (c) (string->symbol (string c)))
|
||||||
(string->list expectedstr))))
|
(string->list expectedstr))))
|
||||||
|
@ -1031,6 +1031,27 @@
|
||||||
'foo ""
|
'foo ""
|
||||||
(list (list 'z (list 'z))) "")
|
(list (list 'z (list 'z))) "")
|
||||||
|
|
||||||
|
(let ((t (trie-subtract (pattern->trie SA ?) (pattern->trie SA (list 'a)))))
|
||||||
|
;; I expected this test to fail, because of the way (get) in
|
||||||
|
;; (trie-lookup) returns #f when there is no entry in the treap.
|
||||||
|
;; The choice of #f as sentinel for "no entry" is potentially
|
||||||
|
;; problematic, since it also means "empty trie". However, things
|
||||||
|
;; work out for us because we have the EOS step that saves us!
|
||||||
|
;; This means that when '(a) is presented as a value, at 'a it
|
||||||
|
;; steps to the trie EOS->empty, and then when it steps through
|
||||||
|
;; the EOS it retrieves #f (empty), mistakes it for a sentinel,
|
||||||
|
;; retrieves the wildcard entry, which is also #f, and thus by
|
||||||
|
;; coincidence does the right thing.
|
||||||
|
;;
|
||||||
|
;; TODO: probably the right thing to do is change (get) to return
|
||||||
|
;; e.g. 'missing -- anything not in the domain of tries -- so it
|
||||||
|
;; is unambiguous when a lookup fails.
|
||||||
|
(check-matches t
|
||||||
|
'b "A"
|
||||||
|
'a "A"
|
||||||
|
(list 'b) "A"
|
||||||
|
(list 'a) ""))
|
||||||
|
|
||||||
(define (pretty-print-trie* m)
|
(define (pretty-print-trie* m)
|
||||||
(newline)
|
(newline)
|
||||||
(pretty-print-trie m)
|
(pretty-print-trie m)
|
||||||
|
|
Loading…
Reference in New Issue