From 717f5ce1f164feb1add3c954eace8639d0060817 Mon Sep 17 00:00:00 2001 From: thebevrishot Date: Thu, 14 Nov 2019 14:45:30 +0700 Subject: [PATCH] Add exodus transaction getter and setter --- .../TransactionExtensionsTests.cs | 46 +++++++++++++++++++ .../TransactionExtensions.cs | 13 ++++++ src/Ztm.Zcoin.NBitcoin/ZcoinTransaction.cs | 3 ++ 3 files changed, 62 insertions(+) create mode 100644 src/Ztm.Zcoin.NBitcoin.Tests/TransactionExtensionsTests.cs diff --git a/src/Ztm.Zcoin.NBitcoin.Tests/TransactionExtensionsTests.cs b/src/Ztm.Zcoin.NBitcoin.Tests/TransactionExtensionsTests.cs new file mode 100644 index 0000000..9c7bf9b --- /dev/null +++ b/src/Ztm.Zcoin.NBitcoin.Tests/TransactionExtensionsTests.cs @@ -0,0 +1,46 @@ +using NBitcoin; +using Xunit; +using Ztm.Zcoin.NBitcoin.Exodus; + +namespace Ztm.Zcoin.NBitcoin.Tests +{ + public sealed class TransactionExtensionsTests + { + readonly Transaction subject; + + public TransactionExtensionsTests() + { + this.subject = Transaction.Parse(ZcoinTransactionData.ZerocoinRemint, ZcoinNetworks.Instance.Regtest); + } + + [Fact] + public void SetExodusTransaction_WithNull_ShouldNotThrow() + { + this.subject.SetExodusTransaction(null); + } + + [Fact] + public void GetExodusTransaction_WithUnsetValue_ShouldRetreiveNull() + { + Assert.Null(this.subject.GetExodusTransaction()); + } + + [Fact] + public void SetAndGetExodusTransaction_WithValidTransaction_ShouldRetreiveSameTx() + { + // Arrange. + var address = BitcoinAddress.Create("TG3Pnw5xPZQS8JXMVa3F9WjUFfUqXKsqAz", ZcoinNetworks.Instance.Regtest); + var propertyId = new PropertyId(3); + var amount = new PropertyAmount(10); + + var exodusTx = new SimpleSendV0(address, address, propertyId, amount); + + // Act. + this.subject.SetExodusTransaction(exodusTx); + var retrieved = this.subject.GetExodusTransaction(); + + // Assert. + Assert.Same(exodusTx, retrieved); + } + } +} \ No newline at end of file diff --git a/src/Ztm.Zcoin.NBitcoin/TransactionExtensions.cs b/src/Ztm.Zcoin.NBitcoin/TransactionExtensions.cs index 676a332..3026012 100644 --- a/src/Ztm.Zcoin.NBitcoin/TransactionExtensions.cs +++ b/src/Ztm.Zcoin.NBitcoin/TransactionExtensions.cs @@ -1,4 +1,6 @@ +using System; using NBitcoin; +using Ztm.Zcoin.NBitcoin.Exodus; namespace Ztm.Zcoin.NBitcoin { @@ -18,5 +20,16 @@ public static bool IsZerocoinRemint(this Transaction transaction) { return ((ZcoinTransaction)transaction).IsZerocoinRemint; } + + [ObsoleteAttribute("This method should be called in specific places", false)] + public static void SetExodusTransaction(this Transaction transaction, ExodusTransaction exodusTransaction) + { + ((ZcoinTransaction)transaction).ExodusTransaction = exodusTransaction; + } + + public static ExodusTransaction GetExodusTransaction(this Transaction transaction) + { + return ((ZcoinTransaction)transaction).ExodusTransaction; + } } } \ No newline at end of file diff --git a/src/Ztm.Zcoin.NBitcoin/ZcoinTransaction.cs b/src/Ztm.Zcoin.NBitcoin/ZcoinTransaction.cs index 9c22256..9470bb1 100644 --- a/src/Ztm.Zcoin.NBitcoin/ZcoinTransaction.cs +++ b/src/Ztm.Zcoin.NBitcoin/ZcoinTransaction.cs @@ -1,6 +1,7 @@ using System; using System.Linq; using NBitcoin; +using Ztm.Zcoin.NBitcoin.Exodus; namespace Ztm.Zcoin.NBitcoin { @@ -61,5 +62,7 @@ public override ConsensusFactory GetConsensusFactory() { return this.consensusFactory; } + + public ExodusTransaction ExodusTransaction { get; set; } } }