public void evaluate(System.Collections.ICollection caList, Parameters par, Earl ea) { passCount = 0; criteriaCount = 0; prio2Pass=0; prio3Pass=0; prio1Pass=0; prio1Count = 0; prio2Count = 0; prio3Count = 0; failprio1Count = 0; failprio2Count = 0; failprio3Count = 0; errorCount = 0; warningCount = 0; prio1Count = 0; this.earl = ea; //earl.createEmptyEarlGraph(); String output = ""; foreach (Category ca in caList) { //earl.createTestRequirement(ca); //hier wird der Kopf des EARL Berichtes geschrieben //ea.writeEarlRdf(); foreach (Criterion element in ca.Criteria) { //set to zero element.EvaluationValue = 0; criteriaCount++; try { //foreach (float e in element.Res.Rating) //{ // System.Console.WriteLine(e); //} float evaluationValue; //hier wird der TestCase für das Element geschrieben das bewertet wurde //earl.createTestCase(element); bool passed = evaluateCriterion(par, element, out evaluationValue); earl.createCriterionResult(element, passed, evaluationValue); if (passed) { passCount++; } } catch (System.Exception ex) { output += "Das Kriterium '" + element.Name + "' wurde wegen eines internen Fahlers übersprungen \r\n"; } } createCategoryResult(ca); } evaluateCategories(caList); createFinalErgString(); System.Console.WriteLine(finalerg); }
/// <summary> /// /// </summary> /// <param name="par"></param> /// <param name="element"></param> /// <param name="evaluationValue"></param> /// <returns></returns> private bool evaluateCriterion(Parameters par, Criterion element, out float evaluationValue) { evaluationValue = 0; if (element != null && element.Rec != null && element.Rec.Type != CriterionType.unknown) { switch (element.Rec.Type) { case CriterionType.all: { if (element.Rec.Items != null && element.Rec.Items.Count > 0) { int passed = 0; for (int i = 0; i < element.Rec.Items.Count; i++) { //hier wird test Result für einzelnes Item erstellt earl.createAllItemResult(element, i, (int)(element.Res.GetItemRating(i))); if (element.Res.GetItemRating(i) == 1) { element.EvaluationValue++; passed++; } } evaluationValue = (float)passed / (float)element.Rec.Items.Count; if (evaluationValue != 1) { element.Res.resultType = ResultType.fail; return false; } else { element.Res.resultType = ResultType.pass; element.Res.Passed = true; return true; } } else { return false; } } case CriterionType.one: { bool ergBool = false; element.Res.resultType = ResultType.fail; for (int i = 0; i < element.getCountOfItems(); i++) { earl.createOneItemResult(element, i, (int)element.Res.Rating[i]); if (element.Res.GetItemRating(i) == 1) { element.EvaluationValue++; evaluationValue = 1; ergBool = true; element.Res.Passed = true; element.Res.resultType = ResultType.pass; } } return ergBool; //if (element.Res.GetItemRating(0) == 0) //{ // return false; //} //evaluationValue = 1; //return true; } case CriterionType.count: { int passed = 0; for (int i = 0; i < element.Rec.Items.Count; i++) { earl.createCountItemResult(element, i, (int)element.Res.GetItemRating(i)); if (element.Res.GetItemRating(i) == 1) { element.EvaluationValue++; passed++; } } evaluationValue = (float)passed / (float)element.Rec.Items.Count; if (evaluationValue < par.PassCount) { element.Res.resultType = ResultType.fail; return false; } else if (evaluationValue == 1) { element.Res.resultType = ResultType.pass; element.Res.Passed = true; return true; } else { element.Res.resultType = ResultType.passwithwarning; element.Res.Passed = true; return true; } } case CriterionType.rating: { int index = 0; float sum = 0; for (int i = 0; i < 5; i++) { if (element.Res.GetItemRating(i) == 1) { sum = i; } } if (element.Rec.Items.Count > 0) { evaluationValue = (float)sum / ((float)element.Res.Rating.Count - 1); if (evaluationValue < par.PassRating) { element.Res.resultType = ResultType.fail; earl.createRatingResultFail(element, evaluationValue, index); element.Res.ratingerg = evaluationValue; return false; } else if (evaluationValue == 1) { element.Res.resultType = ResultType.pass; earl.createRatingResultPass(element, evaluationValue, index); element.Res.Passed = true; element.Res.ratingerg = evaluationValue; return true; } else { element.Res.resultType = ResultType.passwithwarning; earl.createRatingResultPass(element, evaluationValue, index); element.Res.Passed = true; element.Res.ratingerg = evaluationValue; return true; } } else { return false; } } default: break; } } return false; }