sqlite: refactor test to not depend on order of coins

I found that making changes to the transactions used in the test
can affect the order in which coins are returned, probably due
to the txid changing.
This commit is contained in:
Michael Mallan 2024-11-28 08:56:08 +00:00
parent bde3299db1
commit f2c910f6eb
No known key found for this signature in database
GPG Key ID: 5177CDCEDB0EABEB

View File

@ -1373,9 +1373,10 @@ CREATE TABLE labels (
conn.db_coins(&[outpoint_a, outpoint_b]),
]
.iter()
.all(|c| c.len() == 2
&& c[0].outpoint == coin_a.outpoint
&& c[1].outpoint == coin_b.outpoint));
.all(|coins| coins.len() == 2
&& coins
.iter()
.all(|c| [coin_a.outpoint, coin_b.outpoint].contains(&c.outpoint))));
// We can filter for just the first coin.
assert!([
conn.coins(&[CoinStatus::Unconfirmed], &[outpoint_a]),
@ -1425,9 +1426,10 @@ CREATE TABLE labels (
conn.db_coins(&[outpoint_a, outpoint_b]),
]
.iter()
.all(|c| c.len() == 2
&& c[0].outpoint == coin_a.outpoint
&& c[1].outpoint == coin_b.outpoint));
.all(|coins| coins.len() == 2
&& coins
.iter()
.all(|c| [coin_a.outpoint, coin_b.outpoint].contains(&c.outpoint))));
// Now if we spend one, it'll be marked as such.
conn.spend_coins(&[(coin_a.outpoint, txs.get(2).unwrap().txid())]);
@ -1478,9 +1480,10 @@ CREATE TABLE labels (
conn.db_coins(&[outpoint_a, outpoint_b]),
]
.iter()
.all(|c| c.len() == 2
&& c[0].outpoint == coin_a.outpoint
&& c[1].outpoint == coin_b.outpoint));
.all(|coins| coins.len() == 2
&& coins
.iter()
.all(|c| [coin_a.outpoint, coin_b.outpoint].contains(&c.outpoint))));
// Add a third and fourth coin.
let outpoint_c = bitcoin::OutPoint::new(txs.get(3).unwrap().txid(), 42);
@ -1518,10 +1521,11 @@ CREATE TABLE labels (
conn.db_coins(&[outpoint_b, outpoint_c, outpoint_d]),
]
.iter()
.all(|coin| coin.len() == 3
&& coin[0].outpoint == coin_b.outpoint
&& coin[1].outpoint == coin_c.outpoint
&& coin[2].outpoint == coin_d.outpoint));
.all(|coins| coins.len() == 3
&& coins
.iter()
.all(|c| [coin_b.outpoint, coin_c.outpoint, coin_d.outpoint]
.contains(&c.outpoint))));
// We can also get two of the three unconfirmed coins by filtering for their outpoints.
assert!([
@ -1530,9 +1534,10 @@ CREATE TABLE labels (
conn.db_coins(&[outpoint_b, outpoint_c]),
]
.iter()
.all(|coin| coin.len() == 2
&& coin[0].outpoint == coin_b.outpoint
&& coin[1].outpoint == coin_c.outpoint));
.all(|coins| coins.len() == 2
&& coins
.iter()
.all(|c| [coin_b.outpoint, coin_c.outpoint].contains(&c.outpoint))));
// Now spend second coin, even though it is still unconfirmed.
conn.spend_coins(&[(coin_b.outpoint, txs.get(5).unwrap().txid())]);