@@ -1478,27 +1478,61 @@ macro_rules! check_closed_broadcast {
14781478	} 
14791479} 
14801480
1481+ #[ derive( Default ) ]  
1482+ pub  struct  ExpectedCloseEvent  { 
1483+ 	pub  channel_capacity_sats :  Option < u64 > , 
1484+ 	pub  channel_id :  Option < ChannelId > , 
1485+ 	pub  counterparty_node_id :  Option < PublicKey > , 
1486+ 	pub  discard_funding :  bool , 
1487+ 	pub  reason :  Option < ClosureReason > , 
1488+ } 
1489+ 
1490+ /// Check that multiple channel closing events have been issued. 
1491+ pub  fn  check_closed_events ( node :  & Node ,  expected_close_events :  & [ ExpectedCloseEvent ] )  { 
1492+ 	let  closed_events_count = expected_close_events. len ( ) ; 
1493+ 	let  discard_events_count = expected_close_events. iter ( ) . filter ( |e| e. discard_funding ) . count ( ) ; 
1494+ 	let  events = node. node . get_and_clear_pending_events ( ) ; 
1495+ 	assert_eq ! ( events. len( ) ,  closed_events_count + discard_events_count,  "{:?}" ,  events) ; 
1496+ 	for  expected_event in  expected_close_events { 
1497+ 		assert ! ( events. iter( ) . any( |e| matches!( 
1498+ 			e, 
1499+ 			Event :: ChannelClosed  { 
1500+ 				channel_id, 
1501+ 				reason, 
1502+ 				counterparty_node_id, 
1503+ 				channel_capacity_sats, 
1504+ 				..
1505+ 			}  if  ( 
1506+ 				expected_event. channel_id. map( |expected| * channel_id == expected) . unwrap_or( true )  &&
1507+ 				expected_event. reason. as_ref( ) . map( |expected| reason == expected) . unwrap_or( true )  &&
1508+ 				expected_event. counterparty_node_id. map( |expected| * counterparty_node_id == Some ( expected) ) . unwrap_or( true )  &&
1509+ 				expected_event. channel_capacity_sats. map( |expected| * channel_capacity_sats == Some ( expected) ) . unwrap_or( true ) 
1510+ 			) 
1511+ 		) ) ) ; 
1512+ 	} 
1513+ 	assert_eq ! ( events. iter( ) . filter( |e| matches!( 
1514+ 		e, 
1515+ 		Event :: DiscardFunding  {  .. } , 
1516+ 	) ) . count( ) ,  discard_events_count) ; 
1517+ } 
1518+ 
14811519/// Check that a channel's closing channel events has been issued 
14821520pub  fn  check_closed_event ( node :  & Node ,  events_count :  usize ,  expected_reason :  ClosureReason ,  is_check_discard_funding :  bool , 
14831521	expected_counterparty_node_ids :  & [ PublicKey ] ,  expected_channel_capacity :  u64 )  { 
1484- 	let  events = node. node . get_and_clear_pending_events ( ) ; 
1485- 	assert_eq ! ( events. len( ) ,  events_count,  "{:?}" ,  events) ; 
1486- 	let  mut  issues_discard_funding = false ; 
1487- 	for  event in  events { 
1488- 		match  event { 
1489- 			Event :: ChannelClosed  {  ref  reason,  counterparty_node_id, 
1490- 				channel_capacity_sats,  .. }  => { 
1491- 				assert_eq ! ( * reason,  expected_reason) ; 
1492- 				assert ! ( expected_counterparty_node_ids. iter( ) . any( |id| id == & counterparty_node_id. unwrap( ) ) ) ; 
1493- 				assert_eq ! ( channel_capacity_sats. unwrap( ) ,  expected_channel_capacity) ; 
1494- 			} , 
1495- 			Event :: DiscardFunding  {  .. }  => { 
1496- 				issues_discard_funding = true ; 
1497- 			} 
1498- 			_ => panic ! ( "Unexpected event" ) , 
1499- 		} 
1500- 	} 
1501- 	assert_eq ! ( is_check_discard_funding,  issues_discard_funding) ; 
1522+ 	let  expected_events_count = if  is_check_discard_funding { 
1523+ 		2  *  expected_counterparty_node_ids. len ( ) 
1524+ 	}  else  { 
1525+ 		expected_counterparty_node_ids. len ( ) 
1526+ 	} ; 
1527+ 	assert_eq ! ( events_count,  expected_events_count) ; 
1528+ 	let  expected_close_events = expected_counterparty_node_ids. iter ( ) . map ( |node_id| ExpectedCloseEvent  { 
1529+ 		channel_capacity_sats :  Some ( expected_channel_capacity) , 
1530+ 		channel_id :  None , 
1531+ 		counterparty_node_id :  Some ( * node_id) , 
1532+ 		discard_funding :  is_check_discard_funding, 
1533+ 		reason :  Some ( expected_reason. clone ( ) ) , 
1534+ 	} ) . collect :: < Vec < _ > > ( ) ; 
1535+ 	check_closed_events ( node,  expected_close_events. as_slice ( ) ) ; 
15021536} 
15031537
15041538/// Check that a channel's closing channel events has been issued 
0 commit comments