Matthew | 7 Aug 2012 20:18
Picon

Re: HUnit and table-driven tests

On Tue, Aug 7, 2012 at 12:51 AM, Dean Herington
<heringtonlacey <at> mindspring.com> wrote:
> At 4:30 PM -0700 8/5/12, Matthew wrote:
>>
>> On Sun, Aug 5, 2012 at 12:32 AM, Henk-Jan van Tuyl <hjgtuyl <at> chello.nl>
>> wrote:
>>>
>>>  On Sun, 05 Aug 2012 03:21:39 +0200, Matthew <wonderzombie <at> gmail.com>
>>> wrote:
>>>
>>>>  I've got a function which takes in two chars, describing a playing
>>>>  card and a suit. An example would be 4C or TH for a 4 of Clubs or a
>>>>  Ten of Hearts. I need to be able to compare the ranks of a card (e.g.
>>>>  a King is 13), so a Card is a tuple of rank and suit. The function
>>>>  which parses a Card is type String -> Maybe Card.
>>>>
>>>>  I'm writing unit tests for this using HUnit, and ideally I'd go with a
>>>>  table-driven[1] approach, where each test case is a tuple of the input
>>>>  and the expected output. (Possibly I could expand this to a triple, or
>>>>  simply a list, to allow for an error message for each test case.) Then
>>>>  all the test function has to do is run through each case and assert as
>>>>  necessary. Example: [("TH", Just (Hearts, 10)), ("XH", Nothing)].
>>>
>>>
>>>
>>>  A simple solution:
>>>
>>>>  parseCard :: String -> Maybe Card
>>>>  parseCard string = <your function to test>
>>>>  test :: Bool
(Continue reading)


Gmane