diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/EntryList.kt b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/EntryList.kt index 646305975..fa4cd3fa1 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/EntryList.kt +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/EntryList.kt @@ -19,6 +19,7 @@ package org.isoron.uhabits.core.models +import org.isoron.uhabits.core.models.Entry.Companion.SKIP import org.isoron.uhabits.core.models.Entry.Companion.UNKNOWN import org.isoron.uhabits.core.models.Entry.Companion.YES_AUTO import org.isoron.uhabits.core.models.Entry.Companion.YES_MANUAL @@ -258,7 +259,7 @@ open class EntryList { /** * Converts a list of intervals into a list of entries. Entries that fall outside of any * interval receive value UNKNOWN. Entries that fall within an interval but do not appear - * in [original] receive value YES_AUTO. Entries provided in [original] are just copied over. + * in [original] receive value YES_AUTO. Entries provided in [original] are copied over. * * The intervals should be sorted by timestamp. The first element in the list should * correspond to the newest interval. @@ -303,7 +304,9 @@ open class EntryList { // Copy original entries original.forEach { entry -> val offset = entry.timestamp.daysUntil(to) - result[offset] = entry + if (result[offset].value == UNKNOWN || entry.value == SKIP || entry.value == YES_MANUAL) { + result[offset] = entry + } } return result diff --git a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/EntryListTest.kt b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/EntryListTest.kt index 43a64ac06..1e60fdbb1 100644 --- a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/EntryListTest.kt +++ b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/EntryListTest.kt @@ -248,8 +248,10 @@ class EntryListTest { val entries = listOf( Entry(day(1), YES_MANUAL), Entry(day(2), NO), + Entry(day(4), NO), Entry(day(5), YES_MANUAL), Entry(day(10), YES_MANUAL), + Entry(day(11), NO), ) val intervals = listOf( EntryList.Interval(day(2), day(2), day(1)), @@ -258,7 +260,7 @@ class EntryListTest { ) val expected = listOf( Entry(day(1), YES_MANUAL), - Entry(day(2), NO), + Entry(day(2), YES_AUTO), Entry(day(3), UNKNOWN), Entry(day(4), YES_AUTO), Entry(day(5), YES_MANUAL), @@ -267,6 +269,7 @@ class EntryListTest { Entry(day(8), YES_AUTO), Entry(day(9), YES_AUTO), Entry(day(10), YES_MANUAL), + Entry(day(11), NO), ) val actual = EntryList.buildEntriesFromInterval(entries, intervals) assertThat(actual, equalTo(expected))