Files
games/crates/common/game-realtime-websocket-lib/unit_tests/config.rs
2026-09-21 18:00:32 +02:00

41 lines
1.9 KiB
Rust

// file: crates/common/game-realtime-websocket-lib/unit_tests/config.rs
// version: 1
#[test]
fn default_configuration_matches_the_product_baseline() {
let config = crate::WebSocketConfig::default();
assert_eq!(config.max_message_size(), 1024 * 1024);
assert_eq!(config.max_frame_size(), 1024 * 1024);
assert_eq!(config.write_buffer_size(), 64 * 1024);
assert_eq!(config.max_write_buffer_size(), 2 * 1024 * 1024);
assert_eq!(config.connect_timeout(), std::time::Duration::from_secs(10));
assert_eq!(config.send_timeout(), std::time::Duration::from_secs(5));
assert_eq!(config.close_timeout(), std::time::Duration::from_secs(2));
assert!(config.validate().is_ok());
}
#[test]
fn invalid_message_and_write_buffer_bounds_are_rejected() {
let zero_message = crate::WebSocketConfig::default().with_max_message_size(0);
assert_invalid_configuration(zero_message);
let oversized_frame = crate::WebSocketConfig::default().with_max_frame_size(2 * 1024 * 1024);
assert_invalid_configuration(oversized_frame);
let insufficient_write_buffer = crate::WebSocketConfig::default().with_max_write_buffer_size(1024 * 1024);
assert_invalid_configuration(insufficient_write_buffer);
}
#[test]
fn zero_operation_deadlines_are_rejected() {
assert_invalid_configuration(crate::WebSocketConfig::default().with_connect_timeout(std::time::Duration::ZERO));
assert_invalid_configuration(crate::WebSocketConfig::default().with_send_timeout(std::time::Duration::ZERO));
assert_invalid_configuration(crate::WebSocketConfig::default().with_close_timeout(std::time::Duration::ZERO));
}
fn assert_invalid_configuration(config: crate::WebSocketConfig) {
let result = config.validate();
match result {
Ok(()) => panic!("invalid WebSocket configuration was accepted"),
Err(error) => assert_eq!(error.kind(), game_realtime_transport_lib::TransportErrorKind::InvalidConfiguration),
}
}