{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE CPP #-} #if !MIN_VERSION_base(4,8,0) import Control.Applicative #endif import Test.Tasty import Test.Tasty.HUnit import qualified Data.ByteString as S import qualified Data.ByteString.Lazy as L import Text.XML.Pugi main :: IO () main = defaultMain tests testAStr :: S.ByteString testAStr = "quuxhoge]]>" testA :: Document testA = either undefined id $ parse def { parseFlags = parseFull } testAStr tests :: TestTree tests = testGroup "Tests" [ parsePretty , immutable ] parsePretty :: TestTree parsePretty = testGroup "Parse/Pretty" [ testCase "testA" $ pp testAStr @?= L.fromStrict testAStr ] where pp s = either undefined (pretty def {prettyFlags = formatRaw} ) $ parse def { parseFlags = parseFull } s immutable :: TestTree immutable = testGroup "Immutable" [ immutableTestAFoo ] immutableTestAFoo :: TestTree immutableTestAFoo = testGroup "TestA/foo" [ testCase "parent.child == id" $ Just node @?= (child "bar" node >>= parent) , testCase "prevSibling.nextSibling == id" $ Just node @?= (nextSibling node >>= prevSibling) , testCase "asNode == id" $ node @?= asNode node , testCase "getName.firstChild == \"bar\"" $ (getName <$> firstChild node) @?= Just "bar" , testCase "getName.lastChild == \"piyo\"" $ (getName <$> lastChild node) @?= Just "piyo" , testCase "path == \"/foo\"" $ path '/' node @?= "/foo" , testCase "root == parent" $ root node @?= parent node ] where Just node = child "foo" testA