[racket-dev] check-match?

From: David Van Horn (dvanhorn at ccs.neu.edu)
Date: Mon Nov 19 19:31:54 EST 2012

I written things like this before, so something built-in would be useful 
to me too.

David


On 11/19/12 5:01 PM, 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
>
>
>
> _________________________
>    Racket Developers list:
>    http://lists.racket-lang.org/dev
>


Posted on the dev mailing list.