use crate::theme::types::Settings;
fn normalize_vertical_layout(settings: &mut Settings) {
const CAP: u16 = 500;
let clamp = |v: u16| v.clamp(1, CAP);
settings.vertical_min_results = clamp(settings.vertical_min_results);
settings.vertical_min_middle = clamp(settings.vertical_min_middle);
settings.vertical_min_package_info = clamp(settings.vertical_min_package_info);
settings.vertical_max_results = clamp(settings.vertical_max_results);
settings.vertical_max_middle = clamp(settings.vertical_max_middle);
if settings.vertical_max_results < settings.vertical_min_results {
settings.vertical_max_results = settings.vertical_min_results;
}
if settings.vertical_max_middle < settings.vertical_min_middle {
settings.vertical_max_middle = settings.vertical_min_middle;
}
}
pub fn normalize(settings: &mut Settings) {
normalize_vertical_layout(settings);
if settings.mirror_count == 0 {
settings.mirror_count = 20;
}
if settings.mirror_count > 200 {
settings.mirror_count = 200;
}
if !settings.selected_countries.is_empty() {
settings.selected_countries = settings
.selected_countries
.split(',')
.map(str::trim)
.filter(|s| !s.is_empty())
.collect::<Vec<_>>()
.join(", ");
}
if !settings.pkgbuild_shellcheck_exclude.is_empty() {
settings.pkgbuild_shellcheck_exclude = settings
.pkgbuild_shellcheck_exclude
.split(',')
.map(str::trim)
.filter(|s| !s.is_empty())
.collect::<Vec<_>>()
.join(", ");
}
settings.virustotal_api_key = settings.virustotal_api_key.trim().to_string();
}
#[cfg(test)]
mod tests {
use super::normalize;
use crate::theme::types::Settings;
#[test]
fn normalize_vertical_clamps_middle_max_below_min() {
let mut s = Settings {
vertical_min_middle: 8,
vertical_max_middle: 3,
..Settings::default()
};
normalize(&mut s);
assert_eq!(s.vertical_max_middle, 8);
}
#[test]
fn normalize_vertical_clamps_zero_mins_to_one() {
let mut s = Settings {
vertical_min_results: 0,
..Settings::default()
};
normalize(&mut s);
assert_eq!(s.vertical_min_results, 1);
}
}