public void Decode_WithInvalidTransactionType_ShouldThrow() { byte[] data; using (var stream = RawTransaction.Create(2, 0)) { data = stream.ToArray(); } var ex = Assert.Throws <TransactionFieldException>( () => this.subject.Decode(TestAddress.Regtest1, TestAddress.Regtest2, data) ); Assert.Equal(TransactionFieldException.TypeField, ex.Field); }
public void Decode_WithValidTransactionType_ShouldInvokePayloadDecode() { // Arrange. ExodusTransaction tx = new FakeExodusTransaction(null, null); byte[] data; using (var stream = RawTransaction.Create(1, ExodusTransaction.MaxVersion)) { data = stream.ToArray(); } this.encoder1.Decode( Arg.Any <BitcoinAddress>(), Arg.Any <BitcoinAddress>(), Arg.Any <BinaryReader>(), Arg.Any <int>() ).Returns(tx); // Act. var result = this.subject.Decode(TestAddress.Regtest1, TestAddress.Regtest2, data); // Assert. Assert.Same(tx, result); this.encoder0.Received(0).Decode( Arg.Any <BitcoinAddress>(), Arg.Any <BitcoinAddress>(), Arg.Any <BinaryReader>(), Arg.Any <int>() ); this.encoder1.Received(1).Decode( TestAddress.Regtest1, TestAddress.Regtest2, Arg.Is <BinaryReader>(r => r != null), ExodusTransaction.MaxVersion ); }