#[derive(Clone, Debug, PartialEq, Eq)]
pub struct ServerConfig {
pub enable_subscriptions: bool,
pub max_subscriptions: usize,
pub max_subscription_duration_secs: u64,
pub heartbeat_interval: u64,
pub enable_multiplex: bool,
}
impl Default for ServerConfig {
fn default() -> Self {
ServerConfig {
enable_subscriptions: true,
max_subscriptions: 1000,
max_subscription_duration_secs: 3600,
heartbeat_interval: 30,
enable_multiplex: false,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_default_config() {
let config = ServerConfig::default();
assert!(config.enable_subscriptions);
assert_eq!(config.max_subscriptions, 1000);
assert_eq!(config.max_subscription_duration_secs, 3600);
assert_eq!(config.heartbeat_interval, 30);
assert!(!config.enable_multiplex);
}
#[test]
fn test_custom_config() {
let config = ServerConfig {
enable_subscriptions: false,
max_subscriptions: 5000,
max_subscription_duration_secs: 7200,
heartbeat_interval: 60,
enable_multiplex: true,
};
assert!(!config.enable_subscriptions);
assert_eq!(config.max_subscriptions, 5000);
assert!(config.enable_multiplex);
}
#[test]
fn test_partial_override() {
let config = ServerConfig {
max_subscriptions: 5000,
..Default::default()
};
assert_eq!(config.max_subscriptions, 5000);
assert!(config.enable_subscriptions);
assert_eq!(config.heartbeat_interval, 30);
}
#[test]
fn test_clone() {
let config = ServerConfig::default();
let cloned = config.clone();
assert_eq!(config, cloned);
}
#[test]
fn test_debug() {
let config = ServerConfig::default();
let debug = format!("{:?}", config);
assert!(debug.contains("ServerConfig"));
assert!(debug.contains("enable_subscriptions"));
}
}