From 33fe84ff20b1166ac0455459ea7196c75c9e1970 Mon Sep 17 00:00:00 2001 From: Daniela Brozzoni Date: Wed, 8 May 2024 15:33:06 +0200 Subject: [PATCH] test: Only the highest ord keychain is returned --- .../chain/tests/test_keychain_txout_index.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/crates/chain/tests/test_keychain_txout_index.rs b/crates/chain/tests/test_keychain_txout_index.rs index 849cfee142..4113a7ef60 100644 --- a/crates/chain/tests/test_keychain_txout_index.rs +++ b/crates/chain/tests/test_keychain_txout_index.rs @@ -742,3 +742,22 @@ fn applying_changesets_one_by_one_vs_aggregate_must_have_same_result() { indexer_b.last_revealed_indices() ); } + +// When the same descriptor is associated with various keychains, +// index methods only return the highest keychain by Ord +#[test] +fn test_only_highest_ord_keychain_is_returned() { + let desc = parse_descriptor(DESCRIPTORS[0]); + + let mut indexer = KeychainTxOutIndex::::new(0); + let _ = indexer.insert_descriptor(TestKeychain::Internal, desc.clone()); + let _ = indexer.insert_descriptor(TestKeychain::External, desc); + + // reveal_next_spk will work with either keychain + let spk0: ScriptBuf = indexer.reveal_next_spk(&TestKeychain::External).unwrap().0.1.into(); + let spk1: ScriptBuf = indexer.reveal_next_spk(&TestKeychain::Internal).unwrap().0.1.into(); + + // index_of_spk will always return External + assert_eq!(indexer.index_of_spk(&spk0), Some((TestKeychain::External, 0))); + assert_eq!(indexer.index_of_spk(&spk1), Some((TestKeychain::External, 1))); +}