+pub fn connect_block<'a, 'b, 'c, 'd>(node: &'a Node<'b, 'c, 'd>, block: &Block) {
+ let txdata: Vec<_> = block.txdata.iter().enumerate().collect();
+ let height = node.best_block_info().1 + 1;
+ node.chain_monitor.chain_monitor.block_connected(&block.header, &txdata, height);
+ node.node.block_connected(&block.header, &txdata, height);
+ node.node.test_process_background_events();
+ node.blocks.borrow_mut().push((block.header, height));
+}
+
+pub fn disconnect_blocks<'a, 'b, 'c, 'd>(node: &'a Node<'b, 'c, 'd>, count: u32) {
+ for _ in 0..count {
+ let orig_header = node.blocks.borrow_mut().pop().unwrap();
+ assert!(orig_header.1 > 0); // Cannot disconnect genesis
+ node.chain_monitor.chain_monitor.block_disconnected(&orig_header.0, orig_header.1);
+ node.node.block_disconnected(&orig_header.0);
+ }
+}
+
+pub fn disconnect_all_blocks<'a, 'b, 'c, 'd>(node: &'a Node<'b, 'c, 'd>) {
+ let count = node.blocks.borrow_mut().len() as u32 - 1;
+ disconnect_blocks(node, count);
+}
+