From f97fed3b9bf40e080745a3dcfacc616b9d8ce5ec Mon Sep 17 00:00:00 2001 From: "Alinson S. Xavier" Date: Thu, 26 Nov 2020 13:29:12 -0600 Subject: [PATCH] Repetition: Replace toggle by setValue --- .../org/isoron/uhabits/HabitFixtures.java | 8 ++- .../receivers/WidgetControllerTest.java | 4 +- .../uhabits/core/io/HabitBullCSVImporter.java | 5 +- .../uhabits/core/io/LoopDBImporter.java | 2 +- .../uhabits/core/io/RewireDBImporter.java | 4 +- .../uhabits/core/io/TickmateDBImporter.java | 4 +- .../uhabits/core/models/RepetitionList.java | 57 ++++-------------- .../uhabits/core/test/HabitFixtures.java | 6 +- .../isoron/uhabits/core/io/ImportTest.java | 34 ++++++----- .../isoron/uhabits/core/models/HabitTest.java | 14 ++--- .../core/models/RepetitionListTest.java | 59 ++++++------------- .../uhabits/core/models/ScoreListTest.java | 38 ++++++------ 12 files changed, 96 insertions(+), 139 deletions(-) diff --git a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/HabitFixtures.java b/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/HabitFixtures.java index 262839c58..83756727c 100644 --- a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/HabitFixtures.java +++ b/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/HabitFixtures.java @@ -22,6 +22,8 @@ package org.isoron.uhabits; import org.isoron.uhabits.core.models.*; import org.isoron.uhabits.core.utils.DateUtils; +import static org.isoron.uhabits.core.models.Checkmark.*; + public class HabitFixtures { public boolean LONG_HABIT_CHECKS[] = { @@ -73,7 +75,7 @@ public class HabitFixtures 81, 83, 89, 90, 91, 95, 102, 103, 108, 109, 120}; for (int mark : marks) - habit.getRepetitions().toggle(today.minus(mark)); + habit.getRepetitions().setValue(today.minus(mark), YES_MANUAL); return habit; } @@ -107,7 +109,7 @@ public class HabitFixtures 582, 583, 584, 586, 589}; for (int mark : marks) - habit.getRepetitions().toggle(today.minus(mark)); + habit.getRepetitions().setValue(today.minus(mark), YES_MANUAL); return habit; } @@ -145,7 +147,7 @@ public class HabitFixtures Timestamp timestamp = DateUtils.getToday(); for (boolean c : LONG_HABIT_CHECKS) { - if (c) habit.getRepetitions().toggle(timestamp); + if (c) habit.getRepetitions().setValue(timestamp, YES_MANUAL); timestamp = timestamp.minus(1); } diff --git a/android/uhabits-android/src/test/java/org/isoron/uhabits/receivers/WidgetControllerTest.java b/android/uhabits-android/src/test/java/org/isoron/uhabits/receivers/WidgetControllerTest.java index 0a0fd7690..05363a0eb 100644 --- a/android/uhabits-android/src/test/java/org/isoron/uhabits/receivers/WidgetControllerTest.java +++ b/android/uhabits-android/src/test/java/org/isoron/uhabits/receivers/WidgetControllerTest.java @@ -64,7 +64,7 @@ public class WidgetControllerTest extends BaseAndroidJVMTest @Test public void testOnAddRepetition_whenChecked() throws Exception { - habit.getRepetitions().toggle(today); + habit.getRepetitions().setValue(today, YES_MANUAL); int todayValue = habit.getCheckmarks().getTodayValue(); assertThat(todayValue, equalTo(YES_MANUAL)); controller.onAddRepetition(habit, today); @@ -84,7 +84,7 @@ public class WidgetControllerTest extends BaseAndroidJVMTest @Test public void testOnRemoveRepetition_whenChecked() throws Exception { - habit.getRepetitions().toggle(today); + habit.getRepetitions().setValue(today, YES_MANUAL); int todayValue = habit.getCheckmarks().getTodayValue(); assertThat(todayValue, equalTo(YES_MANUAL)); controller.onRemoveRepetition(habit, today); diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/HabitBullCSVImporter.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/HabitBullCSVImporter.java index f2289af65..15dbc1085 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/HabitBullCSVImporter.java +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/HabitBullCSVImporter.java @@ -31,6 +31,8 @@ import java.util.*; import javax.inject.*; +import static org.isoron.uhabits.core.models.Checkmark.*; + /** * Class that imports data from HabitBull CSV files. @@ -93,8 +95,7 @@ public class HabitBullCSVImporter extends AbstractImporter map.put(name, h); } - if (!h.getRepetitions().containsTimestamp(timestamp)) - h.getRepetitions().toggle(timestamp); + h.getRepetitions().setValue(timestamp, YES_MANUAL); } } } diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/LoopDBImporter.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/LoopDBImporter.java index 31553d75f..d5a2e0671 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/LoopDBImporter.java +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/LoopDBImporter.java @@ -109,7 +109,7 @@ public class LoopDBImporter extends AbstractImporter habitRecord.id.toString()); for (RepetitionRecord r : reps) - h.getRepetitions().toggle(new Timestamp(r.timestamp), r.value); + h.getRepetitions().setValue(new Timestamp(r.timestamp), r.value); } } } diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/RewireDBImporter.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/RewireDBImporter.java index ac0d83c79..173116fe6 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/RewireDBImporter.java +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/RewireDBImporter.java @@ -30,6 +30,8 @@ import java.util.*; import javax.inject.*; +import static org.isoron.uhabits.core.models.Checkmark.*; + /** * Class that imports database files exported by Rewire. */ @@ -165,7 +167,7 @@ public class RewireDBImporter extends AbstractImporter GregorianCalendar cal = DateUtils.getStartOfTodayCalendar(); cal.set(year, month - 1, day); - habit.getRepetitions().toggle(new Timestamp(cal)); + habit.getRepetitions().setValue(new Timestamp(cal), YES_MANUAL); } while (c.moveToNext()); } finally diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/TickmateDBImporter.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/TickmateDBImporter.java index e1a0f2508..047a1c2d4 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/TickmateDBImporter.java +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/TickmateDBImporter.java @@ -30,6 +30,8 @@ import java.util.*; import javax.inject.*; +import static org.isoron.uhabits.core.models.Checkmark.*; + /** * Class that imports data from database files exported by Tickmate. */ @@ -100,7 +102,7 @@ public class TickmateDBImporter extends AbstractImporter GregorianCalendar cal = DateUtils.getStartOfTodayCalendar(); cal.set(year, month, day); - habit.getRepetitions().toggle(new Timestamp(cal)); + habit.getRepetitions().setValue(new Timestamp(cal), YES_MANUAL); } while (c.moveToNext()); } finally diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/RepetitionList.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/RepetitionList.java index f5c9a268c..bdb61658d 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/RepetitionList.java +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/RepetitionList.java @@ -52,19 +52,6 @@ public abstract class RepetitionList */ public abstract void add(Repetition repetition); - /** - * Returns true if the list contains a repetition that has the given - * timestamp. - * - * @param timestamp the timestamp to find. - * @return true if list contains repetition with given timestamp, false - * otherwise. - */ - public boolean containsTimestamp(Timestamp timestamp) - { - return (getByTimestamp(timestamp) != null); - } - /** * Returns the list of repetitions that happened within the given time * interval. @@ -90,6 +77,18 @@ public abstract class RepetitionList @Nullable public abstract Repetition getByTimestamp(Timestamp timestamp); + /** + * If a repetition with the given timestamp exists, return its value. Otherwise, returns + * Checkmark.NO for boolean habits and zero for numerical habits. + */ + @NonNull + public int getValue(Timestamp timestamp) + { + Repetition rep = getByTimestamp(timestamp); + if (rep == null) return Checkmark.NO; + return rep.getValue(); + } + @NonNull public ModelObservable getObservable() { @@ -175,39 +174,9 @@ public abstract class RepetitionList */ public abstract void remove(@NonNull Repetition repetition); - /** - * Adds or remove a repetition at a certain timestamp. - *

- * If there exists a repetition on the list with the given timestamp, the - * method removes this repetition from the list and returns it. If there are - * no repetitions with the given timestamp, creates and adds one to the - * list, then returns it. - * - * @param timestamp the timestamp for the timestamp that should be added or - * removed. - * @return the repetition that has been added or removed. - */ - @NonNull - public synchronized Repetition toggle(Timestamp timestamp) - { - if (habit.isNumerical()) - throw new IllegalStateException("habit must NOT be numerical"); - - Repetition rep = getByTimestamp(timestamp); - if (rep != null) remove(rep); - else - { - rep = new Repetition(timestamp, Checkmark.YES_MANUAL); - add(rep); - } - - habit.invalidateNewerThan(timestamp); - return rep; - } - public abstract long getTotalCount(); - public void toggle(Timestamp timestamp, int value) + public void setValue(Timestamp timestamp, int value) { Repetition rep = getByTimestamp(timestamp); if (rep != null) remove(rep); diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/test/HabitFixtures.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/test/HabitFixtures.java index 5e1e3edb5..90af84d56 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/test/HabitFixtures.java +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/test/HabitFixtures.java @@ -23,6 +23,8 @@ import org.isoron.uhabits.core.models.*; import org.isoron.uhabits.core.models.sqlite.*; import org.isoron.uhabits.core.utils.*; +import static org.isoron.uhabits.core.models.Checkmark.*; + public class HabitFixtures { public boolean NON_DAILY_HABIT_CHECKS[] = { @@ -63,7 +65,7 @@ public class HabitFixtures 81, 83, 89, 90, 91, 95, 102, 103, 108, 109, 120}; for (int mark : marks) - habit.getRepetitions().toggle(today.minus(mark)); + habit.getRepetitions().setValue(today.minus(mark), YES_MANUAL); return habit; } @@ -140,7 +142,7 @@ public class HabitFixtures Timestamp timestamp = DateUtils.getToday(); for (boolean c : NON_DAILY_HABIT_CHECKS) { - if (c) habit.getRepetitions().toggle(timestamp); + if (c) habit.getRepetitions().setValue(timestamp, YES_MANUAL); timestamp = timestamp.minus(1); } diff --git a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/io/ImportTest.java b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/io/ImportTest.java index 1fa3ba513..6b1cf540a 100644 --- a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/io/ImportTest.java +++ b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/io/ImportTest.java @@ -30,6 +30,7 @@ import java.util.*; import static junit.framework.TestCase.assertFalse; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.IsEqual.*; +import static org.isoron.uhabits.core.models.Checkmark.*; import static org.isoron.uhabits.core.models.Frequency.*; import static org.junit.Assert.assertTrue; @@ -54,9 +55,9 @@ public class ImportTest extends BaseUnitTest assertThat(habit.getName(), equalTo("Breed dragons")); assertThat(habit.getDescription(), equalTo("with love and fire")); assertThat(habit.getFrequency(), equalTo(Frequency.DAILY)); - assertTrue(containsRepetition(habit, 2016, 3, 18)); - assertTrue(containsRepetition(habit, 2016, 3, 19)); - assertFalse(containsRepetition(habit, 2016, 3, 20)); + assertTrue(isChecked(habit, 2016, 3, 18)); + assertTrue(isChecked(habit, 2016, 3, 19)); + assertFalse(isChecked(habit, 2016, 3, 20)); } @Test @@ -69,9 +70,9 @@ public class ImportTest extends BaseUnitTest Habit habit = habitList.getByPosition(0); assertThat(habit.getName(), equalTo("Wake up early")); assertThat(habit.getFrequency(), equalTo(THREE_TIMES_PER_WEEK)); - assertTrue(containsRepetition(habit, 2016, 3, 14)); - assertTrue(containsRepetition(habit, 2016, 3, 16)); - assertFalse(containsRepetition(habit, 2016, 3, 17)); + assertTrue(isChecked(habit, 2016, 3, 14)); + assertTrue(isChecked(habit, 2016, 3, 16)); + assertFalse(isChecked(habit, 2016, 3, 17)); } @Test @@ -85,10 +86,10 @@ public class ImportTest extends BaseUnitTest assertThat(habit.getName(), equalTo("Wake up early")); assertThat(habit.getFrequency(), equalTo(THREE_TIMES_PER_WEEK)); assertFalse(habit.hasReminder()); - assertFalse(containsRepetition(habit, 2015, 12, 31)); - assertTrue(containsRepetition(habit, 2016, 1, 18)); - assertTrue(containsRepetition(habit, 2016, 1, 28)); - assertFalse(containsRepetition(habit, 2016, 3, 10)); + assertFalse(isChecked(habit, 2015, 12, 31)); + assertTrue(isChecked(habit, 2016, 1, 18)); + assertTrue(isChecked(habit, 2016, 1, 28)); + assertFalse(isChecked(habit, 2016, 3, 10)); habit = habitList.getByPosition(2); assertThat(habit.getName(), equalTo("brush teeth")); @@ -111,17 +112,18 @@ public class ImportTest extends BaseUnitTest Habit h = habitList.getByPosition(2); assertThat(h.getName(), equalTo("Vegan")); - assertTrue(containsRepetition(h, 2016, 1, 24)); - assertTrue(containsRepetition(h, 2016, 2, 5)); - assertTrue(containsRepetition(h, 2016, 3, 18)); - assertFalse(containsRepetition(h, 2016, 3, 14)); + assertTrue(isChecked(h, 2016, 1, 24)); + assertTrue(isChecked(h, 2016, 2, 5)); + assertTrue(isChecked(h, 2016, 3, 18)); + assertFalse(isChecked(h, 2016, 3, 14)); } - private boolean containsRepetition(Habit h, int year, int month, int day) + private boolean isChecked(Habit h, int year, int month, int day) { GregorianCalendar date = DateUtils.getStartOfTodayCalendar(); date.set(year, month - 1, day); - return h.getRepetitions().containsTimestamp(new Timestamp(date)); + Timestamp timestamp = new Timestamp(date); + return h.getRepetitions().getValue(timestamp) == YES_MANUAL; } private void importFromFile(String assetFilename) throws IOException diff --git a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/HabitTest.java b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/HabitTest.java index e99e954c0..327e8856a 100644 --- a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/HabitTest.java +++ b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/HabitTest.java @@ -89,7 +89,7 @@ public class HabitTest extends BaseUnitTest { Habit h = modelFactory.buildHabit(); assertFalse(h.isCompletedToday()); - h.getRepetitions().toggle(getToday()); + h.getRepetitions().setValue(getToday(), Checkmark.YES_MANUAL); assertTrue(h.isCompletedToday()); } @@ -102,19 +102,19 @@ public class HabitTest extends BaseUnitTest h.setTargetValue(100.0); assertFalse(h.isCompletedToday()); - h.getRepetitions().toggle(getToday(), 200_000); + h.getRepetitions().setValue(getToday(), 200_000); assertTrue(h.isCompletedToday()); - h.getRepetitions().toggle(getToday(), 100_000); + h.getRepetitions().setValue(getToday(), 100_000); assertTrue(h.isCompletedToday()); - h.getRepetitions().toggle(getToday(), 50_000); + h.getRepetitions().setValue(getToday(), 50_000); assertFalse(h.isCompletedToday()); h.setTargetType(Habit.AT_MOST); - h.getRepetitions().toggle(getToday(), 200_000); + h.getRepetitions().setValue(getToday(), 200_000); assertFalse(h.isCompletedToday()); - h.getRepetitions().toggle(getToday(), 100_000); + h.getRepetitions().setValue(getToday(), 100_000); assertTrue(h.isCompletedToday()); - h.getRepetitions().toggle(getToday(), 50_000); + h.getRepetitions().setValue(getToday(), 50_000); assertTrue(h.isCompletedToday()); } diff --git a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/RepetitionListTest.java b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/RepetitionListTest.java index 920ebed4f..add47d86a 100644 --- a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/RepetitionListTest.java +++ b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/RepetitionListTest.java @@ -28,11 +28,9 @@ import org.junit.*; import java.util.*; import static java.util.Calendar.*; -import static junit.framework.TestCase.assertFalse; -import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.MatcherAssert.*; import static org.hamcrest.core.IsEqual.*; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import static org.isoron.uhabits.core.models.Checkmark.*; import static org.mockito.Mockito.*; public class RepetitionListTest extends BaseUnitTest @@ -60,11 +58,11 @@ public class RepetitionListTest extends BaseUnitTest today = DateUtils.getToday(); - reps.toggle(today.minus(3)); - reps.toggle(today.minus(2)); - reps.toggle(today); - reps.toggle(today.minus(7)); - reps.toggle(today.minus(5)); + reps.setValue(today.minus(3), YES_MANUAL); + reps.setValue(today.minus(2), YES_MANUAL); + reps.setValue(today, YES_MANUAL); + reps.setValue(today.minus(7), YES_MANUAL); + reps.setValue(today.minus(5), YES_MANUAL); listener = mock(ModelObservable.Listener.class); reps.getObservable().addListener(listener); @@ -78,17 +76,6 @@ public class RepetitionListTest extends BaseUnitTest super.tearDown(); } - @Test - public void test_contains() - { - assertTrue(reps.containsTimestamp(today)); - assertTrue(reps.containsTimestamp(today.minus(2))); - assertTrue(reps.containsTimestamp(today.minus(3))); - - assertFalse(reps.containsTimestamp(today.minus(1))); - assertFalse(reps.containsTimestamp(today.minus(4))); - } - @Test public void test_getOldest() { @@ -126,7 +113,7 @@ public class RepetitionListTest extends BaseUnitTest // Leave the month of March empty, to check that it returns null if (month == MARCH) continue; - reps.toggle(new Timestamp(day)); + reps.setValue(new Timestamp(day), YES_MANUAL); // Repetitions in December should not be counted if (month == DECEMBER) continue; @@ -155,32 +142,22 @@ public class RepetitionListTest extends BaseUnitTest } @Test - public void test_toggle() + public void test_setValue() { - assertTrue(reps.containsTimestamp(today)); - reps.toggle(today); - assertFalse(reps.containsTimestamp(today)); - verify(listener).onModelChange(); - reset(listener); - - assertFalse(reps.containsTimestamp(today.minus(1))); - reps.toggle(today.minus(1)); - assertTrue(reps.containsTimestamp(today.minus(1))); - verify(listener).onModelChange(); + assertThat(reps.getValue(today), equalTo(YES_MANUAL)); + reps.setValue(today, NO); + assertThat(reps.getValue(today), equalTo(NO)); + verify(listener, times(2)).onModelChange(); reset(listener); habit.setType(Habit.NUMBER_HABIT); - reps.toggle(today, 100); - Repetition check = reps.getByTimestamp(today); - assertNotNull(check); - assertThat(check.getValue(), equalTo(100)); - verify(listener).onModelChange(); + reps.setValue(today, 100); + assertThat(reps.getValue(today), equalTo(100)); + verify(listener, times(2)).onModelChange(); reset(listener); - reps.toggle(today, 500); - check = reps.getByTimestamp(today); - assertNotNull(check); - assertThat(check.getValue(), equalTo(500)); + reps.setValue(today, 500); + assertThat(reps.getValue(today), equalTo(500)); verify(listener, times(2)).onModelChange(); reset(listener); } diff --git a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/ScoreListTest.java b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/ScoreListTest.java index 576aef0d6..d74925a3b 100644 --- a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/ScoreListTest.java +++ b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/ScoreListTest.java @@ -49,7 +49,7 @@ public class ScoreListTest extends BaseUnitTest @Test public void test_getAll() { - toggle(0, 20); + check(0, 20); double expectedValues[] = { 0.655747, @@ -82,7 +82,7 @@ public class ScoreListTest extends BaseUnitTest @Test public void test_getTodayValue() { - toggle(0, 20); + check(0, 20); double actual = habit.getScores().getTodayValue(); assertThat(actual, closeTo(0.655747, E)); } @@ -90,7 +90,7 @@ public class ScoreListTest extends BaseUnitTest @Test public void test_getValue() { - toggle(0, 20); + check(0, 20); double expectedValues[] = { 0.655747, @@ -124,7 +124,7 @@ public class ScoreListTest extends BaseUnitTest @Test public void test_getValueWithSkip() { - toggle(0, 20); + check(0, 20); addSkip(5); addSkip(10); addSkip(11); @@ -161,7 +161,7 @@ public class ScoreListTest extends BaseUnitTest @Test public void test_getValueWithSkip2() { - toggle(5); + check(5); addSkip(4); double[] expectedValues = { @@ -180,7 +180,7 @@ public class ScoreListTest extends BaseUnitTest @Test public void test_getValues() { - toggle(0, 20); + check(0, 20); Timestamp today = DateUtils.getToday(); Timestamp from = today.minus(4); @@ -214,7 +214,7 @@ public class ScoreListTest extends BaseUnitTest values.add(NO); values.add(NO); } - toggle(values); + check(values); assertThat(habit.getScores().getTodayValue(), closeTo(2/3.0, E)); // Missing 2 repetitions out of 4 per week, the score should converge to 50% @@ -249,7 +249,7 @@ public class ScoreListTest extends BaseUnitTest values.add(NO); values.add(YES_MANUAL); } - toggle(values); + check(values); assertThat(habit.getScores().getTodayValue(), closeTo(1.0, 1e-3)); } @@ -259,18 +259,18 @@ public class ScoreListTest extends BaseUnitTest // Daily habits should achieve at least 99% in 3 months habit = fixtures.createEmptyHabit(); habit.setFrequency(Frequency.DAILY); - for (int i = 0; i < 90; i++) toggle(i); + for (int i = 0; i < 90; i++) check(i); assertThat(habit.getScores().getTodayValue(), greaterThan(0.99)); // Weekly habits should achieve at least 99% in 9 months habit = fixtures.createEmptyHabit(); habit.setFrequency(Frequency.WEEKLY); - for (int i = 0; i < 39; i++) toggle(7 * i); + for (int i = 0; i < 39; i++) check(7 * i); assertThat(habit.getScores().getTodayValue(), greaterThan(0.99)); // Monthly habits should achieve at least 99% in 18 months habit.setFrequency(new Frequency(1, 30)); - for (int i = 0; i < 18; i++) toggle(30 * i); + for (int i = 0; i < 18; i++) check(30 * i); assertThat(habit.getScores().getTodayValue(), greaterThan(0.99)); } @@ -292,7 +292,7 @@ public class ScoreListTest extends BaseUnitTest { assertThat(habit.getScores().getTodayValue(), closeTo(0.0, E)); - toggle(0, 2); + check(0, 2); assertThat(habit.getScores().getTodayValue(), closeTo(0.101149, E)); habit.setFrequency(new Frequency(1, 2)); @@ -324,36 +324,36 @@ public class ScoreListTest extends BaseUnitTest assertThat(writer.toString(), equalTo(expectedCSV)); } - private void toggle(final int offset) + private void check(final int offset) { RepetitionList reps = habit.getRepetitions(); Timestamp today = DateUtils.getToday(); - reps.toggle(today.minus(offset)); + reps.setValue(today.minus(offset), YES_MANUAL); } - private void toggle(final int from, final int to) + private void check(final int from, final int to) { RepetitionList reps = habit.getRepetitions(); Timestamp today = DateUtils.getToday(); for (int i = from; i < to; i++) - reps.toggle(today.minus(i)); + reps.setValue(today.minus(i), YES_MANUAL); } - private void toggle(ArrayList values) + private void check(ArrayList values) { RepetitionList reps = habit.getRepetitions(); Timestamp today = DateUtils.getToday(); for (int i = 0; i < values.size(); i++) if (values.get(i) == YES_MANUAL) - reps.toggle(today.minus(i)); + reps.setValue(today.minus(i), YES_MANUAL); } private void addSkip(final int day) { RepetitionList reps = habit.getRepetitions(); Timestamp today = DateUtils.getToday(); - reps.toggle(today.minus(day), Checkmark.SKIP); + reps.setValue(today.minus(day), Checkmark.SKIP); } private void checkScoreValues(double[] expectedValues)