[racket-dev] check-match?

From: Joe Gibbs Politz (joe at cs.brown.edu)
Date: Mon Nov 19 20:20:12 EST 2012

> Yeah, that is very nice! (It should begin with "check" not "test" tho,
right?)

Indeed; Jonah was writing w.r.t plai, which uses test.  Should use check-
in rackunit.

I noticed that this also violates, from the rackunit docs:

"Although checks are implemented as macros, which is necessary to grab
source location, they are conceptually functions. This means, for instance,
checks always evaluate their arguments."

I suppose this should go in a separate section of "additional checks" or
some such?


On Mon, Nov 19, 2012 at 8:01 PM, Robby Findler
<robby at eecs.northwestern.edu>wrote:

> Yeah, that is very nice! (It should begin with "check" not "test" tho,
> right?)
>
> Robby
>
>
> On Monday, November 19, 2012, Matthias Felleisen wrote:
>
>>
>> That is cute. Why don't you just create a pull request and Ryan can
>> integrate it into rackunit? -- Matthias
>>
>>
>>
>>
>>
>> On Nov 19, 2012, at 4:22 PM, Joe Gibbs Politz wrote:
>>
>> > 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.
>> >
>> > _________________________
>> >  Racket Developers list:
>> >  http://lists.racket-lang.org/dev
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/dev/archive/attachments/20121119/31d45251/attachment-0001.html>

Posted on the dev mailing list.