[racket-dev] check-match?

From: Joe Gibbs Politz (joe at cs.brown.edu)
Date: Mon Nov 19 16:22:05 EST 2012

A small suggestion:

I used roughly this macro (credit Jonah Kagan) recently to help me write
some tests for parsing code that agnostic to which source position is
generated in the parse:

(define-syntax test/match
  (syntax-rules ()
    [(test/match actual expected pred)
     (let ([actual-val actual])
       (with-check-info* (list (make-check-actual actual-val)
                               (make-check-expected 'expected))
                         (thunk (check-true (match actual-val
                                                [expected pred]
                                                [_ false])))))]

    [(test/match actual expected)
     (test/match actual expected true)]))

Shriram remarked that he was surprised some sort of check-match wasn't in
rackunit already.  Is it worth adding something like this?

I'm doing things like:

(test/match (parse "5 'foo'") (s-block _ (list (s-num _ 5) (s-str _
"foo"))))

Where the structs s-block, s-num, and s-str all expect a srcloc as their
first argument, but I don't care about it for these tests.

The actual use is at:

https://github.com/brownplt/pyret-lang/blob/master/src/tests/parse-tests.rkt#L36

That file would be much, much uglier without this macro.

Cheers,
Joe P.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/dev/archive/attachments/20121119/b2417b55/attachment.html>

Posted on the dev mailing list.