pub use ag_protocol::QuestionItem;
#[must_use]
pub fn default_option_index(questions: &[QuestionItem], question_index: usize) -> Option<usize> {
questions
.get(question_index)
.filter(|item| !item.options.is_empty())
.map(|_| 0)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn default_option_index_selects_only_predefined_options() {
let questions = [
QuestionItem::with_options("Continue?", vec!["Yes".to_string()]),
QuestionItem::new("Why?"),
];
let predefined = default_option_index(&questions, 0);
let free_text = default_option_index(&questions, 1);
let missing = default_option_index(&questions, 2);
assert_eq!(predefined, Some(0));
assert_eq!(free_text, None);
assert_eq!(missing, None);
}
}