test(tx_graph): Add test for list_canonical_txs
				
					
				
			This commit is contained in:
		
							parent
							
								
									c4057297a9
								
							
						
					
					
						commit
						496601b8b1
					
				| @ -1118,6 +1118,44 @@ fn update_last_seen_unconfirmed() { | ||||
|     ); | ||||
| } | ||||
| 
 | ||||
| #[test] | ||||
| fn transactions_inserted_into_tx_graph_are_not_canonical_until_they_have_an_anchor_in_best_chain() { | ||||
|     let txs = vec![new_tx(0), new_tx(1)]; | ||||
|     let txids: Vec<Txid> = txs.iter().map(Transaction::compute_txid).collect(); | ||||
| 
 | ||||
|     // graph
 | ||||
|     let mut graph = TxGraph::<BlockId>::new(txs); | ||||
|     let full_txs: Vec<_> = graph.full_txs().collect(); | ||||
|     assert_eq!(full_txs.len(), 2); | ||||
| 
 | ||||
|     // chain
 | ||||
|     let blocks: BTreeMap<u32, BlockHash> = [(0, h!("g")), (1, h!("A")), (2, h!("B"))] | ||||
|         .into_iter() | ||||
|         .collect(); | ||||
|     let chain = LocalChain::from_blocks(blocks).unwrap(); | ||||
|     let canonical_txs: Vec<_> = graph | ||||
|         .list_canonical_txs(&chain, chain.tip().block_id()) | ||||
|         .collect(); | ||||
|     assert!(canonical_txs.is_empty()); | ||||
| 
 | ||||
|     // tx0 with seen_at should be returned by canonical txs
 | ||||
|     let _ = graph.insert_seen_at(txids[0], 2); | ||||
|     let mut canonical_txs = graph.list_canonical_txs(&chain, chain.tip().block_id()); | ||||
|     assert_eq!( | ||||
|         canonical_txs.next().map(|tx| tx.tx_node.txid).unwrap(), | ||||
|         txids[0] | ||||
|     ); | ||||
|     drop(canonical_txs); | ||||
| 
 | ||||
|     // tx1 with anchor is also canonical
 | ||||
|     let _ = graph.insert_anchor(txids[1], block_id!(2, "B")); | ||||
|     let canonical_txids: Vec<_> = graph | ||||
|         .list_canonical_txs(&chain, chain.tip().block_id()) | ||||
|         .map(|tx| tx.tx_node.txid) | ||||
|         .collect(); | ||||
|     assert!(canonical_txids.contains(&txids[1])); | ||||
| } | ||||
| 
 | ||||
| #[test] | ||||
| /// The `map_anchors` allow a caller to pass a function to reconstruct the [`TxGraph`] with any [`Anchor`],
 | ||||
| /// even though the function is non-deterministic.
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user