'use strict'; const SelectPrompt = require('./select'); class Quiz extends SelectPrompt { constructor(options) { super(options); if (typeof this.options.correctChoice !== 'number' || this.options.correctChoice < 0) { throw new Error('Please specify the index of the correct answer from the list of choices'); } } async toChoices(value, parent) { let choices = await super.toChoices(value, parent); if (choices.length < 2) { throw new Error('Please give at least two choices to the user'); } if (this.options.correctChoice > choices.length) { throw new Error('Please specify the index of the correct answer from the list of choices'); } return choices; } check(state) { return state.index === this.options.correctChoice; } async result(selected) { return { selectedAnswer: selected, correctAnswer: this.options.choices[this.options.correctChoice].value, correct: await this.check(this.state) }; } } module.exports = Quiz;