@@ -26,6 +26,21 @@ fn buy_execution<C>(fees: impl Into<Asset>) -> Instruction<C> {
26
26
BuyExecution { fees : fees. into ( ) , weight_limit : Unlimited }
27
27
}
28
28
29
+ /// Helper macro to check if a system event exists in the event list.
30
+ ///
31
+ /// Example usage:
32
+ /// ```ignore
33
+ /// assert!(system_contains_event!(parachain, System(frame_system::Event::Remarked { .. })));
34
+ /// assert!(system_contains_event!(relay_chain, XcmPallet(pallet_xcm::Event::Attempted { .. })));
35
+ /// ```
36
+ macro_rules! system_contains_event {
37
+ ( $runtime: ident, $variant: ident( $( $pattern: tt) * ) ) => {
38
+ $runtime:: System :: events( ) . iter( ) . any( |e| {
39
+ matches!( e. event, $runtime:: RuntimeEvent :: $variant( $( $pattern) * ) )
40
+ } )
41
+ } ;
42
+ }
43
+
29
44
#[ test]
30
45
fn remote_account_ids_work ( ) {
31
46
child_account_account_id ( 1 , ALICE ) ;
@@ -53,11 +68,7 @@ fn dmp() {
53
68
} ) ;
54
69
55
70
ParaA :: execute_with ( || {
56
- use parachain:: { RuntimeEvent , System } ;
57
- assert ! ( System :: events( ) . iter( ) . any( |r| matches!(
58
- r. event,
59
- RuntimeEvent :: System ( frame_system:: Event :: Remarked { .. } )
60
- ) ) ) ;
71
+ assert ! ( system_contains_event!( parachain, System ( frame_system:: Event :: Remarked { .. } ) ) ) ;
61
72
} ) ;
62
73
}
63
74
@@ -81,11 +92,7 @@ fn ump() {
81
92
} ) ;
82
93
83
94
Relay :: execute_with ( || {
84
- use relay_chain:: { RuntimeEvent , System } ;
85
- assert ! ( System :: events( ) . iter( ) . any( |r| matches!(
86
- r. event,
87
- RuntimeEvent :: System ( frame_system:: Event :: Remarked { .. } )
88
- ) ) ) ;
95
+ assert ! ( system_contains_event!( relay_chain, System ( frame_system:: Event :: Remarked { .. } ) ) ) ;
89
96
} ) ;
90
97
}
91
98
@@ -109,11 +116,7 @@ fn xcmp() {
109
116
} ) ;
110
117
111
118
ParaB :: execute_with ( || {
112
- use parachain:: { RuntimeEvent , System } ;
113
- assert ! ( System :: events( ) . iter( ) . any( |r| matches!(
114
- r. event,
115
- RuntimeEvent :: System ( frame_system:: Event :: Remarked { .. } )
116
- ) ) ) ;
119
+ assert ! ( system_contains_event!( parachain, System ( frame_system:: Event :: Remarked { .. } ) ) ) ;
117
120
} ) ;
118
121
}
119
122
@@ -137,18 +140,12 @@ fn reserve_transfer() {
137
140
INITIAL_BALANCE + withdraw_amount
138
141
) ;
139
142
// Ensure expected events were emitted
140
- let events = relay_chain:: System :: events ( ) ;
141
- let attempted_count = count_relay_chain_events ( & events, |event| {
142
- matches ! (
143
- event,
144
- relay_chain:: RuntimeEvent :: XcmPallet ( pallet_xcm:: Event :: Attempted { .. } )
145
- )
146
- } ) ;
147
- let sent_count = count_relay_chain_events ( & events, |event| {
148
- matches ! ( event, relay_chain:: RuntimeEvent :: XcmPallet ( pallet_xcm:: Event :: Sent { .. } ) )
149
- } ) ;
150
- assert_eq ! ( attempted_count, 1 , "Expected one XcmPallet::Attempted event" ) ;
151
- assert_eq ! ( sent_count, 1 , "Expected one XcmPallet::Sent event" ) ;
143
+ let attempted_emitted =
144
+ system_contains_event ! ( relay_chain, XcmPallet ( pallet_xcm:: Event :: Attempted { .. } ) ) ;
145
+ let sent_emitted =
146
+ system_contains_event ! ( relay_chain, XcmPallet ( pallet_xcm:: Event :: Sent { .. } ) ) ;
147
+ assert ! ( attempted_emitted, "Expected XcmPallet::Attempted event emitted" ) ;
148
+ assert ! ( sent_emitted, "Expected XcmPallet::Sent event emitted" ) ;
152
149
} ) ;
153
150
154
151
ParaA :: execute_with ( || {
@@ -193,13 +190,8 @@ fn reserve_transfer_with_error() {
193
190
assert ! ( log_capture. contains( "XCM validate_send failed" ) ) ;
194
191
195
192
// Verify that XcmPallet::Attempted was NOT emitted (rollback happened)
196
- let events = relay_chain:: System :: events ( ) ;
197
- let xcm_attempted_emitted = events. iter ( ) . any ( |e| {
198
- matches ! (
199
- e. event,
200
- relay_chain:: RuntimeEvent :: XcmPallet ( pallet_xcm:: Event :: Attempted { .. } )
201
- )
202
- } ) ;
193
+ let xcm_attempted_emitted =
194
+ system_contains_event ! ( relay_chain, XcmPallet ( pallet_xcm:: Event :: Attempted { .. } ) ) ;
203
195
assert ! (
204
196
!xcm_attempted_emitted,
205
197
"Expected no XcmPallet::Attempted event due to rollback, but it was emitted"
@@ -580,13 +572,3 @@ fn query_holding() {
580
572
) ;
581
573
} ) ;
582
574
}
583
-
584
- fn count_relay_chain_events < F > (
585
- events : & [ frame_system:: EventRecord < relay_chain:: RuntimeEvent , sp_core:: H256 > ] ,
586
- predicate : F ,
587
- ) -> usize
588
- where
589
- F : Fn ( & relay_chain:: RuntimeEvent ) -> bool ,
590
- {
591
- events. iter ( ) . filter ( |e| predicate ( & e. event ) ) . count ( )
592
- }
0 commit comments