From 616630f862aff482a3c59278aba1e0beb7fe0d55 Mon Sep 17 00:00:00 2001 From: Jon Rafkind Date: Tue, 30 Jun 2009 20:55:06 +0000 Subject: [PATCH] add test svn: r15343 --- collects/honu/private/util.ss | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/collects/honu/private/util.ss b/collects/honu/private/util.ss index 78d1d64ca5..5c792dd99e 100644 --- a/collects/honu/private/util.ss +++ b/collects/honu/private/util.ss @@ -5,8 +5,8 @@ (require syntax/stx) - (define (delim-identifier=? a b) - (eq? (syntax-e a) (syntax-e b))) + (define (delim-identifier=? a b) + (eq? (syntax-e a) (syntax-e b))) (define extract-until (case-lambda @@ -26,6 +26,29 @@ (stx-car r))] [else (loop (stx-cdr r) (cons (stx-car r) val-stxs))]))] - [(r ids) (extract-until r ids #f)]))) + [(r ids) (extract-until r ids #f)])) - + (define (test) + (let* ([original #'(a b c d e)] + [delimiter #'c] + [expected-before #'(a b)] + [expected-rest #'(c d e)] + [expected-delimiter #'c] + ) + (let-values ([(before rest hit) (extract-until original (list delimiter))]) + ;; is there a better way to test equality between two syntaxes? + (when (not (and (equal? (syntax-object->datum expected-before) + (map syntax-object->datum before)) + (equal? (syntax-object->datum expected-rest) + (map syntax-object->datum rest)) + (equal? (syntax-object->datum expected-delimiter) + (syntax-object->datum hit)))) + (printf "failure: original ~a until ~a\n" (syntax-object->datum original) (map syntax-object->datum (list delimiter))) + (printf " before expected ~a actual ~a\n" (syntax-object->datum expected-before) (map syntax-object->datum before)) + (printf " rest expected ~a actual ~a\n" (syntax-object->datum expected-rest) (map syntax-object->datum rest)) + (printf " delimiter expected ~a actual ~a\n" (syntax-object->datum expected-delimiter) (syntax-object->datum hit)) + )))) + + (test) + + )