packages feed

xml-isogen-0.2.1: test/Main.hs

{-# OPTIONS -fno-warn-unused-imports #-}
module Main where

import Control.Exception
import Text.XML
import Data.Default
import System.IO.Unsafe
import Test.Hspec
import Test.Hspec.QuickCheck
import Test.QuickCheck
import TestDefs
import Text.XML.DOM.Parser
import Text.XML.Writer

isomorphicFoo :: XmlRoot -> Property
isomorphicFoo a = a === isogen
  where
    isogen :: XmlRoot
    isogen =
      let
        doc = document "Root" $ toXML a
        res = case runDomParser doc fromDom of
          Left e -> unsafePerformIO $ do
            pprint doc
            throwIO e
          Right a' -> a'
      in res

main :: IO ()
main = hspec $ do
  prop "isomorphic" isomorphicFoo