Skip to content

Commit fa19531

Browse files
author
MarcoFalke
committed
test: Add getunconfirmedbalance test with conflicts
1 parent fa464e8 commit fa19531

File tree

1 file changed

+20
-18
lines changed

1 file changed

+20
-18
lines changed

test/functional/wallet_balance.py

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -86,30 +86,32 @@ def run_test(self):
8686

8787
self.log.info("Test getbalance and getunconfirmedbalance with unconfirmed inputs")
8888

89-
# getbalance without any arguments includes unconfirmed transactions, but not untrusted transactions
90-
assert_equal(self.nodes[0].getbalance(), Decimal('9.99')) # change from node 0's send
91-
assert_equal(self.nodes[1].getbalance(), Decimal('29.99')) # change from node 1's send
92-
# Same with minconf=0
93-
assert_equal(self.nodes[0].getbalance(minconf=0), Decimal('9.99'))
94-
assert_equal(self.nodes[1].getbalance(minconf=0), Decimal('29.99'))
95-
# getbalance with a minconf incorrectly excludes coins that have been spent more recently than the minconf blocks ago
96-
# TODO: fix getbalance tracking of coin spentness depth
97-
assert_equal(self.nodes[0].getbalance(minconf=1), Decimal('0'))
98-
assert_equal(self.nodes[1].getbalance(minconf=1), Decimal('0'))
99-
# getunconfirmedbalance
100-
assert_equal(self.nodes[0].getunconfirmedbalance(), Decimal('60')) # output of node 1's spend
101-
assert_equal(self.nodes[1].getunconfirmedbalance(), Decimal('0')) # Doesn't include output of node 0's send since it was spent
89+
def test_balances(*, fee_node_1=0):
90+
# getbalance without any arguments includes unconfirmed transactions, but not untrusted transactions
91+
assert_equal(self.nodes[0].getbalance(), Decimal('9.99')) # change from node 0's send
92+
assert_equal(self.nodes[1].getbalance(), Decimal('30') - fee_node_1) # change from node 1's send
93+
# Same with minconf=0
94+
assert_equal(self.nodes[0].getbalance(minconf=0), Decimal('9.99'))
95+
assert_equal(self.nodes[1].getbalance(minconf=0), Decimal('30') - fee_node_1)
96+
# getbalance with a minconf incorrectly excludes coins that have been spent more recently than the minconf blocks ago
97+
# TODO: fix getbalance tracking of coin spentness depth
98+
assert_equal(self.nodes[0].getbalance(minconf=1), Decimal('0'))
99+
assert_equal(self.nodes[1].getbalance(minconf=1), Decimal('0'))
100+
# getunconfirmedbalance
101+
assert_equal(self.nodes[0].getunconfirmedbalance(), Decimal('60')) # output of node 1's spend
102+
assert_equal(self.nodes[0].getwalletinfo()["unconfirmed_balance"], Decimal('60'))
103+
assert_equal(self.nodes[1].getunconfirmedbalance(), Decimal('0')) # Doesn't include output of node 0's send since it was spent
104+
assert_equal(self.nodes[1].getwalletinfo()["unconfirmed_balance"], Decimal('0'))
105+
106+
test_balances(fee_node_1=Decimal('0.01'))
102107

103108
# Node 1 bumps the transaction fee and resends
104109
self.nodes[1].sendrawtransaction(txs[1]['hex'])
110+
self.nodes[0].sendrawtransaction(txs[1]['hex']) # sending on both nodes is faster than waiting for propagation
105111
self.sync_all()
106112

107113
self.log.info("Test getbalance and getunconfirmedbalance with conflicted unconfirmed inputs")
108-
109-
assert_equal(self.nodes[0].getwalletinfo()["unconfirmed_balance"], Decimal('60')) # output of node 1's send
110-
assert_equal(self.nodes[0].getunconfirmedbalance(), Decimal('60'))
111-
assert_equal(self.nodes[1].getwalletinfo()["unconfirmed_balance"], Decimal('0')) # Doesn't include output of node 0's send since it was spent
112-
assert_equal(self.nodes[1].getunconfirmedbalance(), Decimal('0'))
114+
test_balances(fee_node_1=Decimal('0.02'))
113115

114116
self.nodes[1].generatetoaddress(1, ADDRESS_WATCHONLY)
115117
self.sync_all()

0 commit comments

Comments
 (0)