public void GetSpendableTransactionsWithoutSpendableTransactionsReturnsEmptyList() { var store = new WalletMemoryStore(); var account = new HdAccount(); account.ExternalAddresses.Add(new HdAddress { Index = 2, Address = "2" }); store.Add(new List <TransactionOutputData> { new TransactionOutputData { OutPoint = new OutPoint(new uint256(1), 1), Address = "2", Id = new uint256(15), Index = 7, SpendingDetails = new SpendingDetails { TransactionId = new uint256(1) } } }); account.InternalAddresses.Add(new HdAddress { Index = 4 }); store.Add(new List <TransactionOutputData> { new TransactionOutputData { OutPoint = new OutPoint(new uint256(2), 1), Address = "4", Id = new uint256(15), Index = 10, SpendingDetails = new SpendingDetails { TransactionId = new uint256(1) } } }); IEnumerable <UnspentOutputReference> result = account.GetSpendableTransactions(store, 100, 10, 0); Assert.Empty(result); }
public void GetLastUsedAddressWithReceivingAddressesHavingTransactionsReturnsHighestIndex() { var store = new WalletMemoryStore(); var account = new HdAccount(); account.ExternalAddresses.Add(new HdAddress { Index = 2, Address = "2" }); store.Add(new List <TransactionOutputData> { new TransactionOutputData { OutPoint = new OutPoint(new uint256(1), 1), Address = "2" } }); account.ExternalAddresses.Add(new HdAddress { Index = 3, Address = "3" }); store.Add(new List <TransactionOutputData> { new TransactionOutputData { OutPoint = new OutPoint(new uint256(2), 1), Address = "3" } }); account.ExternalAddresses.Add(new HdAddress { Index = 1, Address = "1" }); store.Add(new List <TransactionOutputData> { new TransactionOutputData { OutPoint = new OutPoint(new uint256(3), 1), Address = "1" } }); HdAddress result = account.GetLastUsedAddress(store, isChange: false); Assert.Equal(account.ExternalAddresses.ElementAt(1), result); }
public void GetFirstUnusedAccountReturnsAccountWithLowerIndexHavingNoAddresses() { AccountRoot accountRoot = CreateAccountRoot(KnownCoinTypes.Stratis); WalletMemoryStore store = new WalletMemoryStore(); IHdAccount unused = CreateAccount("unused1"); unused.Index = 2; accountRoot.Accounts.Add(unused); HdAccount unused2 = CreateAccount("unused2"); unused2.Index = 1; accountRoot.Accounts.Add(unused2); HdAccount used = CreateAccount("used"); used.ExternalAddresses.Add(CreateAddress()); used.Index = 3; accountRoot.Accounts.Add(used); HdAccount used2 = CreateAccount("used2"); used2.InternalAddresses.Add(CreateAddress()); used2.Index = 4; accountRoot.Accounts.Add(used2); IHdAccount result = accountRoot.GetFirstUnusedAccount(store); Assert.NotNull(result); Assert.Equal(1, result.Index); Assert.Equal("unused2", result.Name); }
public void UnspentTransactionsWithAddressHavingUnspentTransactionsReturnsUnspentTransactions() { WalletMemoryStore store = new WalletMemoryStore(); var address = new HdAddress { Address = "Address" }; store.Add(new List <TransactionOutputData> { new TransactionOutputData { Id = new uint256(15), OutPoint = new OutPoint(new uint256(15), 1), Address = "Address" }, new TransactionOutputData { Id = new uint256(16), SpendingDetails = new SpendingDetails { TransactionId = new uint256(1) }, OutPoint = new OutPoint(new uint256(16), 1), Address = "Address" }, new TransactionOutputData { Id = new uint256(17), OutPoint = new OutPoint(new uint256(17), 1), Address = "Address" }, new TransactionOutputData { Id = new uint256(18), SpendingDetails = new SpendingDetails { TransactionId = new uint256(1) }, OutPoint = new OutPoint(new uint256(18), 1), Address = "Address" } }); IEnumerable <TransactionOutputData> result = address.UnspentTransactions(store); Assert.Equal(2, result.Count()); Assert.Contains(new uint256(15), result.Select(x => x.Id)); Assert.Contains(new uint256(17), result.Select(x => x.Id)); }
public void UnspentTransactionsWithAddressNotHavingUnspentTransactionsReturnsEmptyList() { WalletMemoryStore store = new WalletMemoryStore(); var address = new HdAddress { Address = "Address" }; store.Add(new List <TransactionOutputData> { new TransactionOutputData { Id = new uint256(16), SpendingDetails = new SpendingDetails { TransactionId = new uint256(1) }, OutPoint = new OutPoint(new uint256(16), 1), Address = "Address" }, new TransactionOutputData { Id = new uint256(18), SpendingDetails = new SpendingDetails { TransactionId = new uint256(1) }, OutPoint = new OutPoint(new uint256(18), 1), Address = "Address" } }); IEnumerable <TransactionOutputData> result = address.UnspentTransactions(store); Assert.Empty(result); }
public void GetFirstUnusedAccountWithoutAccountsReturnsNull() { AccountRoot accountRoot = CreateAccountRoot(KnownCoinTypes.Stratis); WalletMemoryStore store = new WalletMemoryStore(); IHdAccount result = accountRoot.GetFirstUnusedAccount(store); Assert.Null(result); }
public void GetLastUsedAddressLookingForReceivingAddressWithoutReceivingAddressesReturnsNull() { var store = new WalletMemoryStore(); var account = new HdAccount(); account.ExternalAddresses.Clear(); HdAddress result = account.GetLastUsedAddress(store, isChange: false); Assert.Null(result); }
public void GetFirstUnusedChangeAddressWithoutChangeAddressReturnsNull() { var store = new WalletMemoryStore(); var account = new HdAccount(); account.InternalAddresses.Clear(); HdAddress result = account.GetFirstUnusedChangeAddress(store); Assert.Null(result); }
public void UnspentTransactionsWithAddressWithoutTransactionsReturnsEmptyList() { WalletMemoryStore store = new WalletMemoryStore(); var address = new HdAddress { Address = "Address" }; IEnumerable <TransactionOutputData> result = address.UnspentTransactions(store); Assert.Empty(result); }
public void GetLastUsedAddressLookingForReceivingAddressWithoutReceivingAddressesHavingTransactionsReturnsNull() { var store = new WalletMemoryStore(); var account = new HdAccount(); account.ExternalAddresses.Add(new HdAddress { Index = 2, Address = "2" }); account.ExternalAddresses.Add(new HdAddress { Index = 3, Address = "3" }); account.ExternalAddresses.Add(new HdAddress { Index = 1, Address = "1" }); HdAddress result = account.GetLastUsedAddress(store, isChange: false); Assert.Null(result); }
public void GetFirstUnusedReceivingAddressWithExistingUnusedReceivingAddressReturnsAddressWithLowestIndex() { var store = new WalletMemoryStore(); var account = new HdAccount(); account.ExternalAddresses.Add(new HdAddress { Index = 3, Address = "3" }); account.ExternalAddresses.Add(new HdAddress { Index = 2, Address = "2" }); account.ExternalAddresses.Add(new HdAddress { Index = 1, Address = "1" }); store.Add(new List <TransactionOutputData> { new TransactionOutputData { OutPoint = new OutPoint(new uint256(1), 1), Address = "1" } }); HdAddress result = account.GetFirstUnusedReceivingAddress(store); Assert.Equal(account.ExternalAddresses.ElementAt(1), result); }
public void GetFirstUnusedChangeAddressWithoutExistingUnusedChangeAddressReturnsNull() { var store = new WalletMemoryStore(); var account = new HdAccount(); account.InternalAddresses.Add(new HdAddress { Index = 2, Address = "2" }); store.Add(new List <TransactionOutputData> { new TransactionOutputData { OutPoint = new OutPoint(new uint256(1), 1), Address = "2" } }); account.InternalAddresses.Add(new HdAddress { Index = 1, Address = "1" }); store.Add(new List <TransactionOutputData> { new TransactionOutputData { OutPoint = new OutPoint(new uint256(2), 1), Address = "1" } }); HdAddress result = account.GetFirstUnusedChangeAddress(store); Assert.Null(result); }
public void GetSpendableTransactionsWithSpendableTransactionsReturnsSpendableTransactions() { var store = new WalletMemoryStore(); var account = new HdAccount(); account.ExternalAddresses.Add(new HdAddress { Index = 2, Address = "2" }); store.Add(new List <TransactionOutputData> { new TransactionOutputData { OutPoint = new OutPoint(new uint256(1), 1), Address = "2", Id = new uint256(15), Index = 7, SpendingDetails = new SpendingDetails { TransactionId = new uint256(1) } } }); account.ExternalAddresses.Add(new HdAddress { Index = 3, Address = "3" }); store.Add(new List <TransactionOutputData> { new TransactionOutputData { OutPoint = new OutPoint(new uint256(2), 1), Address = "3", Id = new uint256(18), Index = 8 } }); account.ExternalAddresses.Add(new HdAddress { Index = 1, Address = "1" }); store.Add(new List <TransactionOutputData> { new TransactionOutputData { OutPoint = new OutPoint(new uint256(3), 1), Address = "1", Id = new uint256(19), Index = 9, SpendingDetails = new SpendingDetails { TransactionId = new uint256(1) } } }); account.ExternalAddresses.Add(new HdAddress { Index = 6 }); account.InternalAddresses.Add(new HdAddress { Index = 4, Address = "4" }); store.Add(new List <TransactionOutputData> { new TransactionOutputData { OutPoint = new OutPoint(new uint256(4), 1), Address = "4", Id = new uint256(15), Index = 10, SpendingDetails = new SpendingDetails { TransactionId = new uint256(1) } } }); account.InternalAddresses.Add(new HdAddress { Index = 5, Address = "5" }); store.Add(new List <TransactionOutputData> { new TransactionOutputData { OutPoint = new OutPoint(new uint256(5), 1), Address = "5", Id = new uint256(18), Index = 11 } }); account.InternalAddresses.Add(new HdAddress { Index = 6 }); account.InternalAddresses.Add(new HdAddress { Index = 6, Address = "6" }); store.Add(new List <TransactionOutputData> { new TransactionOutputData { OutPoint = new OutPoint(new uint256(6), 1), Address = "6", Id = new uint256(19), Index = 12, SpendingDetails = new SpendingDetails { TransactionId = new uint256(1) } } }); IEnumerable <UnspentOutputReference> result = account.GetSpendableTransactions(store, 100, 10, 0); Assert.Equal(2, result.Count()); Assert.Equal(8, result.ElementAt(0).Transaction.Index); Assert.Equal(new uint256(18), result.ElementAt(0).Transaction.Id); Assert.Equal(11, result.ElementAt(1).Transaction.Index); Assert.Equal(new uint256(18), result.ElementAt(1).Transaction.Id); }