OSDN Git Service

Extract method to check whether to need to reverse order in TaskbarController
authorutzcoz <utzcoz@outlook.com>
Thu, 28 May 2020 06:21:13 +0000 (14:21 +0800)
committerutzcoz <utzcoz@outlook.com>
Thu, 28 May 2020 06:21:13 +0000 (14:21 +0800)
Test: ./gradlew test

Signed-off-by: utzcoz <utzcoz@outlook.com>
app/src/main/java/com/farmerbb/taskbar/ui/TaskbarController.java
app/src/test/java/com/farmerbb/taskbar/mockito/StringAnswer.java [new file with mode: 0644]
app/src/test/java/com/farmerbb/taskbar/ui/TaskbarControllerTest.java

index ee6dc11..fb2d6e8 100644 (file)
@@ -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<AppEntry> pinnedApps, List<AppEntry> usageStatsList, List<AppEntry> 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 (file)
index 0000000..6a98c97
--- /dev/null
@@ -0,0 +1,13 @@
+package com.farmerbb.taskbar.mockito;
+
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+
+public class StringAnswer implements Answer<String> {
+    public String answer = null;
+
+    @Override
+    public String answer(InvocationOnMock invocation) throws Throwable {
+        return answer;
+    }
+}
index 658d652..775e00c 100644 (file)
@@ -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<String> 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;