validateQuestions function
Reject empty question sets and invalid score criteria.
Implementation
void validateQuestions(Map<String, Question> questions) {
if (questions.isEmpty) {
throw TypeSafeException('At least one question is required.');
}
questions.forEach((name, question) {
if (question is ChoiceQuestion && question.choiceCriteria.isEmpty) {
throw TypeSafeException(
'Choice question "$name" requires at least one label.');
}
if (question is NoulQuestion &&
question.instructions == null &&
!(question.noulCriteria?.values.any((v) => v != null) ?? false)) {
throw TypeSafeException(
'Noul question "$name" requires instructions or an outcome description.');
}
if (question is! ScoreQuestion) return;
if (question.scoreCriteria.length < 2) {
throw TypeSafeException(
'Score question "$name" has ${question.scoreCriteria.length} criteria; '
'at least two scores are required.',
);
}
});
}