pub mod setup;
use setup::*;
#[test]
fn pairs() {
let mut tests = [
TestSession::new_pair(2000),
#[cfg(all(feature = "encryption", feature = "compression"))]
TestSession::new_pair_pack(2010),
];
for s in tests.iter_mut() {
check_cases(s);
}
}
#[test]
fn triples() {
let mut tests = [
TestSession::new_triple(2001),
#[cfg(all(feature = "encryption", feature = "compression"))]
TestSession::new_triple_pack(2011),
];
for s in tests.iter_mut() {
check_cases(s);
}
}
#[test]
#[ignore]
fn quads() {
let mut tests = [
TestSession::new_quad(2003),
#[cfg(all(feature = "encryption", feature = "compression"))]
TestSession::new_quad_pack(2013),
];
for s in tests.iter_mut() {
check_cases(s);
}
}
fn check_cases(s: &mut TestSession) {
let m: Msg = "mssgio".to_string().into();
println!("TEST /// Broadcasting from server");
s.server_broadcast(m.clone());
s.assert_all_clients_received_broacast(s.server_uuid(), m.clone());
println!("TEST /// Broadcasting from client");
let uuid = s.first_client_broadcast(m.clone()).unwrap();
println!("TEST /// client: {uuid}");
s.assert_server_received_broacast(uuid, m.clone());
s.exhaust();
println!("TEST /// Sending to specific client");
let uuid = *s.clients().iter().next().unwrap();
s.server_send_to(uuid, m.clone());
s.assert_only_client_received(s.server_uuid(), uuid, m.clone());
println!("TEST /// Sending to specific server");
let uuid = s.first_client_send_to_server(m.clone()).unwrap();
println!("TEST /// client: {uuid}");
s.assert_only_server_received(uuid, m.clone());
println!("TEST /// Client leaving");
s.client_leave(uuid);
s.assert_client_left(uuid);
}
#[test]
fn promotion() {
let mut s = TestSession::new_triple(2100);
let promote = *s.clients().iter().next().unwrap();
println!("TEST /// Promoting {promote} to server");
s.promote_to_host(promote, 2104);
println!("TEST /// Broadcasting after migration");
let m: Msg = "promo".to_string().into();
s.server_broadcast(m.clone());
s.assert_all_clients_received_broacast(s.server_uuid(), m);
}