From 2d78471e70969acf133136b6889cf3a2bde4fdda Mon Sep 17 00:00:00 2001
From: Philipp Woessner <64482866+pwoessner@users.noreply.github.com>
Date: Thu, 2 Jul 2020 15:55:23 +0200
Subject: [PATCH] Correct rounding of active tracing days (#801)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* added a check for manual mode when updating on app start

* added logging for conditions

* added comments

* round the sum of days that were traced up when reaching the half day

Co-authored-by: Jakob Möller <jakob.moeller@sap.com>
---
 .../java/de/rki/coronawarnapp/risk/TimeVariables.kt  |  5 +++--
 .../rki/coronawarnapp/util/TimeAndDateExtensions.kt  | 12 ++++++++++++
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/TimeVariables.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/TimeVariables.kt
index 1dc1d93d7..3a91a3abb 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/TimeVariables.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/TimeVariables.kt
@@ -9,7 +9,7 @@ import de.rki.coronawarnapp.nearby.InternalExposureNotificationClient
 import de.rki.coronawarnapp.storage.LocalData
 import de.rki.coronawarnapp.storage.tracing.TracingIntervalRepository
 import de.rki.coronawarnapp.util.TimeAndDateExtensions.daysToMilliseconds
-import java.util.concurrent.TimeUnit
+import de.rki.coronawarnapp.util.TimeAndDateExtensions.roundUpMsToDays
 
 object TimeVariables {
 
@@ -211,7 +211,8 @@ object TimeVariables {
         val finalTracingMS = tracingActiveMS - inactiveTracingIntervals
             .map { it.second - it.first }
             .sum()
-        return TimeUnit.MILLISECONDS.toDays(finalTracingMS)
+
+        return finalTracingMS.roundUpMsToDays()
     }
 
     /****************************************************
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/TimeAndDateExtensions.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/TimeAndDateExtensions.kt
index 2970fbb25..46a40294c 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/TimeAndDateExtensions.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/TimeAndDateExtensions.kt
@@ -1,11 +1,14 @@
 package de.rki.coronawarnapp.util
 
 import android.content.Context
+import com.google.common.math.DoubleMath.roundToLong
 import org.joda.time.DateTime
 import org.joda.time.DateTimeZone
 import org.joda.time.Instant
 import org.joda.time.chrono.GJChronology
 import org.joda.time.format.DateTimeFormat
+import timber.log.Timber
+import java.math.RoundingMode
 import java.util.Date
 import java.util.concurrent.TimeUnit
 
@@ -39,6 +42,15 @@ object TimeAndDateExtensions {
         return this.times(MS_TO_DAYS)
     }
 
+    fun Long.roundUpMsToDays(): Long {
+        val numberOfDays = this / MS_TO_DAYS.toDouble()
+        Timber.v("Number of days traced: $numberOfDays")
+
+        return roundToLong(numberOfDays, RoundingMode.HALF_UP).also {
+            Timber.v("Rounded number of days to display: $it")
+        }
+    }
+
     /**
      * Converts milliseconds to human readable format hh:mm:ss
      *
-- 
GitLab