add sqlite coin chooser test
This commit is contained in:
parent
9d34e027f3
commit
be5f6491bc
1 changed files with 65 additions and 0 deletions
|
@ -424,3 +424,68 @@ class TransactionIOBalancing(AsyncioTestCase):
|
||||||
self.assertListEqual([0.01, 1], self.inputs(tx))
|
self.assertListEqual([0.01, 1], self.inputs(tx))
|
||||||
# change is now needed to consume extra input
|
# change is now needed to consume extra input
|
||||||
self.assertListEqual([0.97], self.outputs(tx))
|
self.assertListEqual([0.97], self.outputs(tx))
|
||||||
|
|
||||||
|
async def test_basic_use_cases_sqlite(self):
|
||||||
|
self.ledger.coin_selection_strategy = 'sqlite'
|
||||||
|
self.ledger.fee_per_byte = int(.01*CENT)
|
||||||
|
|
||||||
|
# available UTXOs for filling missing inputs
|
||||||
|
utxos = await self.create_utxos([
|
||||||
|
1, 1, 3, 5, 10
|
||||||
|
])
|
||||||
|
# pay 3 coins (3.07 w/ fees)
|
||||||
|
tx = await self.tx(
|
||||||
|
[], # inputs
|
||||||
|
[self.txo(3)] # outputs
|
||||||
|
)
|
||||||
|
# there are 4x 1.0 utxos available
|
||||||
|
self.assertListEqual(self.inputs(tx), [1.0, 1.0, 1.0, 1.0])
|
||||||
|
|
||||||
|
# a change of 0.93 is added to reach balance
|
||||||
|
self.assertListEqual(self.outputs(tx), [3, 0.93])
|
||||||
|
|
||||||
|
await self.ledger.release_outputs(utxos)
|
||||||
|
|
||||||
|
# pay 6.917 coins (7.00 w/ fees)
|
||||||
|
tx = await self.tx(
|
||||||
|
[], # inputs
|
||||||
|
[self.txo(6.917)] # outputs
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertListEqual(self.inputs(tx), [1.0, 1.0, 1.0, 1.0, 3.0])
|
||||||
|
self.assertListEqual(self.outputs(tx), [6.92])
|
||||||
|
|
||||||
|
await self.ledger.release_outputs(utxos)
|
||||||
|
|
||||||
|
# supplied input and output, but input is not enough to cover output
|
||||||
|
tx = await self.tx(
|
||||||
|
[self.txi(self.txo(10))], # inputs
|
||||||
|
[self.txo(11)] # outputs
|
||||||
|
)
|
||||||
|
# additional input is chosen (UTXO 1)
|
||||||
|
self.assertListEqual([10, 1.0, 1.0], self.inputs(tx))
|
||||||
|
# change is now needed to consume extra input
|
||||||
|
self.assertListEqual([11, 0.95], self.outputs(tx))
|
||||||
|
|
||||||
|
await self.ledger.release_outputs(utxos)
|
||||||
|
|
||||||
|
# liquidating a UTXO
|
||||||
|
tx = await self.tx(
|
||||||
|
[self.txi(self.txo(10))], # inputs
|
||||||
|
[] # outputs
|
||||||
|
)
|
||||||
|
self.assertListEqual([10], self.inputs(tx))
|
||||||
|
# missing change added to consume the amount
|
||||||
|
self.assertListEqual([9.98], self.outputs(tx))
|
||||||
|
|
||||||
|
await self.ledger.release_outputs(utxos)
|
||||||
|
|
||||||
|
# liquidating at a loss, requires adding extra inputs
|
||||||
|
tx = await self.tx(
|
||||||
|
[self.txi(self.txo(0.01))], # inputs
|
||||||
|
[] # outputs
|
||||||
|
)
|
||||||
|
# UTXO 1 is added to cover some of the fee
|
||||||
|
self.assertListEqual([0.01, 1], self.inputs(tx))
|
||||||
|
# change is now needed to consume extra input
|
||||||
|
self.assertListEqual([0.97], self.outputs(tx))
|
||||||
|
|
Loading…
Add table
Reference in a new issue