packages feed

hunit-gui-0.1.2: tests/DescriptionsTests.hs

module DescriptionsTests (tests)
where

import Test.HUnit.Base

import Test.HUnit.Gui.Descriptions

tests :: Test
tests = test $ describeErrorTests ++ describeFailureTests ++ describePathTests

describeErrorTests :: [Test]
describeErrorTests = 
    [ "describeError when you don't know the path" ~:
      "blah blah blah" ~=? describeError "blah blah blah" (State [] undefined)
    , "describeError when you do know the path" ~:
      "the label (2:11):\nblah blah blah" ~=? describeError "blah blah blah" (State [Label "the label", ListItem 11, ListItem 2] undefined)
    ]

describeFailureTests :: [Test]
describeFailureTests =
    [ "describeFailure when you don't know the path" ~:
      "blah blah blah" ~=? describeFailure "blah blah blah" (State [] undefined)
    , "describeFailure when you do know the path" ~:
      "the label (2:11):\nblah blah blah" ~=? describeFailure "blah blah blah" (State [Label "the label", ListItem 11, ListItem 2] undefined)
    ]

describePathTests :: [Test]
describePathTests =
    [ "describe labelless path" ~: "3:5:1" ~=? (describePath $ map ListItem [1,5,3])
    , "describe empty path" ~: "?" ~=? (describePath [])
    , "if there's a label in the path, it gets priority" ~:
      "apples and pears (3:5:1)" ~=? describePath [ListItem 1, Label "apples and pears", ListItem 5, ListItem 3]
    , "multiple labels are joined together" ~:
      "apples:pears:bananas (3:5:1)" ~=? describePath [ListItem 1, Label "bananas", ListItem 5, ListItem 3, Label "pears", Label "apples"]
    , "labels with ':'s in them are quoted" ~:
      "'ratio should be 1:3':apples (5)" ~=? describePath [ListItem 5, Label "apples", Label "ratio should be 1:3"]
    , "quoted labels have their apostrophes escaped" ~:
      "'grocery\\'s ratio should be 1:3' (5)" ~=? describePath [ListItem 5, Label "grocery's ratio should be 1:3"]
    ]