module Test.QuickCheck.Classes.Csv ( csvRecordLaws , csvFieldLaws ) where import ClassyPrelude import Test.QuickCheck import Test.QuickCheck.Classes import qualified Data.Csv as Csv import Data.Proxy csvRecordLaws :: forall a. (Arbitrary a, Csv.ToNamedRecord a, Csv.FromNamedRecord a, Eq a, Show a) => Proxy a -> Laws csvRecordLaws _ = Laws "Csv.NamedRecord" [ ("Partial Isomorphism", property $ \(a :: a) -> Csv.runParser (Csv.parseNamedRecord $ Csv.toNamedRecord a) == Right a) ] csvFieldLaws :: forall a. (Arbitrary a, Csv.ToField a, Csv.FromField a, Eq a, Show a) => Proxy a -> Laws csvFieldLaws _ = Laws "Csv.Field" [ ("Partial Isomorphism", property $ \(a :: a) -> Csv.runParser (Csv.parseField $ Csv.toField a) == Right a) ]