From b14e4aeacd540417b08e6f870dd69714e7fdd037 Mon Sep 17 00:00:00 2001 From: Robin Krom Date: Fri, 18 Mar 2022 11:34:45 +0100 Subject: [PATCH] ifaces: tests for by_interface nodes in transactions (#13321) This adds tests for decode . encode = id in the transaction encoder/decoders. CHANGELOG_BEGIN CHANGELOG_END --- .../scala/lf/value/test/ValueGenerators.scala | 16 +++++++--------- .../lf/transaction/TransactionCoderSpec.scala | 12 ++++++++++++ 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/daml-lf/transaction-test-lib/src/main/scala/lf/value/test/ValueGenerators.scala b/daml-lf/transaction-test-lib/src/main/scala/lf/value/test/ValueGenerators.scala index fefec7dfba..6afbbf9853 100644 --- a/daml-lf/transaction-test-lib/src/main/scala/lf/value/test/ValueGenerators.scala +++ b/daml-lf/transaction-test-lib/src/main/scala/lf/value/test/ValueGenerators.scala @@ -28,6 +28,7 @@ import scalaz.scalacheck.ScalaCheckBinding._ object ValueGenerators { import TransactionVersion.minExceptions + import TransactionVersion.minInterfaces //generate decimal values def numGen(scale: Numeric.Scale): Gen[Numeric] = { @@ -303,6 +304,7 @@ object ValueGenerators { signatories <- genNonEmptyParties stakeholders <- genNonEmptyParties key <- Gen.option(keyWithMaintainersGen) + byInterface <- if (version < minInterfaces) Gen.const(None) else Gen.option(idGen) } yield Node.Create( coid, templateId, @@ -311,9 +313,7 @@ object ValueGenerators { signatories, stakeholders, key, - None, - // TODO https://github.com/digital-asset/daml/issues/12051 - // also vary byInterface + byInterface, version, ) } @@ -333,6 +333,7 @@ object ValueGenerators { stakeholders <- genNonEmptyParties key <- Gen.option(keyWithMaintainersGen) byKey <- Gen.oneOf(true, false) + byInterface <- if (version < minInterfaces) Gen.const(None) else Gen.option(idGen) } yield Node.Fetch( coid, templateId, @@ -341,9 +342,7 @@ object ValueGenerators { stakeholders, key, byKey, - None, - // TODO https://github.com/digital-asset/daml/issues/12051 - // also vary byInterface + byInterface, version, ) } @@ -386,6 +385,7 @@ object ValueGenerators { exerciseResult <- if (version < minExceptions) valueGen.map(Some(_)) else Gen.option(valueGen) key <- Gen.option(keyWithMaintainersGen) byKey <- Gen.oneOf(true, false) + byInterface <- if (version < minInterfaces) Gen.const(None) else Gen.option(idGen) } yield Node.Exercise( targetCoid, templateId, @@ -400,9 +400,7 @@ object ValueGenerators { exerciseResult, key, byKey, - None, - // TODO https://github.com/digital-asset/daml/issues/12051 - // also vary byInterface (but it requires an interface choice) + byInterface, version, ) } diff --git a/daml-lf/transaction/src/test/scala/com/digitalasset/daml/lf/transaction/TransactionCoderSpec.scala b/daml-lf/transaction/src/test/scala/com/digitalasset/daml/lf/transaction/TransactionCoderSpec.scala index 82446c5808..8eda40e018 100644 --- a/daml-lf/transaction/src/test/scala/com/digitalasset/daml/lf/transaction/TransactionCoderSpec.scala +++ b/daml-lf/transaction/src/test/scala/com/digitalasset/daml/lf/transaction/TransactionCoderSpec.scala @@ -906,6 +906,10 @@ class TransactionCoderSpec create.copy( arg = normalize(create.arg, create.version), key = create.key.map(normalizeKey(_, create.version)), + byInterface = + if (create.version >= TransactionVersion.minInterfaces) + create.byInterface + else None, ) } @@ -916,6 +920,10 @@ class TransactionCoderSpec if (fetch.version >= TransactionVersion.minByKey) fetch.byKey else false, + byInterface = + if (fetch.version >= TransactionVersion.minInterfaces) + fetch.byInterface + else None, ) private[this] def normalizeExe(exe: Node.Exercise) = @@ -938,6 +946,10 @@ class TransactionCoderSpec if (exe.version >= TransactionVersion.minByKey) exe.byKey else false, + byInterface = + if (exe.version >= TransactionVersion.minInterfaces) + exe.byInterface + else None, ) private[this] def normalizeKey(