Skip to content

Commit fffd6c8

Browse files
committed
add test to each scanner
1 parent c6941d0 commit fffd6c8

File tree

4 files changed

+216
-0
lines changed

4 files changed

+216
-0
lines changed

src/event_lib/modes/historic.rs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,3 +117,48 @@ impl<N: Network> HistoricEventScanner<N> {
117117
self.inner.stream_historical(self.config.from_block, self.config.to_block).await
118118
}
119119
}
120+
121+
#[cfg(test)]
122+
mod tests {
123+
use super::*;
124+
125+
#[test]
126+
fn test_historic_scanner_config_defaults() {
127+
let config = HistoricScannerConfig::new();
128+
129+
assert!(matches!(config.from_block, BlockNumberOrTag::Earliest));
130+
assert!(matches!(config.to_block, BlockNumberOrTag::Latest));
131+
}
132+
133+
#[test]
134+
fn test_historic_scanner_builder_pattern() {
135+
let config = HistoricScannerConfig::new().from_block(100u64).to_block(200u64).max_reads(50);
136+
137+
assert!(matches!(config.from_block, BlockNumberOrTag::Number(100)));
138+
assert!(matches!(config.to_block, BlockNumberOrTag::Number(200)));
139+
assert_eq!(config.base.block_range_scanner.max_read_per_epoch, 50);
140+
}
141+
142+
#[test]
143+
fn test_historic_scanner_builder_pattern_chaining() {
144+
let config = HistoricScannerConfig::new()
145+
.max_reads(25)
146+
.from_block(BlockNumberOrTag::Number(50))
147+
.to_block(BlockNumberOrTag::Number(150));
148+
149+
assert_eq!(config.base.block_range_scanner.max_read_per_epoch, 25);
150+
assert!(matches!(config.from_block, BlockNumberOrTag::Number(50)));
151+
assert!(matches!(config.to_block, BlockNumberOrTag::Number(150)));
152+
}
153+
154+
#[test]
155+
fn test_historic_scanner_builder_with_different_block_types() {
156+
let config = HistoricScannerConfig::new()
157+
.from_block(BlockNumberOrTag::Earliest)
158+
.to_block(BlockNumberOrTag::Latest);
159+
160+
assert!(matches!(config.from_block, BlockNumberOrTag::Earliest));
161+
assert!(matches!(config.to_block, BlockNumberOrTag::Latest));
162+
}
163+
}
164+

src/event_lib/modes/latest.rs

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,3 +191,80 @@ impl<N: Network> LatestEventScanner<N> {
191191
unimplemented!()
192192
}
193193
}
194+
195+
#[cfg(test)]
196+
mod tests {
197+
use super::*;
198+
199+
#[test]
200+
fn test_latest_scanner_config_defaults() {
201+
let config = LatestScannerConfig::new();
202+
203+
assert_eq!(config.count, 1);
204+
assert!(matches!(config.from_block, BlockNumberOrTag::Earliest));
205+
assert!(matches!(config.to_block, BlockNumberOrTag::Latest));
206+
assert_eq!(config.block_confirmations, DEFAULT_BLOCK_CONFIRMATIONS);
207+
assert!(!config.switch_to_live);
208+
}
209+
210+
#[test]
211+
fn test_latest_scanner_builder_pattern() {
212+
let config = LatestScannerConfig::new()
213+
.count(5)
214+
.from_block(100)
215+
.to_block(200)
216+
.block_confirmations(10)
217+
.then_live()
218+
.max_reads(50);
219+
220+
assert_eq!(config.count, 5);
221+
assert!(matches!(config.from_block, BlockNumberOrTag::Number(100)));
222+
assert!(matches!(config.to_block, BlockNumberOrTag::Number(200)));
223+
assert_eq!(config.block_confirmations, 10);
224+
assert!(config.switch_to_live);
225+
assert_eq!(config.base.block_range_scanner.max_read_per_epoch, 50);
226+
}
227+
228+
#[test]
229+
fn test_latest_scanner_builder_pattern_chaining() {
230+
let config = LatestScannerConfig::new()
231+
.max_reads(25)
232+
.block_confirmations(5)
233+
.count(3)
234+
.from_block(BlockNumberOrTag::Number(50))
235+
.to_block(BlockNumberOrTag::Number(150))
236+
.then_live();
237+
238+
assert_eq!(config.base.block_range_scanner.max_read_per_epoch, 25);
239+
assert_eq!(config.block_confirmations, 5);
240+
assert_eq!(config.count, 3);
241+
assert!(matches!(config.from_block, BlockNumberOrTag::Number(50)));
242+
assert!(matches!(config.to_block, BlockNumberOrTag::Number(150)));
243+
assert!(config.switch_to_live);
244+
}
245+
246+
#[test]
247+
fn test_latest_scanner_builder_with_different_block_types() {
248+
let config = LatestScannerConfig::new()
249+
.from_block(BlockNumberOrTag::Earliest)
250+
.to_block(BlockNumberOrTag::Latest)
251+
.count(10)
252+
.block_confirmations(20);
253+
254+
assert!(matches!(config.from_block, BlockNumberOrTag::Earliest));
255+
assert!(matches!(config.to_block, BlockNumberOrTag::Latest));
256+
assert_eq!(config.count, 10);
257+
assert_eq!(config.block_confirmations, 20);
258+
assert!(!config.switch_to_live);
259+
}
260+
261+
#[test]
262+
fn test_latest_scanner_then_live_method() {
263+
let config = LatestScannerConfig::new().then_live();
264+
assert!(config.switch_to_live);
265+
266+
let config_without_live = LatestScannerConfig::new();
267+
assert!(!config_without_live.switch_to_live);
268+
}
269+
}
270+

