From: Daniela Brozzoni Date: Wed, 8 May 2024 13:33:06 +0000 (+0200) Subject: test: Only the highest ord keychain is returned X-Git-Tag: v1.0.0-alpha.11~2^2~1 X-Git-Url: http://internal-gitweb-vhost/script/%22https:/struct.CommandStringError.html?a=commitdiff_plain;h=de53d721913537f56281a134270eafd356f908ad;p=bdk test: Only the highest ord keychain is returned --- diff --git a/crates/chain/tests/test_keychain_txout_index.rs b/crates/chain/tests/test_keychain_txout_index.rs index 849cfee1..55af741c 100644 --- a/crates/chain/tests/test_keychain_txout_index.rs +++ b/crates/chain/tests/test_keychain_txout_index.rs @@ -742,3 +742,38 @@ 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)) + ); +}