packages feed

hquery-0.1.0.0: tests/ParserTests.hs

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

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

import Text.Parsec
import Text.Parsec.Error

import Text.Hquery
import Text.Hquery.Utils
import Text.Hquery.Internal.Selector

tests :: [(String, (CssSel, Maybe AttrSel))]
tests = [ ("div", (Elem "div", Nothing))
        , (".elt", (Class "elt", Nothing))
        , (".elt *", (Class "elt", Just CData))
        , (".elt [class+]", (Class "elt", Just $ AttrSel "class" Append))
        , (".elt [class]", (Class "elt", Just $ AttrSel "class" Set))
        ]

makeTest :: (String, (CssSel, Maybe AttrSel)) -> Test
makeTest (sel, expected) = do
  let errorToString e = Left (unwords (map messageString (errorMessages e)))
      result = either errorToString Right (parse commandParser "" sel)
  testCase sel (assertEqual sel (Right expected) result)

main :: IO ()
main = defaultMain (map makeTest tests)