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