public void CheckTest() { _checkAnswer.Check(CORRECT_ANSWER, ANSWER); Assert.AreEqual(CORRECT, _checkAnswer._result); Assert.AreEqual(1, _checkAnswer._point); _checkAnswer.Check(WRONG_ANSWER, ANSWER); Assert.AreEqual(WRONG, _checkAnswer._result); }
public void CheckAsnwer_bracketError() { string expected = "Bracket Error!"; Dictionary <string, double> dictTest = new Dictionary <string, double> { { "f1", 5 }, { "f2", 3 } }; CheckAnswer check = new CheckAnswer(dictTest); check.Formula = "(f1+ f2)*f2)"; Assert.AreEqual(expected, check.Check()); }
public void CheckAsnwer_nullemptyError() { string expected = "NullOrEmpty Error!"; Dictionary <string, double> dictTest = new Dictionary <string, double> { { "f1", 5 }, { "f2", 3 } }; CheckAnswer check = new CheckAnswer(dictTest); check.Formula = ""; Assert.AreEqual(expected, check.Check()); }
public void CheckAsnwerF1andF2_resultmin2() { string expected = "-2"; Dictionary <string, double> dictTest = new Dictionary <string, double> { { "f1", 5 }, { "f2", 3 } }; CheckAnswer check = new CheckAnswer(dictTest); check.Formula = "F2 - F1"; Assert.AreEqual(expected, check.Check()); }
public void UnknownData_Error() { string expected = "UnknownData Error!"; Dictionary <string, double> dictTest = new Dictionary <string, double> { { "f1", 5 }, { "f2", 3 } }; CheckAnswer check = new CheckAnswer(dictTest); check.Formula = "HB"; Assert.AreEqual(expected, check.Check()); }
public void CheckAsnwer10and10_result20() { int result = 20; Dictionary <string, double> dictTest = new Dictionary <string, double> { { "f1", 5 }, { "f2", 3 } }; CheckAnswer check = new CheckAnswer(dictTest); check.Formula = "10 + 10"; Assert.AreEqual(check.Check(), result.ToString()); }
//подтверждение ответа private async void confirmAnswer_Click(object sender, RoutedEventArgs e) { if (test1) { return; } test1 = true; TestControl test_one = new TestControl(); // Создаем словарь исходных данных if (checkAnswer.Variables == null) { checkAnswer.Variables = questions.getQuestionParams(choiceBlock.theme, choiceBlock.blockID, choiceNextPage.loadID, choiceNextPage.variantID); } // Создаем счетчик попыток для каждой неизвестной переменной, которую необходимо найти. if (numTry == null) { numTry = new List <int>(); foreach (var item in questions.getQuestionFinds(choiceBlock.theme, choiceBlock.blockID, choiceNextPage.loadID, choiceNextPage.variantID, stageNum)) { numTry.Add(0); } } if (mainPict == null) { mainPict = new List <string>(); foreach (var i in questions.getQuestionFinds(choiceBlock.theme, choiceBlock.blockID, choiceNextPage.loadID, choiceNextPage.variantID, 2)) { mainPict.Add(questions.getVariantsImgPath(choiceBlock.theme, choiceBlock.blockID, choiceNextPage.loadID)[choiceNextPage.loadID][1].ToString()); } } // Создаем список неизвестных переменных if (questionFindList == null) { questionFindList = questions.getQuestionFinds(choiceBlock.theme, choiceBlock.blockID, choiceNextPage.loadID, choiceNextPage.variantID, stageNum); } if (questionFormulasDict == null) { questionFormulasDict = questions.getQuestionFormuls(choiceBlock.theme, choiceBlock.blockID, choiceNextPage.loadID, choiceNextPage.variantID, stageNum); } if (graphicHintList == null) { graphicHintList = questions.getTipsPath(choiceBlock.theme, choiceBlock.blockID, choiceNextPage.loadID, choiceNextPage.variantID); } // Рассчитывем введенную формулу checkAnswer.Formula = answer.Text; string formualaInput = checkAnswer.Check(); if (questionFormulasDict.Count > 0) { // Строка правильной формулы checkAnswer.Formula = questionFormulasDict[test_one.SelectedIndex()]["0"]; string formulaCorrectExport = checkAnswer.Formula; string formulaCorrect = checkAnswer.Check(); // Проверяем на ошибку "NullOrEmpty Error!" - если была передана пустая строка if (formualaInput == "NullOrEmpty Error!") { AnswerPopupContent.Background = SpecialColor.orange(); AnswerPopupContent.Content = "ОШИБКА"; test_one.AnswerTipsClear(); test_one.AnswerTip($"Ошибка! Введена пустая строка", "orange"); } // Проверяем на ошибку "Syntax Error!" - если была выявлена синтаксическая ошибка else if (formualaInput == "Syntax Error!") { AnswerPopupContent.Background = SpecialColor.orange(); AnswerPopupContent.Content = "ОШИБКА"; test_one.AnswerTipsClear(); test_one.AnswerTip($"Была выявлена синтаксическая ошибка!", "orange"); } // Проверяем на ошибку "Bracket Error!" - если была выявлена ошибка правильности написания скобок else if (formualaInput == "Bracket Error!") { AnswerPopupContent.Background = SpecialColor.orange(); AnswerPopupContent.Content = "ОШИБКА"; test_one.AnswerTipsClear(); test_one.AnswerTip($"Ошибка! Неправильно расставлены скобки!", "orange"); } // Проверяем на ошибку "UnknownData Error!" - если были переданы неизвестные данные else if (formualaInput == "UnknownData Error!") { AnswerPopupContent.Background = SpecialColor.orange(); AnswerPopupContent.Content = "ОШИБКА"; test_one.AnswerTipsClear(); test_one.AnswerTip($"Ошибка! Введены неизвестные данные!", "orange"); } // Если ошибок нет, то проводим рассчет введенной формулы и сравниваем её с правильной формулой // Если ответ совпал, то выводим информацию о "правильности" ответа и засчитываем правильный ответ. else if (Convert.ToDouble(formulaCorrect) == Convert.ToDouble(formualaInput)) { AnswerPopupContent.Background = SpecialColor.green(); AnswerPopupContent.Content = "ПРАВИЛЬНО"; // +1 к счетчику правильных ответов correctAnswersCount++; // За правильный ответ дается 5 баллов test_one.Score(5); // На вопрос был дан ответ, следовательно попытки больше не нужны numTry[test_one.SelectedIndex()] = 3; test_one.AnswerTipsClear(); test_one.AnswerTip($"Правильно! Ответ: {formulaCorrectExport}", "green"); } else { AnswerPopupContent.Background = SpecialColor.red(); AnswerPopupContent.Content = "НЕПРАВИЛЬНО"; // За не правильный ответ балл на 1 test_one.Score(-1); // +1 к кол-ву попыток numTry[test_one.SelectedIndex()]++; // Очищаем другие уведомления test_one.AnswerTipsClear(); if (stageNum == 2) { if (numTry[test_one.SelectedIndex()] == graphicHintNum) { mainPict[test_one.SelectedIndex()] = graphicHintList[test_one.SelectedIndex()]; test_one.GraphContent(System.IO.Path.GetFullPath(mainPict[test_one.SelectedIndex()])); } } if (numTry[test_one.SelectedIndex()] < 3) { test_one.AnswerTip($"Дан неправильный ответ. У вас осталось еще {3 - numTry[test_one.SelectedIndex()]} попытки(-а)", "red"); } else { test_one.AnswerTip($"Попыток больше нет!", "red"); test_one.AnswerTip($"Правильная формула: {formulaCorrectExport}", "red"); foreach (var item in questionFormulasDict[test_one.SelectedIndex()]) { if (checkAnswer.Variables.ContainsKey(item.Key)) { test_one.AnswerTip($"Правильная формула: {item.Value}", "red"); } } } } if (numTry[test_one.SelectedIndex()] >= 3) { // Если эта переменная еще не найдена, то добавляем ее в словарь переменных checkAnswer.Variables.Add(questionFindList[test_one.SelectedIndex()].ToLower(), Convert.ToDouble(formulaCorrect)); // Обновляем в графическом интерфейсе граф "задача" test_one.QuestionVal(test_one.SelectedValue(), formulaCorrect); // Удаляем найденную переменную из списка неизвестных переменных и выпадающего списка questionFindList.Remove(test_one.SelectedValue()); // Удаляем счетчик кол-ва попыток ответа для найденой переменной numTry.RemoveAt(test_one.SelectedIndex()); // Удаляем формулу для найденной переменной questionFormulasDict.RemoveAt(test_one.SelectedIndex()); if (stageNum == 2) { graphicHintList.RemoveAt(test_one.SelectedIndex()); mainPict.RemoveAt(test_one.SelectedIndex()); } // Очищаем вводное поле answer.Clear(); // Обновляем выпадающий список test_one.QuestionValsСВ(questionFindList); } AnswerPopup.IsOpen = true; await Task.Delay(1000); AnswerPopup.IsOpen = false; // Если закончился 1-ый этап ответов на вопрос, то переходим к следующему, иначе завершаем тест try { if (questionFindList.Count <= 0) { stageNum += 1; if (stageNum >= maxStageNum + 1) { test1 = true; _timer.Stop(); test_one.AnswerTip($"Тестирование завершено! Пожалуйста, нажмите на кнопку 'Завершить тестирование'!", "orange"); } else { // Обновляем исходные данные string testtext = ""; int proba = 0; bool proba1 = false; foreach (var massiv in checkAnswer.Variables) { if (massiv.Key != "Hb" && massiv.Key != "Va" && massiv.Key != "Vb") { if (massiv.Key == "h" || massiv.Key == "d") { testtext += $"{massiv.Key} = {massiv.Value} м; "; } else { testtext += $"{massiv.Key} = {massiv.Value} кН; "; } proba++; if (proba >= 3) { testtext += "\n"; proba = 0; } } else { if (proba1 == false) { testtext += "\nЗначения опор Кн:\n"; proba = 0; proba1 = true; } proba++; testtext += $"{massiv.Key} = {massiv.Value}; "; if (proba >= 3) { testtext += "\n"; proba = 0; } } } test_one.DataExtraInfo(testtext); test_one.DataMainInfo(questions.getQuestionText(choiceBlock.theme, choiceBlock.blockID, choiceNextPage.loadID, choiceNextPage.variantID, stageNum)); test_one.QuestionVals(questions.getQuestionFinds(choiceBlock.theme, choiceBlock.blockID, choiceNextPage.loadID, choiceNextPage.variantID, stageNum)); numTry = null; questionFindList = null; questionFormulasDict = null; questionFindList = questions.getQuestionFinds(choiceBlock.theme, choiceBlock.blockID, choiceNextPage.loadID, choiceNextPage.variantID, stageNum); if (graphicHintNum == 0) { int numvalue = 0; foreach (var value in graphicHintList) { mainPict[numvalue] = value; numvalue++; } //mainPict = graphicHintList; test_one.GraphContent(System.IO.Path.GetFullPath(mainPict[0])); } if (stageNum == 2) { test_one.VisualTip(System.IO.Path.GetFullPath("Img/block1/przn.png")); } test1 = false; } } else { test1 = false; } } finally { // Создаем список неизвестных переменных if (questionFindList == null) { questionFindList = questions.getQuestionFinds(choiceBlock.theme, choiceBlock.blockID, choiceNextPage.loadID, choiceNextPage.variantID, stageNum); } if (questionFormulasDict == null) { questionFormulasDict = questions.getQuestionFormuls(choiceBlock.theme, choiceBlock.blockID, choiceNextPage.loadID, choiceNextPage.variantID, stageNum); } } } }