Skip to content

Commit 49b8c58

Browse files
committed
Simplify BlockNotifier tests
Use a simple ChainListner implementation rather than large test objects for testing BlockNotifier. Remove unregister_single_listener_ref_test since it is redundant with unregister_single_listener_test. Remove unnecessary clone() calls.
1 parent 7ee34ba commit 49b8c58

File tree

1 file changed

+25
-41
lines changed

1 file changed

+25
-41
lines changed

lightning/src/chain/chaininterface.rs

Lines changed: 25 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -361,77 +361,61 @@ impl ChainWatchInterfaceUtil {
361361

362362
#[cfg(test)]
363363
mod tests {
364-
use ln::functional_test_utils::{create_chanmon_cfgs, create_node_cfgs};
364+
use bitcoin::blockdata::block::{Block, BlockHeader};
365365
use super::{BlockNotifier, ChainListener};
366366
use std::ptr;
367367

368+
struct TestChainListener(u8);
369+
370+
impl ChainListener for TestChainListener {
371+
fn block_connected(&self, _block: &Block, _height: u32) {}
372+
fn block_disconnected(&self, _header: &BlockHeader, _disconnected_height: u32) {}
373+
}
374+
368375
#[test]
369376
fn register_listener_test() {
370-
let chanmon_cfgs = create_chanmon_cfgs(1);
371-
let node_cfgs = create_node_cfgs(1, &chanmon_cfgs);
372377
let block_notifier = BlockNotifier::new();
373378
assert_eq!(block_notifier.listeners.lock().unwrap().len(), 0);
374-
let listener = &node_cfgs[0].chan_monitor.simple_monitor as &ChainListener;
375-
block_notifier.register_listener(listener);
379+
let listener = &TestChainListener(0);
380+
block_notifier.register_listener(listener as &ChainListener);
376381
let vec = block_notifier.listeners.lock().unwrap();
377382
assert_eq!(vec.len(), 1);
378-
let item = vec.first().clone().unwrap();
379-
assert!(ptr::eq(&(**item), &(*listener)));
383+
let item = vec.first().unwrap();
384+
assert!(ptr::eq(&(**item), listener));
380385
}
381386

382387
#[test]
383388
fn unregister_single_listener_test() {
384-
let chanmon_cfgs = create_chanmon_cfgs(2);
385-
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
386389
let block_notifier = BlockNotifier::new();
387-
let listener1 = &node_cfgs[0].chan_monitor.simple_monitor as &ChainListener;
388-
let listener2 = &node_cfgs[1].chan_monitor.simple_monitor as &ChainListener;
389-
block_notifier.register_listener(listener1);
390-
block_notifier.register_listener(listener2);
390+
let listener1 = &TestChainListener(1);
391+
let listener2 = &TestChainListener(2);
392+
block_notifier.register_listener(listener1 as &ChainListener);
393+
block_notifier.register_listener(listener2 as &ChainListener);
391394
let vec = block_notifier.listeners.lock().unwrap();
392395
assert_eq!(vec.len(), 2);
393396
drop(vec);
394397
block_notifier.unregister_listener(listener1);
395398
let vec = block_notifier.listeners.lock().unwrap();
396399
assert_eq!(vec.len(), 1);
397-
let item = vec.first().clone().unwrap();
398-
assert!(ptr::eq(&(**item), &(*listener2)));
399-
}
400-
401-
#[test]
402-
fn unregister_single_listener_ref_test() {
403-
let chanmon_cfgs = create_chanmon_cfgs(2);
404-
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
405-
let block_notifier = BlockNotifier::new();
406-
block_notifier.register_listener(&node_cfgs[0].chan_monitor.simple_monitor as &ChainListener);
407-
block_notifier.register_listener(&node_cfgs[1].chan_monitor.simple_monitor as &ChainListener);
408-
let vec = block_notifier.listeners.lock().unwrap();
409-
assert_eq!(vec.len(), 2);
410-
drop(vec);
411-
block_notifier.unregister_listener(&node_cfgs[0].chan_monitor.simple_monitor);
412-
let vec = block_notifier.listeners.lock().unwrap();
413-
assert_eq!(vec.len(), 1);
414-
let item = vec.first().clone().unwrap();
415-
assert!(ptr::eq(&(**item), &(*&node_cfgs[1].chan_monitor.simple_monitor)));
400+
let item = vec.first().unwrap();
401+
assert!(ptr::eq(&(**item), listener2));
416402
}
417403

418404
#[test]
419405
fn unregister_multiple_of_the_same_listeners_test() {
420-
let chanmon_cfgs = create_chanmon_cfgs(2);
421-
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
422406
let block_notifier = BlockNotifier::new();
423-
let listener1 = &node_cfgs[0].chan_monitor.simple_monitor as &ChainListener;
424-
let listener2 = &node_cfgs[1].chan_monitor.simple_monitor as &ChainListener;
425-
block_notifier.register_listener(listener1);
426-
block_notifier.register_listener(listener1);
427-
block_notifier.register_listener(listener2);
407+
let listener1 = &TestChainListener(1);
408+
let listener2 = &TestChainListener(2);
409+
block_notifier.register_listener(listener1 as &ChainListener);
410+
block_notifier.register_listener(listener1 as &ChainListener);
411+
block_notifier.register_listener(listener2 as &ChainListener);
428412
let vec = block_notifier.listeners.lock().unwrap();
429413
assert_eq!(vec.len(), 3);
430414
drop(vec);
431415
block_notifier.unregister_listener(listener1);
432416
let vec = block_notifier.listeners.lock().unwrap();
433417
assert_eq!(vec.len(), 1);
434-
let item = vec.first().clone().unwrap();
435-
assert!(ptr::eq(&(**item), &(*listener2)));
418+
let item = vec.first().unwrap();
419+
assert!(ptr::eq(&(**item), listener2));
436420
}
437421
}

0 commit comments

Comments
 (0)