agora/agora-specs/Property/Utils.hs
2023-01-27 00:35:46 +08:00

39 lines
962 B
Haskell

module Property.Utils (props) where
import Agora.Utils (phashDatum)
import Cardano.Prelude (ByteString)
import Plutarch.Api.V2 (datumHash)
import Plutarch.Test.QuickCheck (
Equality (OnPEq),
Partiality (ByComplete),
haskEquiv',
)
import Plutarch.Test.QuickCheck.Instances ()
import PlutusCore.Data (Data (B))
import PlutusLedgerApi.V1 (Datum (Datum))
import PlutusLedgerApi.V2 (BuiltinData (BuiltinData), DatumHash)
import Test.Tasty (TestTree, adjustOption)
import Test.Tasty.QuickCheck (
Property,
QuickCheckTests,
testProperty,
)
propHashDatumCorrect :: Property
propHashDatumCorrect =
haskEquiv'
@'OnPEq
@'ByComplete
hashDatum
phashDatum
where
hashDatum :: ByteString -> DatumHash
hashDatum = datumHash . Datum . BuiltinData . B
props :: [TestTree]
props =
[ adjustOption go $ testProperty "Correct 'phashDatum'" propHashDatumCorrect
]
where
go :: QuickCheckTests -> QuickCheckTests
go = max 20_000