diff --git a/android/app/src/test/java/com/clhs/score/data/GradeAnalysisTest.kt b/android/app/src/test/java/com/clhs/score/data/GradeAnalysisTest.kt index 258087b..16772e4 100644 --- a/android/app/src/test/java/com/clhs/score/data/GradeAnalysisTest.kt +++ b/android/app/src/test/java/com/clhs/score/data/GradeAnalysisTest.kt @@ -13,6 +13,26 @@ class GradeAnalysisTest { assertEquals("前 27%", percentile(60.0, 219)?.percentLabel) } + @Test + fun percentileReturnsNullForInvalidOrMissingInputs() { + assertNull(percentile(null, 37)) + assertNull(percentile(13.0, null)) + assertNull(percentile(13.0, 0)) + assertNull(percentile(13.0, -5)) + assertNull(percentile(0.0, 37)) + assertNull(percentile(-5.0, 37)) + } + + @Test + fun percentileCoercesToValidRangeWhenRankExceedsCount() { + assertEquals(100, percentile(40.0, 37)?.topPercent) + } + + @Test + fun percentileCoercesToValidRangeForTopRank() { + assertEquals(1, percentile(1.0, 1000)?.topPercent) + } + @Test fun strengthAndWeaknessAreSortedByClassAverageDiff() { val analysis = buildGradeAnalysis(MockGradeSystem.generateReport(StudentScenario.NORMAL))