From dda9ff6757f6727e8b8a48c3242fc202066b5a02 Mon Sep 17 00:00:00 2001 From: utzcoz Date: Thu, 28 May 2020 14:21:13 +0800 Subject: [PATCH] Extract method to check whether to need to reverse order in TaskbarController Test: ./gradlew test Signed-off-by: utzcoz --- .../com/farmerbb/taskbar/ui/TaskbarController.java | 24 +++++------ .../com/farmerbb/taskbar/mockito/StringAnswer.java | 13 ++++++ .../farmerbb/taskbar/ui/TaskbarControllerTest.java | 48 ++++++++++++++++++++++ 3 files changed, 73 insertions(+), 12 deletions(-) create mode 100644 app/src/test/java/com/farmerbb/taskbar/mockito/StringAnswer.java diff --git a/app/src/main/java/com/farmerbb/taskbar/ui/TaskbarController.java b/app/src/main/java/com/farmerbb/taskbar/ui/TaskbarController.java index ee6dc11f..fb2d6e86 100644 --- a/app/src/main/java/com/farmerbb/taskbar/ui/TaskbarController.java +++ b/app/src/main/java/com/farmerbb/taskbar/ui/TaskbarController.java @@ -890,18 +890,7 @@ public class TaskbarController extends UIController { usageStatsList6 = usageStatsList5; // Determine if we need to reverse the order - boolean needToReverseOrder; - switch(TaskbarPosition.getTaskbarPosition(context)) { - case POSITION_BOTTOM_RIGHT: - case POSITION_TOP_RIGHT: - needToReverseOrder = sortOrder.contains("false"); - break; - default: - needToReverseOrder = sortOrder.contains("true"); - break; - } - - if(needToReverseOrder) { + if(needToReverseOrder(context, sortOrder)) { Collections.reverse(usageStatsList6); } @@ -1170,6 +1159,17 @@ public class TaskbarController extends UIController { } } + @VisibleForTesting + public boolean needToReverseOrder(Context context, String sortOrder) { + switch(TaskbarPosition.getTaskbarPosition(context)) { + case POSITION_BOTTOM_RIGHT: + case POSITION_TOP_RIGHT: + return sortOrder.contains("false"); + default: + return sortOrder.contains("true"); + } + } + private void updateRunningAppIndicators(List pinnedApps, List usageStatsList, List entries) { if(taskbar.getChildCount() != entries.size()) return; diff --git a/app/src/test/java/com/farmerbb/taskbar/mockito/StringAnswer.java b/app/src/test/java/com/farmerbb/taskbar/mockito/StringAnswer.java new file mode 100644 index 00000000..6a98c97f --- /dev/null +++ b/app/src/test/java/com/farmerbb/taskbar/mockito/StringAnswer.java @@ -0,0 +1,13 @@ +package com.farmerbb.taskbar.mockito; + +import org.mockito.invocation.InvocationOnMock; +import org.mockito.stubbing.Answer; + +public class StringAnswer implements Answer { + public String answer = null; + + @Override + public String answer(InvocationOnMock invocation) throws Throwable { + return answer; + } +} diff --git a/app/src/test/java/com/farmerbb/taskbar/ui/TaskbarControllerTest.java b/app/src/test/java/com/farmerbb/taskbar/ui/TaskbarControllerTest.java index 658d6525..775e00ca 100644 --- a/app/src/test/java/com/farmerbb/taskbar/ui/TaskbarControllerTest.java +++ b/app/src/test/java/com/farmerbb/taskbar/ui/TaskbarControllerTest.java @@ -19,6 +19,7 @@ import androidx.test.core.app.ApplicationProvider; import com.farmerbb.taskbar.R; import com.farmerbb.taskbar.mockito.BooleanAnswer; +import com.farmerbb.taskbar.mockito.StringAnswer; import com.farmerbb.taskbar.util.DisplayInfo; import com.farmerbb.taskbar.util.TaskbarPosition; import com.farmerbb.taskbar.util.U; @@ -36,6 +37,9 @@ import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; import org.robolectric.util.ReflectionHelpers; +import java.util.ArrayList; +import java.util.List; + import static com.farmerbb.taskbar.util.Constants.POSITION_BOTTOM_LEFT; import static com.farmerbb.taskbar.util.Constants.POSITION_BOTTOM_RIGHT; import static com.farmerbb.taskbar.util.Constants.POSITION_BOTTOM_VERTICAL_LEFT; @@ -463,6 +467,50 @@ public class TaskbarControllerTest { assertEquals(taskbarHeight, scrollView.getScrollY()); } + @Test + public void testNeedToReverseOrder() { + PowerMockito.spy(TaskbarPosition.class); + StringAnswer positionAnswer = new StringAnswer(); + when(TaskbarPosition.getTaskbarPosition(context)).thenAnswer(positionAnswer); + + List positions = new ArrayList<>(); + positions.add(POSITION_BOTTOM_LEFT); + positions.add(POSITION_BOTTOM_RIGHT); + positions.add(POSITION_BOTTOM_VERTICAL_LEFT); + positions.add(POSITION_BOTTOM_VERTICAL_RIGHT); + positions.add(POSITION_TOP_LEFT); + positions.add(POSITION_TOP_RIGHT); + positions.add(POSITION_TOP_VERTICAL_LEFT); + positions.add(POSITION_TOP_VERTICAL_RIGHT); + positions.add("unsupported"); + + String sortOrder = "false"; + for (String position : positions) { + positionAnswer.answer = position; + if (POSITION_BOTTOM_RIGHT.equals(position) || POSITION_TOP_RIGHT.equals(position)) { + assertTrue(uiController.needToReverseOrder(context, sortOrder)); + } else { + assertFalse(uiController.needToReverseOrder(context, sortOrder)); + } + } + + sortOrder = "true"; + for (String position : positions) { + positionAnswer.answer = position; + if (POSITION_BOTTOM_RIGHT.equals(position) || POSITION_TOP_RIGHT.equals(position)) { + assertFalse(uiController.needToReverseOrder(context, sortOrder)); + } else { + assertTrue(uiController.needToReverseOrder(context, sortOrder)); + } + } + + sortOrder = "unsupported"; + for (String position : positions) { + positionAnswer.answer = position; + assertFalse(uiController.needToReverseOrder(context, sortOrder)); + } + } + private void checkDrawableBackgroundColor(Drawable drawable, int color) { assertTrue(drawable instanceof ColorDrawable); ColorDrawable colorDrawable = (ColorDrawable) drawable; -- 2.11.0