This repository has been archived on 2024-10-24. You can view files and clone it, but cannot push or open issues or pull requests.
fradrive-old/test/Test/QuickCheck/Classes/Csv.hs
2022-10-12 09:35:16 +02:00

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)
]