Skip to content

Commit

Permalink
Add exodus transaction getter and setter
Browse files Browse the repository at this point in the history
  • Loading branch information
thebevrishot committed Nov 20, 2019
1 parent d31b625 commit 717f5ce
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 0 deletions.
46 changes: 46 additions & 0 deletions src/Ztm.Zcoin.NBitcoin.Tests/TransactionExtensionsTests.cs
Original file line number Diff line number Diff line change
@@ -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);
}
}
}
13 changes: 13 additions & 0 deletions src/Ztm.Zcoin.NBitcoin/TransactionExtensions.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
using System;
using NBitcoin;
using Ztm.Zcoin.NBitcoin.Exodus;

namespace Ztm.Zcoin.NBitcoin
{
Expand All @@ -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;
}
}
}
3 changes: 3 additions & 0 deletions src/Ztm.Zcoin.NBitcoin/ZcoinTransaction.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System;
using System.Linq;
using NBitcoin;
using Ztm.Zcoin.NBitcoin.Exodus;

namespace Ztm.Zcoin.NBitcoin
{
Expand Down Expand Up @@ -61,5 +62,7 @@ public override ConsensusFactory GetConsensusFactory()
{
return this.consensusFactory;
}

public ExodusTransaction ExodusTransaction { get; set; }
}
}

0 comments on commit 717f5ce

Please sign in to comment.