From bfd7aa4fc2930056640b260b29d2758d3862a01d Mon Sep 17 00:00:00 2001 From: Sofus Mortensen Date: Sun, 8 Jan 2017 18:41:51 +0100 Subject: [PATCH] universal: pretty print --- .../corda/contracts/universal/PrettyPrint.kt | 24 +++++++++++++++++++ .../net/corda/contracts/universal/Util.kt | 2 +- .../net/corda/contracts/universal/Cap.kt | 6 +++++ .../net/corda/contracts/universal/Caplet.kt | 11 +++++++++ .../contracts/universal/FXFwdTimeOption.kt | 11 +++++++++ .../net/corda/contracts/universal/FXSwap.kt | 7 ++++++ .../net/corda/contracts/universal/IRS.kt | 9 +++++++ 7 files changed, 69 insertions(+), 1 deletion(-) diff --git a/experimental/src/main/kotlin/net/corda/contracts/universal/PrettyPrint.kt b/experimental/src/main/kotlin/net/corda/contracts/universal/PrettyPrint.kt index 93fb1cd544..cec8a1cfa4 100644 --- a/experimental/src/main/kotlin/net/corda/contracts/universal/PrettyPrint.kt +++ b/experimental/src/main/kotlin/net/corda/contracts/universal/PrettyPrint.kt @@ -78,6 +78,25 @@ private class PrettyPrint(arr : Arrangement) { print(" or ") prettyPrintPerBoolean(per.right) } + is PerceivableAnd -> { + prettyPrintPerBoolean(per.left) + print(" and ") + prettyPrintPerBoolean(per.right) + } + is TimePerceivable -> { + when (per.cmp) { + Comparison.GT, Comparison.GTE -> { + print("after(") + prettyPrintPerInstant(per.instant) + print(")") + } + Comparison.LT, Comparison.LTE -> { + print("before(") + prettyPrintPerInstant(per.instant) + print(")") + } + } + } is ActorPerceivable -> { print("signedBy(${partyMap[per.actor.owningKey]})") } @@ -113,6 +132,11 @@ private class PrettyPrint(arr : Arrangement) { } prettyPrintPerBD(per.right) } + is UnaryPlus -> { + print("(") + prettyPrintPerBD(per.arg) + print(".).plus()") + } is Const -> { print(per.value) } diff --git a/experimental/src/main/kotlin/net/corda/contracts/universal/Util.kt b/experimental/src/main/kotlin/net/corda/contracts/universal/Util.kt index 382de9df99..7e42466fe4 100644 --- a/experimental/src/main/kotlin/net/corda/contracts/universal/Util.kt +++ b/experimental/src/main/kotlin/net/corda/contracts/universal/Util.kt @@ -51,7 +51,7 @@ private fun involvedPartiesVisitor(action: Action): Set = private fun involvedPartiesVisitor(arrangement: Arrangement): ImmutableSet = when (arrangement) { is Zero -> ImmutableSet.of() - is Obligation -> ImmutableSet.of(arrangement.from) + is Obligation -> ImmutableSet.of(arrangement.from, arrangement.to) is RollOut -> involvedPartiesVisitor(arrangement.template) is Continuation -> ImmutableSet.of() is And -> diff --git a/experimental/src/test/kotlin/net/corda/contracts/universal/Cap.kt b/experimental/src/test/kotlin/net/corda/contracts/universal/Cap.kt index f2d3623352..cbb2a488fd 100644 --- a/experimental/src/test/kotlin/net/corda/contracts/universal/Cap.kt +++ b/experimental/src/test/kotlin/net/corda/contracts/universal/Cap.kt @@ -314,5 +314,11 @@ class Cap { @Test @Ignore fun `pretty print`() { println ( prettyPrint(contractInitial) ) + + println ( prettyPrint(contractAfterFixingFirst) ) + + println ( prettyPrint(contractAfterExecutionFirst) ) + + println ( prettyPrint(contractAfterFixingFinal) ) } } diff --git a/experimental/src/test/kotlin/net/corda/contracts/universal/Caplet.kt b/experimental/src/test/kotlin/net/corda/contracts/universal/Caplet.kt index 52afd64969..634d1964a6 100644 --- a/experimental/src/test/kotlin/net/corda/contracts/universal/Caplet.kt +++ b/experimental/src/test/kotlin/net/corda/contracts/universal/Caplet.kt @@ -4,6 +4,7 @@ import net.corda.core.contracts.FixOf import net.corda.core.contracts.Tenor import net.corda.core.utilities.DUMMY_NOTARY import net.corda.testing.transaction +import org.junit.Ignore import org.junit.Test import java.time.Instant import java.time.LocalDate @@ -131,4 +132,14 @@ class Caplet { } } + @Test @Ignore + fun `pretty print`() { + println ( prettyPrint(contract) ) + + println ( prettyPrint(contractFixed) ) + + println ( prettyPrint(contractFinal) ) + } + + } diff --git a/experimental/src/test/kotlin/net/corda/contracts/universal/FXFwdTimeOption.kt b/experimental/src/test/kotlin/net/corda/contracts/universal/FXFwdTimeOption.kt index 33f3b68d01..4265468ac2 100644 --- a/experimental/src/test/kotlin/net/corda/contracts/universal/FXFwdTimeOption.kt +++ b/experimental/src/test/kotlin/net/corda/contracts/universal/FXFwdTimeOption.kt @@ -2,6 +2,7 @@ package net.corda.contracts.universal import net.corda.core.utilities.DUMMY_NOTARY import net.corda.testing.transaction +import org.junit.Ignore import org.junit.Test import java.time.Instant @@ -132,4 +133,14 @@ class FXFwdTimeOption this.verifies() } } + + @Test @Ignore + fun `pretty print`() { + println ( prettyPrint(initialContract) ) + + println ( prettyPrint(outContract1) ) + + println ( prettyPrint(outContract2) ) + } + } \ No newline at end of file diff --git a/experimental/src/test/kotlin/net/corda/contracts/universal/FXSwap.kt b/experimental/src/test/kotlin/net/corda/contracts/universal/FXSwap.kt index c59a635532..38495f2e06 100644 --- a/experimental/src/test/kotlin/net/corda/contracts/universal/FXSwap.kt +++ b/experimental/src/test/kotlin/net/corda/contracts/universal/FXSwap.kt @@ -2,6 +2,7 @@ package net.corda.contracts.universal import net.corda.core.utilities.DUMMY_NOTARY import net.corda.testing.transaction +import org.junit.Ignore import org.junit.Test import java.time.Instant @@ -175,4 +176,10 @@ class FXSwap { this `fails with` "output states must match action result state" } } + + @Test @Ignore + fun `pretty print`() { + println ( prettyPrint(contract) ) + } + } diff --git a/experimental/src/test/kotlin/net/corda/contracts/universal/IRS.kt b/experimental/src/test/kotlin/net/corda/contracts/universal/IRS.kt index a5f13d7272..252f70ca70 100644 --- a/experimental/src/test/kotlin/net/corda/contracts/universal/IRS.kt +++ b/experimental/src/test/kotlin/net/corda/contracts/universal/IRS.kt @@ -5,6 +5,7 @@ import net.corda.core.contracts.Frequency import net.corda.core.contracts.Tenor import net.corda.core.utilities.DUMMY_NOTARY import net.corda.testing.transaction +import org.junit.Ignore import org.junit.Test import java.time.Instant import java.time.LocalDate @@ -213,5 +214,13 @@ class IRS { } } + @Test @Ignore + fun `pretty print`() { + println ( prettyPrint(contractInitial) ) + + println ( prettyPrint(contractAfterFixingFirst) ) + + println ( prettyPrint(contractAfterExecutionFirst) ) + } }