#![allow(dead_code)]
use std::sync::Arc;
use std::sync::Mutex;
use crate::protocol::Message;
use crate::transport::Observer;
pub struct TestNotifyCounter {
pub counter: Arc<Mutex<i32>>,
}
impl TestNotifyCounter {
pub fn new(counter: Arc<Mutex<i32>>) -> TestNotifyCounter {
TestNotifyCounter { counter: counter }
}
}
impl Observer for TestNotifyCounter {
fn message_received(&mut self, _msg: &Message) {
let mut counter = self.counter.lock().unwrap();
*counter += 1;
}
}
#[cfg(test)]
mod tests {
use crate::protocol::Message;
use crate::transport::notify_manager::*;
use crate::transport::notify_manager_test::*;
#[test]
fn notify_manager_add() {
const TEST_OBSERVER_COUNT: i32 = 10;
let counter = Arc::new(Mutex::new(0));
let observer = TestNotifyCounter::new(counter.clone());
let observer = Arc::new(Mutex::new(observer));
let mut mgr = NotifytManager::new();
assert!(mgr.start());
for _ in 0..TEST_OBSERVER_COUNT {
assert!(mgr.add_observer(observer.clone()));
}
assert!(mgr.stop());
}
#[test]
fn notify_manager_received() {
const TEST_OBSERVER_COUNT: i32 = 10;
let counter = Arc::new(Mutex::new(0));
let mut mgr = NotifytManager::new();
assert!(mgr.start());
for _ in 0..TEST_OBSERVER_COUNT {
let observer = TestNotifyCounter::new(counter.clone());
assert!(mgr.add_observer(Arc::new(Mutex::new(observer))));
}
let msg = Message::new();
assert!(mgr.notify(&msg));
assert_eq!(*counter.lock().unwrap(), TEST_OBSERVER_COUNT);
assert!(mgr.stop());
}
}