[racket-dev] check-match?

From: Robby Findler (robby at eecs.northwestern.edu)
Date: Mon Nov 19 20:25:45 EST 2012

I think you should just stick "(except @racket[check-<whatever>],
since its first/second argument is a match pattern)" or something like
that into the docs in your pull request.

Also test cases: I think there is a test suite for rackunit somewhere;
let me know if you have trouble with it and I can add tests.

Robby

On Mon, Nov 19, 2012 at 7:20 PM, Joe Gibbs Politz <joe at cs.brown.edu> wrote:
>> 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
>>>
>

Posted on the dev mailing list.