use std::collections::HashMap;
use crate::measurement::Measurement;
use crate::types::Bus;
use super::SeNetwork;
pub struct SeCase {
pub network: SeNetwork,
pub buses: Vec<Bus>,
pub measurements: Vec<Measurement>,
pub node_idx: HashMap<u64, usize>,
pub phases: usize,
}
impl SeCase {
pub fn bus_of(&self, node: u64, phase: usize) -> Option<usize> {
let idx = *self.node_idx.get(&node)?;
Some(self.phases * idx + if self.phases == 1 { 0 } else { phase })
}
pub fn nodes(&self) -> Vec<(u64, usize)> {
let mut out: Vec<(u64, usize)> = self.node_idx.iter().map(|(&id, &i)| (id, i)).collect();
out.sort_unstable();
out
}
}
pub const PHASE_NAMES: [&str; 3] = ["a", "b", "c"];