use a7n_proto::limits::SCREEN_MM_MAX;
#[must_use]
pub fn screen_size_mm(size: (u32, u32)) -> Option<(u32, u32)> {
let (width, height) = size;
(width > 0 && height > 0 && width <= SCREEN_MM_MAX && height <= SCREEN_MM_MAX).then_some(size)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn screen_size_mm_received_sizes_keeps_only_valid_dimensions() {
let cases = [
((310, 174), Some((310, 174))),
(
(SCREEN_MM_MAX, SCREEN_MM_MAX),
Some((SCREEN_MM_MAX, SCREEN_MM_MAX)),
),
((0, 174), None),
((310, 0), None),
((SCREEN_MM_MAX + 1, 174), None),
((310, SCREEN_MM_MAX + 1), None),
];
for ((width, height), expected) in cases {
let wire = a7n_proto::v1::ScreenSize { width, height };
let actual = screen_size_mm((wire.width, wire.height));
assert_eq!(actual, expected);
}
}
}