Cabal-3.4.0.0: tests/UnitTests/Distribution/CabalSpecVersion.hs
{-# LANGUAGE CPP #-}
{-# OPTIONS_GHC -fno-warn-deprecations #-}
module UnitTests.Distribution.CabalSpecVersion (tests) where
import Distribution.Compat.Prelude.Internal
import Prelude ()
import Distribution.CabalSpecVersion
import Distribution.FieldGrammar.Newtypes (SpecVersion (..))
import Distribution.Parsec (eitherParsec)
import Distribution.Pretty (prettyShow)
import Test.Tasty
import Test.Tasty.QuickCheck
-- instances
import Test.QuickCheck.Instances.Cabal ()
tests :: TestTree
tests = testGroup "Distribution.CabalSpecVersion"
[ testProperty "roundtrip" propRoundtrip
, testProperty "fromVersionDigits . toVersionDigits = Just" propViaVersionDigits
]
where
-- we test roundtrip here,
-- because Described instance is a small simplification.
propRoundtrip :: SpecVersion -> Property
propRoundtrip x = counterexample (show (res, str)) $ case res of
Right y -> x == y
Left _ -> False
where
str = prettyShow x
res = eitherParsec str
propViaVersionDigits :: CabalSpecVersion -> Property
propViaVersionDigits csv =
counterexample (show digits) $
lhs === rhs
where
digits = cabalSpecToVersionDigits csv
lhs = cabalSpecFromVersionDigits digits
rhs = Just csv