25 lines
870 B
Haskell
25 lines
870 B
Haskell
-- SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>
|
|
--
|
|
-- SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
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)
|
|
]
|