Initial email header parsing
This commit is contained in:
36
test/Test/Data/Email/Header.hs
Normal file
36
test/Test/Data/Email/Header.hs
Normal file
@ -0,0 +1,36 @@
|
||||
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 ]
|
Reference in New Issue
Block a user