integer-types-0.1.4.0: test/Spec/SubtractOne.hs
module Spec.SubtractOne where
import Essentials
import Integer (Positive, Signed)
import Integer.Gen qualified as Gen
import Integer.Positive qualified as Positive
import Integer.Signed qualified as Signed
import Test.Hspec (Spec, context, it)
import Test.Hspec.Hedgehog (forAll, hedgehog, modifyMaxSuccess, (===))
import Prelude (toInteger, (-))
spec :: Spec
spec =
context "subtractOne in A behaves the same as (- 1) in Integer" do
modifyMaxSuccess (\_ -> 1000) do
it "A = Positive" $ hedgehog do
x :: Positive <- forAll Gen.integral
toInteger (Positive.subtractOne x) === toInteger x - 1
it "A = Signed" $ hedgehog do
x :: Signed <- forAll Gen.integral
toInteger (Signed.subtractOne x) === toInteger x - 1