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 ]