From 466d28f02ae213c454b76e9c2d7acef4a15b1349 Mon Sep 17 00:00:00 2001 From: Quentin Hibon Date: Wed, 18 Nov 2020 16:03:22 +0100 Subject: [PATCH] Initialize comparator at instantiation; fix tests --- .../core/models/memory/MemoryHabitList.java | 6 ++-- .../uhabits/core/models/HabitListTest.java | 36 +++++++++++++------ 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/memory/MemoryHabitList.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/memory/MemoryHabitList.java index c35872314..26ee25663 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/memory/MemoryHabitList.java +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/memory/MemoryHabitList.java @@ -35,13 +35,13 @@ public class MemoryHabitList extends HabitList @NonNull private LinkedList list = new LinkedList<>(); - private Comparator comparator = null; - @NonNull private Order order = Order.BY_POSITION; @NonNull - private Order previousOrder = Order.BY_POSITION; + private Order previousOrder = Order.BY_NAME_ASC; + + private Comparator comparator = getComposedComparatorByOrder(order, previousOrder); @Nullable private MemoryHabitList parent = null; diff --git a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/HabitListTest.java b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/HabitListTest.java index d5fdc448a..5cef6024f 100644 --- a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/HabitListTest.java +++ b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/HabitListTest.java @@ -111,7 +111,6 @@ public class HabitListTest extends BaseUnitTest @Test public void testOrdering() { - HabitList list = modelFactory.buildHabitList(); Habit h1 = fixtures.createEmptyHabit(); h1.setName("A Habit"); h1.setColor(2); @@ -131,46 +130,52 @@ public class HabitListTest extends BaseUnitTest h4.setName("D Habit"); h4.setColor(1); h4.setPosition(2); + HabitList list; - list.add(h3); - list.add(h1); - list.add(h4); - list.add(h2); - + list = testOrderingSetup(h1, h2, h3, h4); list.setOrder(BY_POSITION); assertThat(list.getByPosition(0), equalTo(h3)); assertThat(list.getByPosition(1), equalTo(h1)); assertThat(list.getByPosition(2), equalTo(h4)); assertThat(list.getByPosition(3), equalTo(h2)); + list = testOrderingSetup(h1, h2, h3, h4); list.setOrder(BY_NAME_DESC); assertThat(list.getByPosition(0), equalTo(h4)); assertThat(list.getByPosition(1), equalTo(h3)); assertThat(list.getByPosition(2), equalTo(h2)); assertThat(list.getByPosition(3), equalTo(h1)); + list = testOrderingSetup(h1, h2, h3, h4); list.setOrder(BY_NAME_ASC); assertThat(list.getByPosition(0), equalTo(h1)); assertThat(list.getByPosition(1), equalTo(h2)); assertThat(list.getByPosition(2), equalTo(h3)); assertThat(list.getByPosition(3), equalTo(h4)); + list = testOrderingSetup(h1, h2, h3, h4); + list.setOrder(BY_NAME_ASC); list.remove(h1); list.add(h1); assertThat(list.getByPosition(0), equalTo(h1)); + list = testOrderingSetup(h1, h2, h3, h4); list.setOrder(BY_COLOR_ASC); + list.setPreviousOrder(BY_NAME_ASC); assertThat(list.getByPosition(0), equalTo(h3)); assertThat(list.getByPosition(1), equalTo(h4)); assertThat(list.getByPosition(2), equalTo(h1)); assertThat(list.getByPosition(3), equalTo(h2)); + list = testOrderingSetup(h1, h2, h3, h4); list.setOrder(BY_COLOR_DESC); - assertThat(list.getByPosition(0), equalTo(h2)); - assertThat(list.getByPosition(1), equalTo(h1)); + list.setPreviousOrder(BY_NAME_ASC); + assertThat(list.getByPosition(0), equalTo(h1)); + assertThat(list.getByPosition(1), equalTo(h2)); assertThat(list.getByPosition(2), equalTo(h4)); assertThat(list.getByPosition(3), equalTo(h3)); + list = testOrderingSetup(h1, h2, h3, h4); list.setOrder(BY_POSITION); assertThat(list.getByPosition(0), equalTo(h3)); assertThat(list.getByPosition(1), equalTo(h1)); @@ -178,9 +183,20 @@ public class HabitListTest extends BaseUnitTest assertThat(list.getByPosition(3), equalTo(h2)); } - @Test - public void testReorder() + private HabitList testOrderingSetup(Habit h1, Habit h2, Habit h3, Habit h4) { + HabitList list = modelFactory.buildHabitList(); + + list.add(h3); + list.add(h1); + list.add(h4); + list.add(h2); + + return list; + } + + @Test + public void testReorder() { int operations[][] = { { 5, 2 }, { 3, 7 }, { 4, 4 }, { 8, 3 } };