use {crate::client::types, std::collections::HashSet};
pub fn select_networks(
available_networks: HashSet<types::NetworkIdentifier>,
network: &Option<types::NetworkIdentifier>,
) -> HashSet<types::NetworkIdentifier> {
match network {
Some(ref network) => HashSet::from([network.clone()]),
None => {
available_networks
}
}
}
#[cfg(test)]
mod test {
use super::*;
#[fuchsia::test]
fn select_networks_selects_specified_network() {
let ssid = "foo";
let all_networks = vec![
types::NetworkIdentifier {
ssid: ssid.try_into().unwrap(),
security_type: types::SecurityType::Wpa3,
},
types::NetworkIdentifier {
ssid: ssid.try_into().unwrap(),
security_type: types::SecurityType::Wpa2,
},
];
let all_network_set = HashSet::from_iter(all_networks.clone());
let desired_network = all_networks[0].clone();
let selected_network =
select_networks(all_network_set.clone(), &Some(desired_network.clone()));
assert_eq!(selected_network, HashSet::from([desired_network]));
assert_eq!(select_networks(all_network_set.clone(), &None), all_network_set);
}
}