packages feed

hquery-0.1.0.0: tests/UtilsTests.hs

{-# LANGUAGE OverloadedStrings #-}
module Main (main) where

import qualified Data.Text as T

import Test.Framework ( defaultMain, Test )
import Test.Framework.Providers.HUnit
import Test.HUnit hiding (Node, Test)

import Text.Hquery
import Text.Hquery.Utils

import Text.XmlHtml

elt :: T.Text -> [(T.Text, T.Text)] -> [Node] -> Node
elt tag attrs kids = Element { elementTag = tag
                             , elementAttrs = attrs
                             , elementChildren = kids
                             }

mkDiv :: [Node] -> Node
mkDiv = elt "div" []

nodeEqTests :: [(Node, Node, Bool)]
nodeEqTests = [ (TextNode "foo", TextNode "foo", True)
              , (Comment "foo", Comment "foo", True)
              , (TextNode "foo", TextNode "bar", False)
              , (Comment "foo", Comment "bar", False)
              , (TextNode "foo", Comment "foo", False)
              , (mkDiv [TextNode "foo"], mkDiv [TextNode "foo"], True)
              , (mkDiv [TextNode "bar"], mkDiv [TextNode "foo"], False)
              , (mkDiv [mkDiv []], mkDiv [mkDiv []], True)
              , (mkDiv [mkDiv [TextNode "foo"]], mkDiv [mkDiv [TextNode "bar"]], False)
              , (mkDiv [mkDiv [TextNode "foo"]], mkDiv [], False)
              ]

main :: IO ()
main =
  let makeEqNodeTest (n1, n2, t) =
        let eq1 = EqNode n1
            eq2 = EqNode n2
            str = (show n1) ++ " == " ++ (show n2)
        in testCase "nodeEqTestcase" (assertEqual str t (eq1 == eq2))
      nodeTests = map makeEqNodeTest nodeEqTests
  in defaultMain nodeTests