1pub use ag_protocol::QuestionItem;
4
5#[must_use]
10pub fn default_option_index(questions: &[QuestionItem], question_index: usize) -> Option<usize> {
11 questions
12 .get(question_index)
13 .filter(|item| !item.options.is_empty())
14 .map(|_| 0)
15}
16
17#[cfg(test)]
18mod tests {
19 use super::*;
20
21 #[test]
22 fn default_option_index_selects_only_predefined_options() {
23 let questions = [
25 QuestionItem::with_options("Continue?", vec!["Yes".to_string()]),
26 QuestionItem::new("Why?"),
27 ];
28
29 let predefined = default_option_index(&questions, 0);
31 let free_text = default_option_index(&questions, 1);
32 let missing = default_option_index(&questions, 2);
33
34 assert_eq!(predefined, Some(0));
36 assert_eq!(free_text, None);
37 assert_eq!(missing, None);
38 }
39}