Skip to content

Commit 0f58447

Browse files
committed
test: add tests
1 parent a614508 commit 0f58447

File tree

1 file changed

+88
-0
lines changed

1 file changed

+88
-0
lines changed

src/event_filter.rs

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)