public MultipleSelectionQuestion CreateQuestion(int examId)
        {
            var question = new MultipleSelectionQuestion {
                Description = "Pregunta nueva", ExamId = examId
            };

            var list = new List <QuestionOption>
            {
                new QuestionOption {
                    Description = "Opción 1", Feedback = "Feedback de opción 1", IsCorrect = true
                },
                new QuestionOption {
                    Description = "Opción 2", Feedback = "Feedback de opción 2", IsCorrect = false
                },
                new QuestionOption {
                    Description = "Opción 3", Feedback = "Feedback de opción 3", IsCorrect = false
                },
                new QuestionOption {
                    Description = "Opción 4", Feedback = "Feedback de opción 4", IsCorrect = false
                },
                new QuestionOption {
                    Description = "Opción 5", Feedback = "Feedback de opción 5", IsCorrect = false
                }
            };

            question.Options = list;

            _db.MultipleSelectionQuestions.Add(question);
            _db.SaveChanges();

            return(question);
        }
Exemplo n.º 2
0
        public void WhenUpdatingTheElementsInTheSelectionsListInTheViewModel_ThenResponseIsSetInTheModelAndValidationIsUpdated()
        {
            var question = new MultipleSelectionQuestion {
                Range = new[] { "a", "b", "c" }, MaxSelections = 2
            };
            var questionAsINDEI = question as INotifyDataErrorInfo;
            var viewModel       = new MultipleSelectionQuestionViewModel(question);

            viewModel.Selections.Add("a");

            CollectionAssert.AreEqual((ICollection)viewModel.Selections, question.Response.ToArray());
            Assert.IsFalse(questionAsINDEI.HasErrors);

            viewModel.Selections.Add("b");

            CollectionAssert.AreEqual((ICollection)viewModel.Selections, question.Response.ToArray());
            Assert.IsFalse(questionAsINDEI.HasErrors);

            viewModel.Selections.Add("c");

            CollectionAssert.AreEqual((ICollection)viewModel.Selections, question.Response.ToArray());
            Assert.IsTrue(questionAsINDEI.HasErrors);

            viewModel.Selections.Remove("a");

            CollectionAssert.AreEqual((ICollection)viewModel.Selections, question.Response.ToArray());
            Assert.IsFalse(questionAsINDEI.HasErrors);
        }
Exemplo n.º 3
0
        public void WhenUpdatingTheCollectionInitializedByTheViewModel_ThenTheViewModelNotifiesChangesToTheResponse()
        {
            var question = new MultipleSelectionQuestion {
                Range = new[] { "a", "b", "c" }, MaxSelections = 2
            };
            var viewModel       = new MultipleSelectionQuestionViewModel(question);
            int responseChanges = 0;

            viewModel.ResponseChanged += (s, e) => responseChanges++;

            viewModel.Selections.Add("a");

            Assert.AreEqual(1, responseChanges);

            viewModel.Selections.Add("b");

            Assert.AreEqual(2, responseChanges);

            viewModel.Selections.Add("c");

            Assert.AreEqual(3, responseChanges);

            viewModel.Selections.Remove("b");

            Assert.AreEqual(4, responseChanges);
        }
Exemplo n.º 4
0
        public void WhenCreatingAViewModelForAQuestionWithNullResponse_ThenInitializesTheResponseToAnEmptyCollection()
        {
            var question = new MultipleSelectionQuestion {
                Range = new[] { "a", "b", "c" }
            };
            var viewModel = new MultipleSelectionQuestionViewModel(question);

            CollectionAssert.AreEqual(new string[0], question.Response.ToArray());
        }
        public void WhenQuestionIsNew_ThenItIsNotComplete()
        {
            var question =
                new MultipleSelectionQuestion()
            {
                Range         = new[] { "one", "two", "three" },
                MaxSelections = 2
            };

            Assert.IsFalse(question.IsComplete);
        }
Exemplo n.º 6
0
        public void WhenCreatingTheViewModel_ThenHasChangesIsFalse()
        {
            var question = new MultipleSelectionQuestion {
                Range = new[] { "a", "b", "c" }, MaxSelections = 2
            };
            var viewModel = new MultipleSelectionQuestionViewModel(question);

            bool hasChanges = false;

            viewModel.ResponseChanged += (o, e) => { hasChanges = true; };
            Assert.IsFalse(hasChanges);
        }
        public void WhenQuestionHasValidValue_ThenItIsComplete()
        {
            var question =
                new MultipleSelectionQuestion()
            {
                Range         = new[] { "one", "two", "three" },
                MaxSelections = 2
            };

            question.Response = new[] { "one" };

            Assert.IsTrue(question.IsComplete);
        }
