use crate::construction as c;
fn names(table: &'static [c::ElementSpec]) -> Vec<&'static str> {
table.iter().map(|e| e.name).collect()
}
pub fn phase_fields() -> Vec<&'static str> {
names(c::PHASE_ELEMENTS)
}
pub fn op_model_fields() -> Vec<&'static str> {
names(c::OP_MODEL_ELEMENTS)
}
pub fn op_stmt_fields() -> Vec<&'static str> {
names(c::OP_STMT_ELEMENTS)
}
pub fn phase_poll_fields() -> Vec<&'static str> {
names(c::POLL_ELEMENTS)
}
pub fn abstract_interface_keys() -> Vec<&'static str> {
names(c::ABSTRACT_ELEMENTS)
}
pub fn evaluation_kinds() -> Vec<&'static str> {
names(c::EVALUATIONS_ELEMENTS)
}
pub fn scenario_node_keys() -> Vec<&'static str> {
names(c::SCENARIO_NODE_ELEMENTS)
}
pub fn binding_classes() -> Vec<&'static str> {
names(c::BINDING_CLASS_ELEMENTS)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn projections_reflect_the_construction_tables() {
assert!(phase_fields().contains(&"poll"));
assert!(op_model_fields().contains(&"abstract"));
assert!(op_stmt_fields().contains(&"stmt"));
assert!(phase_poll_fields().contains(&"until"));
assert!(abstract_interface_keys().contains(&"results"));
assert!(evaluation_kinds().contains(&"relevancy"));
assert!(scenario_node_keys().contains(&"for_combinations"));
assert!(binding_classes().contains(&"cursor"));
}
}