{-# LANGUAGE OverloadedStrings #-} module XML.Canonical (tests) where import qualified Data.ByteString as BS import qualified Test.HUnit as U import qualified Text.XML.HXT.Core as HXT import SAML2.XML.Canonical canonicalizeXML :: CanonicalizationAlgorithm -> String -> Bool -> IO [BS.ByteString] canonicalizeXML c f ent = HXT.runX $ (HXT.readDocument [HXT.withCheckNamespaces HXT.yes, HXT.withValidate HXT.no, HXT.withCanonicalize HXT.no, HXT.withSubstDTDEntities ent] f HXT.>>> HXT.arrIO (canonicalize c Nothing Nothing)) testC14N :: CanonicalizationAlgorithm -> String -> Bool -> BS.ByteString -> U.Test testC14N c f ent s = U.TestCase $ U.assertEqual (show c ++ ' ' : f) [s] =<< canonicalizeXML c f ent tests :: U.Test tests = U.test [ testC14N (CanonicalXML10 False) "test/XML/noncanonical1.xml" False "\nHello, world!\n" , testC14N (CanonicalXML10 True) "test/XML/noncanonical1.xml" False "\nHello, world!\n\n\n" , testC14N (CanonicalXML10 False) "test/XML/noncanonical2.xml" False "\n \n A B \n \n A\n \n B\n A B \n C\n \n" , testC14N (CanonicalXML10 False) "test/XML/noncanonical3.xml" False "\n \n \n \n \n \n \n \n \n \n \n \n \n" , testC14N (CanonicalXML10 False) "test/XML/noncanonical4.xml" False "\n First line \nSecond line\n 2\n value>\"0\" && value<\"10\" ?\"valid\":\"error\"\n "0" && value<"10" ?"valid":"error"\">valid\n \n \n \n" , testC14N (CanonicalXML10 False) "test/XML/noncanonical5.xml" True "\n Hello, world!\n" , testC14N (CanonicalXML10 False) "test/XML/noncanonical6.xml" False "\194\169" -- , testC14N (CanonicalXML10 False) "test/XML/noncanonical7.xml" ]