37 lines
915 B
Haskell
37 lines
915 B
Haskell
module Test.Data.Email.Header where
|
|
|
|
import Test.Tasty
|
|
import Test.Tasty.Hedgehog
|
|
|
|
import Hedgehog
|
|
import qualified Hedgehog.Corpus as Corpus
|
|
import qualified Hedgehog.Gen as Gen
|
|
import qualified Hedgehog.Range as Range
|
|
|
|
import Data.Text
|
|
import qualified Data.Vector as V
|
|
|
|
import Data.Email.Header
|
|
|
|
genHeader :: Gen Header
|
|
genHeader = Gen.choice
|
|
[ From <$> genEmail
|
|
, To . V.fromList <$> Gen.list (Range.linear 0 10) genEmail
|
|
]
|
|
where
|
|
genEmail :: Gen Text
|
|
genEmail = do
|
|
name <- Gen.element Corpus.simpsons
|
|
domain <- Gen.element Corpus.cooking
|
|
tld <- Gen.element ["com","fi","org"]
|
|
pure $ name <> "@" <> domain <> "." <> tld
|
|
|
|
prop_roundtrip_parse :: Property
|
|
prop_roundtrip_parse = property $ do
|
|
header <- forAll genHeader
|
|
tripping header encode decode
|
|
|
|
tests :: TestTree
|
|
tests = testGroup "Data.Email.Header"
|
|
[ testProperty "roundtrip property" $ prop_roundtrip_parse ]
|