// 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), } }