From b6d57dd7af79777ed69d4f56fd0499591fcf1c8a Mon Sep 17 00:00:00 2001 From: Christoph Thelen <christoph.thelen@mni.thm.de> Date: Fri, 12 Jun 2015 12:34:30 +0200 Subject: [PATCH] Fix sonar issue: floating point equality test --- .../domain/PointBasedLearningProgress.java | 8 +++---- .../PointBasedLearningProgressTest.java | 23 +++++++++++++++++++ 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/thm/arsnova/domain/PointBasedLearningProgress.java b/src/main/java/de/thm/arsnova/domain/PointBasedLearningProgress.java index 72be81b2a..a2d574a9d 100644 --- a/src/main/java/de/thm/arsnova/domain/PointBasedLearningProgress.java +++ b/src/main/java/de/thm/arsnova/domain/PointBasedLearningProgress.java @@ -40,9 +40,9 @@ public class PointBasedLearningProgress extends VariantLearningProgress { } private int coursePercentage() { - final double courseMaximumValue = courseScore.getMaximumScore(); - final double userTotalValue = courseScore.getTotalUserScore(); - final double numUsers = courseScore.getTotalUserCount(); + final int courseMaximumValue = courseScore.getMaximumScore(); + final int userTotalValue = courseScore.getTotalUserScore(); + final int numUsers = courseScore.getTotalUserCount(); if (courseMaximumValue == 0 || numUsers == 0) { return 0; } @@ -62,7 +62,7 @@ public class PointBasedLearningProgress extends VariantLearningProgress { } private int myPercentage(User user) { - final double courseMaximumValue = courseScore.getMaximumScore(); + final int courseMaximumValue = courseScore.getMaximumScore(); final double userTotalValue = courseScore.getTotalUserScore(user); if (courseMaximumValue == 0) { return 0; diff --git a/src/test/java/de/thm/arsnova/domain/PointBasedLearningProgressTest.java b/src/test/java/de/thm/arsnova/domain/PointBasedLearningProgressTest.java index 5b9b0cde3..06348c139 100644 --- a/src/test/java/de/thm/arsnova/domain/PointBasedLearningProgressTest.java +++ b/src/test/java/de/thm/arsnova/domain/PointBasedLearningProgressTest.java @@ -81,6 +81,29 @@ public class PointBasedLearningProgressTest { assertEquals(0, myPrepProgress.getMyProgress()); } + @Test + public void shouldNotContainRoundingErrors() { + // Total of 300 Points + String q1 = this.addQuestion("lecture", 100); + String q2 = this.addQuestion("lecture", 100); + String q3 = this.addQuestion("lecture", 100); + User u1 = new TestUser("user1"); + User u2 = new TestUser("user2"); + // Both users achieve 200 points + this.addAnswer(q1, u1, 100); + this.addAnswer(q1, u2, 100); + this.addAnswer(q2, u1, 0); + this.addAnswer(q2, u2, 0); + this.addAnswer(q3, u1, 100); + this.addAnswer(q3, u2, 100); + + lp.setQuestionVariant("lecture"); + LearningProgressValues u1LectureProgress = lp.getMyProgress(null, u1); + // 200 / 300 = 0,67 + assertEquals(67, u1LectureProgress.getCourseProgress()); + assertEquals(67, u1LectureProgress.getMyProgress()); + } + @Test public void shouldConsiderAnswersOfSamePiRound() { User u1 = new TestUser("user1"); -- GitLab