src/event_lib/modes/live.rs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ use super::{BaseConfig, BaseConfigBuilder};
1818

1919
pub struct LiveScannerConfig {
2020
base: BaseConfig,
21+
// Defaults to 0
2122
block_confirmations: u64,
2223
}
2324

@@ -103,3 +104,40 @@ impl<N: Network> LiveEventScanner<N> {
103104
self.inner.stream_live(self.config.block_confirmations).await
104105
}
105106
}
107+
108+
#[cfg(test)]
109+
mod tests {
110+
use super::*;
111+
112+
#[test]
113+
fn test_live_scanner_config_defaults() {
114+
let config = LiveScannerConfig::new();
115+
116+
assert_eq!(config.block_confirmations, DEFAULT_BLOCK_CONFIRMATIONS);
117+
}
118+
119+
#[test]
120+
fn test_live_scanner_builder_pattern() {
121+
let config = LiveScannerConfig::new().block_confirmations(10).max_reads(50);
122+
123+
assert_eq!(config.block_confirmations, 10);
124+
assert_eq!(config.base.block_range_scanner.max_read_per_epoch, 50);
125+
}
126+
127+
#[test]
128+
fn test_live_scanner_builder_pattern_chaining() {
129+
let config = LiveScannerConfig::new().max_reads(25).block_confirmations(5);
130+
131+
assert_eq!(config.base.block_range_scanner.max_read_per_epoch, 25);
132+
assert_eq!(config.block_confirmations, 5);
133+
}
134+
135+
#[test]
136+
fn test_live_scanner_builder_with_zero_confirmations() {
137+
let config = LiveScannerConfig::new().block_confirmations(0).max_reads(100);
138+
139+
assert_eq!(config.block_confirmations, 0);
140+
assert_eq!(config.base.block_range_scanner.max_read_per_epoch, 100);
141+
}
142+
}
143+

src/event_lib/modes/sync.rs

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,3 +117,59 @@ impl<N: Network> SyncEventScanner<N> {
117117
self.inner.stream_from(self.config.from_block, self.config.block_confirmations).await
118118
}
119119
}
120+
121+
#[cfg(test)]
122+
mod tests {
123+
use super::*;
124+
125+
#[test]
126+
fn test_sync_scanner_config_defaults() {
127+
let config = SyncScannerConfig::new();
128+
129+
assert!(matches!(config.from_block, BlockNumberOrTag::Earliest));
130+
assert_eq!(config.block_confirmations, DEFAULT_BLOCK_CONFIRMATIONS);
131+
}
132+
133+
#[test]
134+
fn test_sync_scanner_builder_pattern() {
135+
let config = SyncScannerConfig::new().from_block(100).block_confirmations(10).max_reads(50);
136+
137+
assert!(matches!(config.from_block, BlockNumberOrTag::Number(100)));
138+
assert_eq!(config.block_confirmations, 10);
139+
assert_eq!(config.base.block_range_scanner.max_read_per_epoch, 50);
140+
}
141+
142+
#[test]
143+
fn test_sync_scanner_builder_pattern_chaining() {
144+
let config = SyncScannerConfig::new()
145+
.max_reads(25)
146+
.block_confirmations(5)
147+
.from_block(BlockNumberOrTag::Number(50));
148+
149+
assert_eq!(config.base.block_range_scanner.max_read_per_epoch, 25);
150+
assert_eq!(config.block_confirmations, 5);
151+
assert!(matches!(config.from_block, BlockNumberOrTag::Number(50)));
152+
}
153+
154+
#[test]
155+
fn test_sync_scanner_builder_with_different_block_types() {
156+
let config = SyncScannerConfig::new()
157+
.from_block(BlockNumberOrTag::Earliest)
158+
.block_confirmations(20)
159+
.max_reads(100);
160+
161+
assert!(matches!(config.from_block, BlockNumberOrTag::Earliest));
162+
assert_eq!(config.block_confirmations, 20);
163+
assert_eq!(config.base.block_range_scanner.max_read_per_epoch, 100);
164+
}
165+
166+
#[test]
167+
fn test_sync_scanner_builder_with_zero_confirmations() {
168+
let config = SyncScannerConfig::new().from_block(0).block_confirmations(0).max_reads(75);
169+
170+
assert!(matches!(config.from_block, BlockNumberOrTag::Number(0)));
171+
assert_eq!(config.block_confirmations, 0);
172+
assert_eq!(config.base.block_range_scanner.max_read_per_epoch, 75);
173+
}
174+
}
175+

0 commit comments

Comments
 (0)