Exemplo n.º 8
0
        public void WhenSettingASelectionOnTheViewModel_ThenHasChangesIsTrue()
        {
            var question = new MultipleSelectionQuestion {
                Range = new[] { "a", "b", "c" }, MaxSelections = 2
            };
            var viewModel       = new MultipleSelectionQuestionViewModel(question);
            int responseChanges = 0;

            viewModel.ResponseChanged += (s, e) => responseChanges++;

            viewModel.Selections.Add("a");

            Assert.IsTrue(responseChanges > 0);
        }
        public void WhenResponseHasLessElementsThanMax_ThenIndicatesNoErrorOnResponse()
        {
            var question =
                new MultipleSelectionQuestion()
            {
                Range         = new[] { "one", "two", "three" },
                MaxSelections = 2
            };

            var notifyErrorInfo = (INotifyDataErrorInfo)question;

            question.Response = new[] { "one" };

            Assert.IsFalse(notifyErrorInfo.GetErrors("Response").Cast <string>().Any());
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="MultipleSelectionAnswer"/> class.
        /// Initiates values according to a specific question that will be answered.
        /// </summary>
        /// <param name="question">Question that it will be answering.</param>
        public MultipleSelectionAnswer(MultipleSelectionQuestion question)
        {
            QuestionId = question.Id;

            Selections = new List <BinaryOptionSelection>();

            foreach (var option in question.Options)
            {
                Selections.Add(new BinaryOptionSelection
                {
                    MultipleSelectionQuestionId = question.Id,
                    QuestionOptionId            = option.Id,
                    Selected = false
                });
            }
        }
Exemplo n.º 11
0
        /// <summary>
        /// Evaluates a question, removing all notation and leaving the variables' names.
        /// </summary>
        /// <param name="question">Question to be evaluated.</param>
        /// <returns>Evaluated question.</returns>
        public Question Evaluate(Question question)
        {
            var selectionQuestion = question as SelectionQuestion;

            if (selectionQuestion != null)
            {
                SelectionQuestion aux;
                if (question is MultipleSelectionQuestion)
                {
                    aux = new MultipleSelectionQuestion
                    {
                        Description = selectionQuestion.Description,
                        ExamId      = selectionQuestion.ExamId,
                        Options     = selectionQuestion.Options,
                        Answers     = selectionQuestion.Answers,
                        Exam        = selectionQuestion.Exam,
                        Id          = selectionQuestion.Id,
                        Variables   = selectionQuestion.Variables
                    };
                }
                else
                {
                    aux = new SingleSelectionQuestion
                    {
                        Description = selectionQuestion.Description,
                        ExamId      = selectionQuestion.ExamId,
                        Options     = selectionQuestion.Options,
                        Answers     = selectionQuestion.Answers,
                        Exam        = selectionQuestion.Exam,
                        Id          = selectionQuestion.Id,
                        Variables   = selectionQuestion.Variables
                    };
                }

                aux.Description = aux.Description.Replace("%", string.Empty).Replace("|", string.Empty);

                foreach (var option in aux.Options)
                {
                    option.Description = option.Description.Replace("%", string.Empty).Replace("|", string.Empty);
                }

                return(aux);
            }

            return(null);
        }
        public void WhenSettingResponseToNull_ThenIndicatesErrorOnResponse()
        {
            var question =
                new MultipleSelectionQuestion()
            {
                Range         = new[] { "one", "two", "three" },
                MaxSelections = 2
            };

            var notifyErrorInfo = (INotifyDataErrorInfo)question;

            question.Response = new[] { "one" };
            Assert.IsFalse(notifyErrorInfo.GetErrors("Response").Cast <string>().Any());

            question.Response = null;
            Assert.IsTrue(notifyErrorInfo.GetErrors("Response").Cast <string>().Any());
        }
        public void SaveQuestion(QuestionWithOptionsViewModel model)
        {
            MultipleSelectionQuestion question = new MultipleSelectionQuestion
            {
                Id          = model.Id,
                ExamId      = model.ExamId,
                Description = model.Description,
                Options     = model.Options
            };

            _db.Entry(question).State = EntityState.Modified;
            foreach (var option in question.Options)
            {
                _db.Entry(option).State = EntityState.Modified;
            }

            _db.SaveChanges();
        }
        public MultipleSelectionQuestion EvaluateNotationless(MultipleSelectionQuestion question)
        {
            var evaluator = new NotationlessEvaluator();

            return(evaluator.Evaluate(question) as MultipleSelectionQuestion);
        }
        public override Question CreateNewQuestion()
        {
            var question = new MultipleSelectionQuestion(this);

            return(question);
        }
 public override Question CreateNewQuestion()
 {
     var question = new MultipleSelectionQuestion(this);
     return question;
 }