pub const DEFAULT_VERSION: u8 = 7;
pub const DEFAULT_LIFETIME: u64 = 3600;
pub const DEFAULT_REPORT_TO: &str = "none";
pub const BUNDLES_DIR: &str = "./bundles";
pub const DISPATCHED_DIR: &str = "./bundles/dispatched";
pub const BUNDLES_BASIC_DIR: &str = "./bundles/basic";
pub const BUNDLES_ADVANCED_DIR: &str = "./bundles/advanced";
pub const BUNDLES_CUSTOM_ROUTING_DIR: &str = "./bundles/custom_routing";
pub mod ble {
pub const SERVICE_UUID: &str = "12345678-1234-5678-1234-56789abcdef0";
pub const WRITE_CHAR_UUID: &str = "12345678-1234-5678-1234-56789abcdef1";
pub const NOTIFY_CHAR_UUID: &str = "12345678-1234-5678-1234-56789abcdef2";
pub const ADV_NAME: &str = "spacearth-dtn-ble";
pub const ACK: &[u8] = b"ACK\n";
}
pub mod tcp {
pub const ACK: &str = "ACK";
pub const OK: &str = "OK";
pub const SUCCESS: &str = "SUCCESS";
pub const RECEIVED: &str = "RECEIVED";
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_default_constants() {
assert_eq!(DEFAULT_VERSION, 7);
assert_eq!(DEFAULT_LIFETIME, 3600);
assert_eq!(DEFAULT_REPORT_TO, "none");
assert_eq!(BUNDLES_DIR, "./bundles");
assert_eq!(DISPATCHED_DIR, "./bundles/dispatched");
}
#[test]
fn test_ble_constants() {
assert_eq!(ble::SERVICE_UUID, "12345678-1234-5678-1234-56789abcdef0");
assert_eq!(ble::WRITE_CHAR_UUID, "12345678-1234-5678-1234-56789abcdef1");
assert_eq!(
ble::NOTIFY_CHAR_UUID,
"12345678-1234-5678-1234-56789abcdef2"
);
assert_eq!(ble::ADV_NAME, "spacearth-dtn-ble");
assert_eq!(ble::ACK, b"ACK\n");
}
#[test]
fn test_tcp_constants() {
assert_eq!(tcp::ACK, "ACK");
assert_eq!(tcp::OK, "OK");
assert_eq!(tcp::SUCCESS, "SUCCESS");
assert_eq!(tcp::RECEIVED, "RECEIVED");
}
#[test]
fn test_ble_uuid_format() {
let service_uuid = ble::SERVICE_UUID;
let parts: Vec<&str> = service_uuid.split('-').collect();
assert_eq!(parts.len(), 5);
assert_eq!(parts[0].len(), 8);
assert_eq!(parts[1].len(), 4);
assert_eq!(parts[2].len(), 4);
assert_eq!(parts[3].len(), 4);
assert_eq!(parts[4].len(), 12);
assert_ne!(ble::SERVICE_UUID, ble::WRITE_CHAR_UUID);
assert_ne!(ble::SERVICE_UUID, ble::NOTIFY_CHAR_UUID);
assert_ne!(ble::WRITE_CHAR_UUID, ble::NOTIFY_CHAR_UUID);
}
#[test]
fn test_ack_bytes() {
let ack_bytes = ble::ACK;
assert_eq!(ack_bytes.len(), 4);
assert_eq!(ack_bytes[0], b'A');
assert_eq!(ack_bytes[1], b'C');
assert_eq!(ack_bytes[2], b'K');
assert_eq!(ack_bytes[3], b'\n');
}
#[test]
fn test_directory_paths() {
assert!(BUNDLES_DIR.starts_with("./"));
assert!(DISPATCHED_DIR.starts_with("./bundles/"));
assert_ne!(BUNDLES_DIR, DISPATCHED_DIR);
assert_eq!(BUNDLES_BASIC_DIR, "./bundles/basic");
assert_eq!(BUNDLES_ADVANCED_DIR, "./bundles/advanced");
assert_eq!(BUNDLES_CUSTOM_ROUTING_DIR, "./bundles/custom_routing");
assert_ne!(BUNDLES_BASIC_DIR, BUNDLES_ADVANCED_DIR);
assert_ne!(BUNDLES_BASIC_DIR, BUNDLES_CUSTOM_ROUTING_DIR);
assert_ne!(BUNDLES_ADVANCED_DIR, BUNDLES_CUSTOM_ROUTING_DIR);
}
#[test]
fn test_tcp_string_constants_not_empty() {
assert_ne!(tcp::ACK, tcp::OK);
assert_ne!(tcp::ACK, tcp::SUCCESS);
assert_ne!(tcp::ACK, tcp::RECEIVED);
}
#[test]
fn test_lifetime_is_positive() {
assert_eq!(DEFAULT_LIFETIME, 60 * 60); }
}