@@ -76,3 +76,91 @@ impl EventFilter {
7676 self
7777 }
7878}
79+
80+ #[ cfg( test) ]
81+ mod tests {
82+ use super :: EventFilter ;
83+ use alloy:: primitives:: { Address , address} ;
84+
85+ fn addr_str ( addr : Address ) -> String {
86+ format ! ( "{:?}" , addr)
87+ }
88+
89+ #[ test]
90+ fn display_default_no_address_no_events ( ) {
91+ let filter = EventFilter :: new ( ) ;
92+ let got = format ! ( "{}" , filter) ;
93+ let expected = "EventFilter(contract: all contracts, events: all events)" ;
94+ assert_eq ! ( got, expected) ;
95+
96+ // Debug should equal Display
97+ assert_eq ! ( format!( "{:?}" , filter) , got) ;
98+ }
99+
100+ #[ test]
101+ fn display_with_address_no_events ( ) {
102+ let address = address ! ( "0xd8dA6BF26964af9d7eed9e03e53415d37aa96045" ) ;
103+ let filter = EventFilter :: new ( ) . with_contract_address ( address) ;
104+ let got = format ! ( "{}" , filter) ;
105+ let expected = format ! ( "EventFilter(contract: {}, events: all events)" , addr_str( address) ) ;
106+ assert_eq ! ( got, expected) ;
107+
108+ // Debug should equal Display
109+ assert_eq ! ( format!( "{:?}" , filter) , got) ;
110+ }
111+
112+ #[ test]
113+ fn display_single_event_no_address ( ) {
114+ let event = "Transfer(address,address,uint256)" ;
115+ let filter = EventFilter :: new ( ) . with_event ( event) ;
116+ let got = format ! ( "{}" , filter) ;
117+ let expected = format ! ( "EventFilter(contract: all contracts, events: {})" , event) ;
118+ assert_eq ! ( got, expected) ;
119+
120+ // Debug should equal Display
121+ assert_eq ! ( format!( "{:?}" , filter) , got) ;
122+ }
123+
124+ #[ test]
125+ fn display_multiple_events_with_address ( ) {
126+ let address = address ! ( "0x000000000000000000000000000000000000dEaD" ) ;
127+ let events = vec ! [
128+ "Transfer(address,address,uint256)" . to_string( ) ,
129+ "Approval(address,address,uint256)" . to_string( ) ,
130+ "Sync(uint112,uint112)" . to_string( ) ,
131+ ] ;
132+ let filter = EventFilter :: new ( ) . with_contract_address ( address) . with_events ( events. clone ( ) ) ;
133+
134+ let got = format ! ( "{}" , filter) ;
135+ let expected =
136+ format ! ( "EventFilter(contract: {}, events: {})" , addr_str( address) , events. join( ", " ) ) ;
137+ assert_eq ! ( got, expected) ;
138+
139+ // Debug should equal Display
140+ assert_eq ! ( format!( "{:?}" , filter) , got) ;
141+ }
142+
143+ #[ test]
144+ fn display_with_empty_events_vector_noop ( ) {
145+ // Providing an empty events vector should behave as if no events were set.
146+ let filter = EventFilter :: new ( ) . with_events ( Vec :: < String > :: new ( ) ) ;
147+ let got = format ! ( "{}" , filter) ;
148+ let expected = "EventFilter(contract: all contracts, events: all events)" ;
149+ assert_eq ! ( got, expected) ;
150+
151+ // Debug should equal Display
152+ assert_eq ! ( format!( "{:?}" , filter) , got) ;
153+ }
154+
155+ #[ test]
156+ fn display_with_empty_event_string_prints_empty ( ) {
157+ // An explicitly empty event string results in an empty events field when joined.
158+ let filter = EventFilter :: new ( ) . with_event ( "" ) ;
159+ let got = format ! ( "{}" , filter) ;
160+ let expected = "EventFilter(contract: all contracts, events: )" ;
161+ assert_eq ! ( got, expected) ;
162+
163+ // Debug should equal Display
164+ assert_eq ! ( format!( "{:?}" , filter) , got) ;
165+ }
166+ }
0 commit comments