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"] ]