diff --git a/src/main/java/org/olat/modules/forms/model/jpa/CalculatedLong.java b/src/main/java/org/olat/modules/forms/model/jpa/CalculatedLong.java index 2f9636f9dcfe7248e69cb389e0fc0f2632e6a156..a5713217cdb1bd13d50f6f504ed9c00530b4ef37 100644 --- a/src/main/java/org/olat/modules/forms/model/jpa/CalculatedLong.java +++ b/src/main/java/org/olat/modules/forms/model/jpa/CalculatedLong.java @@ -67,12 +67,22 @@ public class CalculatedLong { } private static String trimZerosFromEnd(String value) { - int len = value.length(); - int st = 0; - while ((st < len) && (value.charAt(len - 1) == '0' || value.charAt(len - 1) == '.')) { - len--; + if (value.contains(".")) { + int len = value.length(); + int st = 0; + while (st < len) { + if (value.charAt(len - 1) == '0') { + len--; + } else if (value.charAt(len - 1) == '.') { + len--; + break; // stop at decimal point + } + } + System.out.println("trimmed: "+value.substring(0, len)); + return value.substring(0, len); } - return value.substring(0, len); + System.out.println("untrimmed: " + value); + return value; } } diff --git a/src/test/java/org/olat/modules/forms/manager/EvaluationFormReportDAOTest.java b/src/test/java/org/olat/modules/forms/manager/EvaluationFormReportDAOTest.java index eef54f22cc10773783604a9c9c5f7d7dbc6054b4..4b57c03f2e9a200928100dc98f152e5b4d8dded1 100644 --- a/src/test/java/org/olat/modules/forms/manager/EvaluationFormReportDAOTest.java +++ b/src/test/java/org/olat/modules/forms/manager/EvaluationFormReportDAOTest.java @@ -203,9 +203,11 @@ public class EvaluationFormReportDAOTest extends OlatTestCase { EvaluationFormSession session1 = evaTestHelper.createSession(); EvaluationFormSession session2 = evaTestHelper.createSession(); EvaluationFormSession session3 = evaTestHelper.createSession(); + EvaluationFormSession session4 = evaTestHelper.createSession(); EvaluationFormSession otherSession = evaTestHelper.createSession(); BigDecimal numberThreeTimes = BigDecimal.valueOf(1); BigDecimal numberOnce = BigDecimal.valueOf(2); + BigDecimal ten = BigDecimal.valueOf(10); evaluationFormManager.createNumericalResponse(responseIdentifier1, otherSession, numberThreeTimes); evaluationFormManager.createNoResponse(responseIdentifier1, session1); @@ -216,23 +218,28 @@ public class EvaluationFormReportDAOTest extends OlatTestCase { evaluationFormManager.finishSession(session1); evaluationFormManager.createNumericalResponse(responseIdentifier1, session2, numberThreeTimes); evaluationFormManager.finishSession(session2); - // unfinished session counts as well + evaluationFormManager.createNumericalResponse(responseIdentifier1, session4, ten); + evaluationFormManager.finishSession(session4); + // unfinished session counts as well (use filter if not wanted) evaluationFormManager.createNumericalResponse(responseIdentifier1, session3, numberThreeTimes); dbInstance.commit(); List<String> responseIdentifiers = Arrays.asList(responseIdentifier1, responseIdentifier2); - List<EvaluationFormSession> sessions = Arrays.asList(session1, session2, session3); + List<EvaluationFormSession> sessions = Arrays.asList(session1, session2, session3, session4); SessionFilter filter = SessionFilterFactory.create(sessions); List<CalculatedLong> counts = sut.getCountByIdentifiersAndNumerical(responseIdentifiers, filter); - assertThat(counts).hasSize(3); + assertThat(counts).hasSize(4); assertThat(getValue(counts, responseIdentifier1, numberThreeTimes.toPlainString())).isEqualTo(3); assertThat(getValue(counts, responseIdentifier1, numberOnce.toPlainString())).isEqualTo(1); + assertThat(getValue(counts, responseIdentifier1, ten.toPlainString())).isEqualTo(1); assertThat(getValue(counts, responseIdentifier2, numberOnce.toPlainString())).isEqualTo(1); } private Long getValue(List<CalculatedLong> calculatedLongs, String identifier, String subidentifier) { + System.out.println("Wanted: " + identifier + "/" + subidentifier); for (CalculatedLong calculatedLong: calculatedLongs) { + System.out.println("has: " + calculatedLong.getIdentifier() + "/" + calculatedLong.getSubIdentifier() + " = " + calculatedLong.getValue()); if (calculatedLong.getIdentifier().equals(identifier) && calculatedLong.getSubIdentifier().equals(subidentifier)) { return calculatedLong.getValue(); }