From 5b993f6ba4b873c70e11af1a92cf4bbb39e32519 Mon Sep 17 00:00:00 2001
From: Christoph Thelen <christoph.thelen@mni.thm.de>
Date: Wed, 29 Jul 2015 12:43:34 +0200
Subject: [PATCH] Attempt to get more accurate numerator values

---
 .../domain/QuestionBasedLearningProgress.java | 20 ++++++-------------
 .../QuestionBasedLearningProgressTest.java    |  8 ++++----
 2 files changed, 10 insertions(+), 18 deletions(-)

diff --git a/src/main/java/de/thm/arsnova/domain/QuestionBasedLearningProgress.java b/src/main/java/de/thm/arsnova/domain/QuestionBasedLearningProgress.java
index b4090a32..200df8fc 100644
--- a/src/main/java/de/thm/arsnova/domain/QuestionBasedLearningProgress.java
+++ b/src/main/java/de/thm/arsnova/domain/QuestionBasedLearningProgress.java
@@ -33,12 +33,15 @@ public class QuestionBasedLearningProgress extends VariantLearningProgress {
 
 	@Override
 	protected LearningProgressValues createCourseProgress() {
+		final int courseProgress = calculateCourseProgress();
+		final int numerator = courseScore.getQuestionCount()*courseProgress/100;
+		final int denominator = courseScore.getQuestionCount();
 		LearningProgressValues lpv = new LearningProgressValues();
-		lpv.setCourseProgress(calculateCourseProgress());
+		lpv.setCourseProgress(courseProgress);
 		lpv.setNumQuestions(courseScore.getQuestionCount());
 		lpv.setNumUsers(courseScore.getTotalUserCount());
-		lpv.setNumerator(countCorrectAnswers()/courseScore.getTotalUserCount());
-		lpv.setDenominator(courseScore.getQuestionCount());
+		lpv.setNumerator(numerator);
+		lpv.setDenominator(denominator);
 		return lpv;
 	}
 
@@ -67,17 +70,6 @@ public class QuestionBasedLearningProgress extends VariantLearningProgress {
 		return numAnswersCorrect;
 	}
 
-	private int countCorrectAnswers() {
-		int answers = 0;
-		for (QuestionScore questionScore : courseScore) {
-			if (!questionScore.hasScores()) {
-				continue;
-			}
-			answers += countCorrectAnswers(questionScore);
-		}
-		return answers;
-	}
-
 	@Override
 	protected LearningProgressValues createMyProgress(User user) {
 		final int numerator = numQuestionsCorrectForUser(user);
diff --git a/src/test/java/de/thm/arsnova/domain/QuestionBasedLearningProgressTest.java b/src/test/java/de/thm/arsnova/domain/QuestionBasedLearningProgressTest.java
index 736c40a0..1efbde1c 100644
--- a/src/test/java/de/thm/arsnova/domain/QuestionBasedLearningProgressTest.java
+++ b/src/test/java/de/thm/arsnova/domain/QuestionBasedLearningProgressTest.java
@@ -212,17 +212,17 @@ public class QuestionBasedLearningProgressTest {
 		// six answers
 		this.addAnswer(q1, u1, 10);
 		this.addAnswer(q2, u1, -100);
-		this.addAnswer(q1, u2, 10);
+		this.addAnswer(q1, u2, -100);
 		this.addAnswer(q2, u2, -100);
-		this.addAnswer(q1, u3, 10);
+		this.addAnswer(q1, u3, -100);
 		this.addAnswer(q2, u3, -100);
 
 		int numerator = lp.getCourseProgress(null).getNumerator();
 		int denominator = lp.getCourseProgress(null).getDenominator();
 
 		// If the percentage is wrong, then we need to adapt this test case!
-		assertEquals("Precondition failed -- The underlying calculation has changed", 50, lp.getCourseProgress(null).getCourseProgress());
-		assertEquals(1, numerator);
+		assertEquals("Precondition failed -- The underlying calculation has changed", 17, lp.getCourseProgress(null).getCourseProgress());
+		assertEquals(0, numerator);
 		assertEquals(2, denominator);
 	}
 
-- 
GitLab