mirror of
https://github.com/iSoron/uhabits.git
synced 2025-12-06 09:08:52 -06:00
Add missing tests for RepetitionList and Habit
This commit is contained in:
@@ -73,7 +73,7 @@ public class HabitFixtures
|
|||||||
81, 83, 89, 90, 91, 95, 102, 103, 108, 109, 120};
|
81, 83, 89, 90, 91, 95, 102, 103, 108, 109, 120};
|
||||||
|
|
||||||
for (int mark : marks)
|
for (int mark : marks)
|
||||||
habit.getRepetitions().toggleTimestamp(today - mark * day);
|
habit.getRepetitions().toggle(today - mark * day);
|
||||||
|
|
||||||
return habit;
|
return habit;
|
||||||
}
|
}
|
||||||
@@ -108,7 +108,7 @@ public class HabitFixtures
|
|||||||
long timestamp = DateUtils.getStartOfToday();
|
long timestamp = DateUtils.getStartOfToday();
|
||||||
for (boolean c : LONG_HABIT_CHECKS)
|
for (boolean c : LONG_HABIT_CHECKS)
|
||||||
{
|
{
|
||||||
if (c) habit.getRepetitions().toggleTimestamp(timestamp);
|
if (c) habit.getRepetitions().toggle(timestamp);
|
||||||
timestamp -= DateUtils.millisecondsInOneDay;
|
timestamp -= DateUtils.millisecondsInOneDay;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ public class HabitBullCSVImporter extends AbstractImporter
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(!h.getRepetitions().containsTimestamp(timestamp))
|
if(!h.getRepetitions().containsTimestamp(timestamp))
|
||||||
h.getRepetitions().toggleTimestamp(timestamp);
|
h.getRepetitions().toggle(timestamp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ public class RewireDBImporter extends AbstractImporter
|
|||||||
GregorianCalendar cal = DateUtils.getStartOfTodayCalendar();
|
GregorianCalendar cal = DateUtils.getStartOfTodayCalendar();
|
||||||
cal.set(year, month - 1, day);
|
cal.set(year, month - 1, day);
|
||||||
|
|
||||||
habit.getRepetitions().toggleTimestamp(cal.getTimeInMillis());
|
habit.getRepetitions().toggle(cal.getTimeInMillis());
|
||||||
} while (c.moveToNext());
|
} while (c.moveToNext());
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ public class TickmateDBImporter extends AbstractImporter
|
|||||||
GregorianCalendar cal = DateUtils.getStartOfTodayCalendar();
|
GregorianCalendar cal = DateUtils.getStartOfTodayCalendar();
|
||||||
cal.set(year, month, day);
|
cal.set(year, month, day);
|
||||||
|
|
||||||
habit.getRepetitions().toggleTimestamp(cal.getTimeInMillis());
|
habit.getRepetitions().toggle(cal.getTimeInMillis());
|
||||||
} while (c.moveToNext());
|
} while (c.moveToNext());
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ public class WidgetControllerTest extends BaseAndroidUnitTest
|
|||||||
@Test
|
@Test
|
||||||
public void testOnAddRepetition_whenChecked() throws Exception
|
public void testOnAddRepetition_whenChecked() throws Exception
|
||||||
{
|
{
|
||||||
habit.getRepetitions().toggleTimestamp(today);
|
habit.getRepetitions().toggle(today);
|
||||||
int todayValue = habit.getCheckmarks().getTodayValue();
|
int todayValue = habit.getCheckmarks().getTodayValue();
|
||||||
assertThat(todayValue, equalTo(CHECKED_EXPLICITLY));
|
assertThat(todayValue, equalTo(CHECKED_EXPLICITLY));
|
||||||
controller.onAddRepetition(habit, today);
|
controller.onAddRepetition(habit, today);
|
||||||
@@ -79,7 +79,7 @@ public class WidgetControllerTest extends BaseAndroidUnitTest
|
|||||||
@Test
|
@Test
|
||||||
public void testOnRemoveRepetition_whenChecked() throws Exception
|
public void testOnRemoveRepetition_whenChecked() throws Exception
|
||||||
{
|
{
|
||||||
habit.getRepetitions().toggleTimestamp(today);
|
habit.getRepetitions().toggle(today);
|
||||||
int todayValue = habit.getCheckmarks().getTodayValue();
|
int todayValue = habit.getCheckmarks().getTodayValue();
|
||||||
assertThat(todayValue, equalTo(CHECKED_EXPLICITLY));
|
assertThat(todayValue, equalTo(CHECKED_EXPLICITLY));
|
||||||
controller.onRemoveRepetition(habit, today);
|
controller.onRemoveRepetition(habit, today);
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ public class ToggleRepetitionCommand extends Command
|
|||||||
@Override
|
@Override
|
||||||
public void execute()
|
public void execute()
|
||||||
{
|
{
|
||||||
habit.getRepetitions().toggleTimestamp(timestamp);
|
habit.getRepetitions().toggle(timestamp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
|
|||||||
@@ -322,7 +322,13 @@ public class Habit
|
|||||||
public synchronized boolean isCompletedToday()
|
public synchronized boolean isCompletedToday()
|
||||||
{
|
{
|
||||||
int todayCheckmark = getCheckmarks().getTodayValue();
|
int todayCheckmark = getCheckmarks().getTodayValue();
|
||||||
if (isNumerical()) return todayCheckmark >= data.targetValue;
|
if (isNumerical())
|
||||||
|
{
|
||||||
|
if(getTargetType() == AT_LEAST)
|
||||||
|
return todayCheckmark >= data.targetValue;
|
||||||
|
else
|
||||||
|
return todayCheckmark <= data.targetValue;
|
||||||
|
}
|
||||||
else return (todayCheckmark != UNCHECKED);
|
else return (todayCheckmark != UNCHECKED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -107,6 +107,7 @@ public abstract class RepetitionList
|
|||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
public abstract Repetition getOldest();
|
public abstract Repetition getOldest();
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
/**
|
/**
|
||||||
* Returns the newest repetition in the list.
|
* Returns the newest repetition in the list.
|
||||||
@@ -184,8 +185,11 @@ public abstract class RepetitionList
|
|||||||
* @return the repetition that has been added or removed.
|
* @return the repetition that has been added or removed.
|
||||||
*/
|
*/
|
||||||
@NonNull
|
@NonNull
|
||||||
public Repetition toggleTimestamp(long timestamp)
|
public Repetition toggle(long timestamp)
|
||||||
{
|
{
|
||||||
|
if(habit.isNumerical())
|
||||||
|
throw new IllegalStateException("habit must NOT be numerical");
|
||||||
|
|
||||||
timestamp = DateUtils.getStartOfDay(timestamp);
|
timestamp = DateUtils.getStartOfDay(timestamp);
|
||||||
Repetition rep = getByTimestamp(timestamp);
|
Repetition rep = getByTimestamp(timestamp);
|
||||||
|
|
||||||
@@ -207,4 +211,15 @@ public abstract class RepetitionList
|
|||||||
*/
|
*/
|
||||||
@NonNull
|
@NonNull
|
||||||
public abstract long getTotalCount();
|
public abstract long getTotalCount();
|
||||||
|
|
||||||
|
public void toggle(long timestamp, int value)
|
||||||
|
{
|
||||||
|
if(!habit.isNumerical())
|
||||||
|
throw new IllegalStateException("habit must be numerical");
|
||||||
|
|
||||||
|
Repetition rep = getByTimestamp(timestamp);
|
||||||
|
if(rep != null) remove(rep);
|
||||||
|
add(new Repetition(timestamp, value));
|
||||||
|
habit.invalidateNewerThan(timestamp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ public class HabitFixtures
|
|||||||
81, 83, 89, 90, 91, 95, 102, 103, 108, 109, 120};
|
81, 83, 89, 90, 91, 95, 102, 103, 108, 109, 120};
|
||||||
|
|
||||||
for (int mark : marks)
|
for (int mark : marks)
|
||||||
habit.getRepetitions().toggleTimestamp(today - mark * day);
|
habit.getRepetitions().toggle(today - mark * day);
|
||||||
|
|
||||||
return habit;
|
return habit;
|
||||||
}
|
}
|
||||||
@@ -98,7 +98,7 @@ public class HabitFixtures
|
|||||||
long timestamp = DateUtils.getStartOfToday();
|
long timestamp = DateUtils.getStartOfToday();
|
||||||
for (boolean c : NON_DAILY_HABIT_CHECKS)
|
for (boolean c : NON_DAILY_HABIT_CHECKS)
|
||||||
{
|
{
|
||||||
if (c) habit.getRepetitions().toggleTimestamp(timestamp);
|
if (c) habit.getRepetitions().toggle(timestamp);
|
||||||
timestamp -= DateUtils.millisecondsInOneDay;
|
timestamp -= DateUtils.millisecondsInOneDay;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,12 +21,17 @@ package org.isoron.uhabits.core.models;
|
|||||||
|
|
||||||
import org.isoron.uhabits.*;
|
import org.isoron.uhabits.*;
|
||||||
import org.junit.*;
|
import org.junit.*;
|
||||||
|
import org.junit.rules.*;
|
||||||
|
|
||||||
import static org.hamcrest.CoreMatchers.*;
|
import static org.hamcrest.CoreMatchers.*;
|
||||||
|
import static org.isoron.uhabits.core.utils.DateUtils.*;
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
public class HabitTest extends BaseUnitTest
|
public class HabitTest extends BaseUnitTest
|
||||||
{
|
{
|
||||||
|
@Rule
|
||||||
|
public final ExpectedException exception = ExpectedException.none();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setUp()
|
public void setUp()
|
||||||
{
|
{
|
||||||
@@ -76,4 +81,49 @@ public class HabitTest extends BaseUnitTest
|
|||||||
h.clearReminder();
|
h.clearReminder();
|
||||||
assertThat(h.hasReminder(), is(false));
|
assertThat(h.hasReminder(), is(false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test_isCompleted() throws Exception
|
||||||
|
{
|
||||||
|
Habit h = modelFactory.buildHabit();
|
||||||
|
assertFalse(h.isCompletedToday());
|
||||||
|
h.getRepetitions().toggle(getStartOfToday());
|
||||||
|
assertTrue(h.isCompletedToday());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test_isCompleted_numerical() throws Exception
|
||||||
|
{
|
||||||
|
Habit h = modelFactory.buildHabit();
|
||||||
|
h.setType(Habit.NUMBER_HABIT);
|
||||||
|
h.setTargetType(Habit.AT_LEAST);
|
||||||
|
h.setTargetValue(100.0);
|
||||||
|
assertFalse(h.isCompletedToday());
|
||||||
|
|
||||||
|
h.getRepetitions().toggle(getStartOfToday(), 200);
|
||||||
|
assertTrue(h.isCompletedToday());
|
||||||
|
h.getRepetitions().toggle(getStartOfToday(), 100);
|
||||||
|
assertTrue(h.isCompletedToday());
|
||||||
|
h.getRepetitions().toggle(getStartOfToday(), 50);
|
||||||
|
assertFalse(h.isCompletedToday());
|
||||||
|
|
||||||
|
h.setTargetType(Habit.AT_MOST);
|
||||||
|
h.getRepetitions().toggle(getStartOfToday(), 200);
|
||||||
|
assertFalse(h.isCompletedToday());
|
||||||
|
h.getRepetitions().toggle(getStartOfToday(), 100);
|
||||||
|
assertTrue(h.isCompletedToday());
|
||||||
|
h.getRepetitions().toggle(getStartOfToday(), 50);
|
||||||
|
assertTrue(h.isCompletedToday());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testURI() throws Exception
|
||||||
|
{
|
||||||
|
assertTrue(habitList.isEmpty());
|
||||||
|
Habit h = modelFactory.buildHabit();
|
||||||
|
habitList.add(h);
|
||||||
|
assertThat(h.getId(), equalTo(0L));
|
||||||
|
assertThat(h.getUriString(),
|
||||||
|
equalTo("content://org.isoron.uhabits/habit/0"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -27,9 +27,12 @@ import org.junit.*;
|
|||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
import static org.hamcrest.MatcherAssert.*;
|
import static junit.framework.TestCase.assertFalse;
|
||||||
|
import static org.hamcrest.MatcherAssert.assertThat;
|
||||||
import static org.hamcrest.core.Is.*;
|
import static org.hamcrest.core.Is.*;
|
||||||
import static org.hamcrest.core.IsEqual.*;
|
import static org.hamcrest.core.IsEqual.*;
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
public class RepetitionListTest extends BaseUnitTest
|
public class RepetitionListTest extends BaseUnitTest
|
||||||
@@ -58,14 +61,15 @@ public class RepetitionListTest extends BaseUnitTest
|
|||||||
today = DateUtils.getStartOfToday();
|
today = DateUtils.getStartOfToday();
|
||||||
day = DateUtils.millisecondsInOneDay;
|
day = DateUtils.millisecondsInOneDay;
|
||||||
|
|
||||||
reps.toggleTimestamp(today - 3 * day);
|
reps.toggle(today - 3 * day);
|
||||||
reps.toggleTimestamp(today - 2 * day);
|
reps.toggle(today - 2 * day);
|
||||||
reps.toggleTimestamp(today);
|
reps.toggle(today);
|
||||||
reps.toggleTimestamp(today - 7 * day);
|
reps.toggle(today - 7 * day);
|
||||||
reps.toggleTimestamp(today - 5 * day);
|
reps.toggle(today - 5 * day);
|
||||||
|
|
||||||
listener = mock(ModelObservable.Listener.class);
|
listener = mock(ModelObservable.Listener.class);
|
||||||
reps.getObservable().addListener(listener);
|
reps.getObservable().addListener(listener);
|
||||||
|
reset(listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -130,7 +134,7 @@ public class RepetitionListTest extends BaseUnitTest
|
|||||||
weekdayCount[month][week]++;
|
weekdayCount[month][week]++;
|
||||||
monthCount[month]++;
|
monthCount[month]++;
|
||||||
}
|
}
|
||||||
reps.toggleTimestamp(day.getTimeInMillis());
|
reps.toggle(day.getTimeInMillis());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -155,17 +159,33 @@ public class RepetitionListTest extends BaseUnitTest
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test_toggleTimestamp()
|
public void test_toggle()
|
||||||
{
|
{
|
||||||
assertThat(reps.containsTimestamp(today), equalTo(true));
|
assertTrue(reps.containsTimestamp(today));
|
||||||
reps.toggleTimestamp(today);
|
reps.toggle(today);
|
||||||
assertThat(reps.containsTimestamp(today), equalTo(false));
|
assertFalse(reps.containsTimestamp(today));
|
||||||
verify(listener).onModelChange();
|
verify(listener).onModelChange();
|
||||||
reset(listener);
|
reset(listener);
|
||||||
|
|
||||||
assertThat(reps.containsTimestamp(today - day), equalTo(false));
|
assertFalse(reps.containsTimestamp(today - day));
|
||||||
reps.toggleTimestamp(today - day);
|
reps.toggle(today - day);
|
||||||
assertThat(reps.containsTimestamp(today - day), equalTo(true));
|
assertTrue(reps.containsTimestamp(today - day));
|
||||||
verify(listener).onModelChange();
|
verify(listener).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();
|
||||||
|
reset(listener);
|
||||||
|
|
||||||
|
reps.toggle(today, 500);
|
||||||
|
check = reps.getByTimestamp(today);
|
||||||
|
assertNotNull(check);
|
||||||
|
assertThat(check.getValue(), equalTo(500));
|
||||||
|
verify(listener, times(2)).onModelChange();
|
||||||
|
reset(listener);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -205,6 +205,6 @@ public class ScoreListTest extends BaseUnitTest
|
|||||||
long day = DateUtils.millisecondsInOneDay;
|
long day = DateUtils.millisecondsInOneDay;
|
||||||
|
|
||||||
for (int i = from; i < to; i++)
|
for (int i = from; i < to; i++)
|
||||||
reps.toggleTimestamp(today - i * day);
|
reps.toggle(today - i * day);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user