Skip to content

Commit

Permalink
Merge pull request #5002 from input-output-hk/newhoggy/scriptDataSeri…
Browse files Browse the repository at this point in the history
…alisation

Script data serialisation
  • Loading branch information
newhoggy committed Mar 30, 2023
2 parents 541e7b9 + 9b8e749 commit 2452adc
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 2 deletions.
9 changes: 8 additions & 1 deletion cardano-api/gen/Test/Gen/Cardano/Api/Typed.hs
Expand Up @@ -238,14 +238,21 @@ genScriptData =
, ScriptDataBytes <$> genByteString
]
-- The Gen.recursive combinator calls these with the size halved
[ ScriptDataConstructor <$> genInteger
[ ScriptDataConstructor <$> genConstructorInteger
<*> genScriptDataList
, ScriptDataList <$> genScriptDataList
, ScriptDataMap <$> genScriptDataMap
]
where
genInteger :: Gen Integer
genInteger = Gen.integral
(Range.linear
(-fromIntegral (maxBound :: Word64) :: Integer)
(2 * fromIntegral (maxBound :: Word64) :: Integer))


genConstructorInteger :: Gen Integer
genConstructorInteger = Gen.integral
(Range.linear
0 -- TODO: Alonzo should be -> (-fromIntegral (maxBound :: Word64) :: Integer)
-- Wrapping bug needs to be fixed in Plutus library
Expand Down
2 changes: 1 addition & 1 deletion cardano-api/src/Cardano/Api/ScriptData.hs
Expand Up @@ -270,7 +270,7 @@ validateScriptData d =
--
newtype ScriptDataRangeError =

-- | The number is outside the maximum range of @-2^64-1 .. 2^64-1@.
-- | The constructor number is outside the maximum range of @-2^64-1 .. 2^64-1@.
--
ScriptDataConstructorOutOfRange Integer
deriving (Eq, Show)
Expand Down
5 changes: 5 additions & 0 deletions cardano-api/test/Test/Cardano/Api/Typed/CBOR.hs
Expand Up @@ -147,6 +147,10 @@ prop_roundtrip_script_PlutusScriptV2_CBOR =
roundtrip_CBOR (AsScript AsPlutusScriptV2)
(genScript (PlutusScriptLanguage PlutusScriptV2))

prop_roundtrip_ScriptData_CBOR :: Property
prop_roundtrip_ScriptData_CBOR =
roundtrip_CBOR AsHashableScriptData genHashableScriptData

prop_roundtrip_UpdateProposal_CBOR :: Property
prop_roundtrip_UpdateProposal_CBOR =
roundtrip_CBOR AsUpdateProposal genUpdateProposal
Expand Down Expand Up @@ -216,6 +220,7 @@ tests = testGroup "Test.Cardano.Api.Typed.CBOR"
, testPropertyNamed "roundtrip script PlutusScriptV1 CBOR" "roundtrip script PlutusScriptV1 CBOR" prop_roundtrip_script_PlutusScriptV1_CBOR
, testPropertyNamed "roundtrip script PlutusScriptV2 CBOR" "roundtrip script PlutusScriptV2 CBOR" prop_roundtrip_script_PlutusScriptV2_CBOR
, testPropertyNamed "roundtrip UpdateProposal CBOR" "roundtrip UpdateProposal CBOR" prop_roundtrip_UpdateProposal_CBOR
, testPropertyNamed "roundtrip ScriptData CBOR" "roundtrip ScriptData CBOR" prop_roundtrip_ScriptData_CBOR
, testGroup "roundtrip txbody CBOR" test_roundtrip_txbody_CBOR
, testGroup "roundtrip tx CBOR" test_roundtrip_tx_CBOR
, testGroup "roundtrip Tx Cddl" test_roundtrip_Tx_Cddl
Expand Down
7 changes: 7 additions & 0 deletions cardano-api/test/Test/Cardano/Api/Typed/Script.hs
Expand Up @@ -116,6 +116,12 @@ prop_roundtrip_ScriptData =
sData <- H.forAll genHashableScriptData
sData === fromAlonzoData (toAlonzoData sData)

prop_roundtrip_HashableScriptData_JSON :: Property
prop_roundtrip_HashableScriptData_JSON =
H.property $ do
sData <- H.forAll genHashableScriptData
H.tripping sData scriptDataToJsonDetailedSchema scriptDataFromJsonDetailedSchema

-- -----------------------------------------------------------------------------

tests :: TestTree
Expand All @@ -128,4 +134,5 @@ tests = testGroup "Test.Cardano.Api.Typed.Script"
, testPropertyNamed "golden SimpleScriptV2 MofN" "golden SimpleScriptV2 MofN" prop_golden_SimpleScriptV2_MofN
, testPropertyNamed "roundtrip SimpleScript JSON" "roundtrip SimpleScript JSON" prop_roundtrip_SimpleScript_JSON
, testPropertyNamed "roundtrip ScriptData" "roundtrip ScriptData" prop_roundtrip_ScriptData
, testPropertyNamed "roundtrip HashableScriptData" "roundtrip HashableScriptData" prop_roundtrip_HashableScriptData_JSON
]

0 comments on commit 2452adc

Please sign in to comment.