Upd: add tests, but they work

This commit is contained in:
Aleksey Uimanov 2017-10-24 13:11:34 +05:00
parent 4340262a85
commit 6e11429d3d
6 changed files with 76 additions and 9 deletions

View File

@ -5,3 +5,4 @@ packages:
extra-deps:
- dom-parser-3.0.0
- generic-arbitrary-0.1.0

View File

@ -5,3 +5,4 @@ packages:
extra-deps:
- dom-parser-3.0.0
- generic-arbitrary-0.1.0

View File

@ -5,3 +5,4 @@ packages:
extra-deps:
- dom-parser-3.0.0
- generic-arbitrary-0.1.0

View File

@ -1,7 +1,31 @@
{-# 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 = return ()
main = hspec $ do
prop "isomorphic" isomorphicFoo

View File

@ -1,12 +1,14 @@
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
{-# OPTIONS -ddump-splices #-}
module TestDefs where
import Data.List.NonEmpty
import Data.THGen.XML
import GHC.Generics (Generic)
import Test.QuickCheck.Arbitrary.Generic
import Test.QuickCheck.Instances ()
"Bar" =:= enum
& "baroque"
@ -25,3 +27,23 @@ import Data.THGen.XML
+ "Bar"
? "Baz" [t|Text|]
!% "Quux"
?% "Muux" [t|XmlQuux|]
"Root" =:= record
! "Foo"
deriving instance Generic XmlRoot
instance Arbitrary XmlRoot where
arbitrary = genericArbitrary
shrink = genericShrink
deriving instance Generic XmlFoo
instance Arbitrary XmlFoo where
arbitrary = genericArbitrary
shrink = genericShrink
instance Arbitrary (NonEmpty XmlBar) where
arbitrary = genericArbitrary
shrink = genericShrink

View File

@ -45,17 +45,35 @@ library
hs-source-dirs: src
default-language: Haskell2010
default-extensions: TemplateHaskell
LambdaCase
FlexibleInstances
TypeFamilies
TupleSections
default-extensions: FlexibleInstances
, LambdaCase
, TemplateHaskell
, TupleSections
, TypeFamilies
test-suite spec
type: exitcode-stdio-1.0
hs-source-dirs: test
main-is: Main.hs
other-modules: TestDefs
build-depends: base, xml-isogen
build-depends: base
, QuickCheck
, data-default
, dom-parser
, generic-arbitrary
, hspec
, quickcheck-instances
, semigroups
, xml-conduit
, xml-conduit-writer
, xml-isogen
default-language: Haskell2010
default-extensions: DeriveGeneric
, FlexibleInstances
, LambdaCase
, OverloadedStrings
, StandaloneDeriving
, TemplateHaskell
, TupleSections
, TypeFamilies
ghc-options: -Wall -fno-warn-missing-signatures