From bf71b244f09873c47f0ba3253ea5202ffe42c7ec Mon Sep 17 00:00:00 2001 From: utzcoz Date: Fri, 15 May 2020 14:45:44 +0800 Subject: [PATCH] Extract method to initialize recents serach interval in TaskbarController Test: ./gradlew test Signed-off-by: utzcoz --- .../com/farmerbb/taskbar/ui/TaskbarController.java | 35 +++++++++++--------- .../farmerbb/taskbar/ui/TaskbarControllerTest.java | 38 ++++++++++++++++++++++ 2 files changed, 58 insertions(+), 15 deletions(-) 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 34fc5aa4..9e8e00a6 100644 --- a/app/src/main/java/com/farmerbb/taskbar/ui/TaskbarController.java +++ b/app/src/main/java/com/farmerbb/taskbar/ui/TaskbarController.java @@ -276,21 +276,7 @@ public class TaskbarController extends UIController { sortOrder = pref.getString(PREF_SORT_ORDER, "false"); runningAppsOnly = pref.getString(PREF_RECENTS_AMOUNT, "past_day").equals("running_apps_only"); - - switch(pref.getString(PREF_RECENTS_AMOUNT, "past_day")) { - case "past_day": - searchInterval = System.currentTimeMillis() - AlarmManager.INTERVAL_DAY; - break; - case "app_start": - long appStartTime = pref.getLong(PREF_TIME_OF_SERVICE_START, System.currentTimeMillis()); - long deviceStartTime = System.currentTimeMillis() - SystemClock.elapsedRealtime(); - - searchInterval = deviceStartTime > appStartTime ? deviceStartTime : appStartTime; - break; - case "show_all": - searchInterval = 0; - break; - } + searchInterval = getSearchInterval(pref); U.sendBroadcast(context, ACTION_HIDE_START_MENU); U.sendBroadcast(context, ACTION_UPDATE_HOME_SCREEN_MARGINS); @@ -611,6 +597,25 @@ public class TaskbarController extends UIController { } @VisibleForTesting + public long getSearchInterval(SharedPreferences pref) { + long searchInterval = -1; + switch(pref.getString(PREF_RECENTS_AMOUNT, "past_day")) { + case "past_day": + searchInterval = System.currentTimeMillis() - AlarmManager.INTERVAL_DAY; + break; + case "app_start": + long appStartTime = pref.getLong(PREF_TIME_OF_SERVICE_START, System.currentTimeMillis()); + long deviceStartTime = System.currentTimeMillis() - SystemClock.elapsedRealtime(); + searchInterval = Math.max(deviceStartTime, appStartTime); + break; + case "show_all": + searchInterval = 0; + break; + } + return searchInterval; + } + + @VisibleForTesting public void drawSysTray(Context context, int layoutId, LinearLayout layout) { sysTrayLayout = (LinearLayout) LayoutInflater.from(context).inflate(R.layout.tb_system_tray, null); 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 521cd7f3..052f3632 100644 --- a/app/src/test/java/com/farmerbb/taskbar/ui/TaskbarControllerTest.java +++ b/app/src/test/java/com/farmerbb/taskbar/ui/TaskbarControllerTest.java @@ -1,8 +1,10 @@ package com.farmerbb.taskbar.ui; +import android.app.AlarmManager; import android.content.Context; import android.content.SharedPreferences; import android.graphics.Color; +import android.os.SystemClock; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; @@ -41,7 +43,9 @@ import static com.farmerbb.taskbar.util.Constants.POSITION_TOP_VERTICAL_RIGHT; import static com.farmerbb.taskbar.util.Constants.PREF_BUTTON_BACK; import static com.farmerbb.taskbar.util.Constants.PREF_BUTTON_HOME; import static com.farmerbb.taskbar.util.Constants.PREF_BUTTON_RECENTS; +import static com.farmerbb.taskbar.util.Constants.PREF_RECENTS_AMOUNT; import static com.farmerbb.taskbar.util.Constants.PREF_START_BUTTON_IMAGE; +import static com.farmerbb.taskbar.util.Constants.PREF_TIME_OF_SERVICE_START; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; @@ -219,6 +223,40 @@ public class TaskbarControllerTest { } @Test + public void testGetSearchInterval() { + long permitTimeDeltaMillis = 100; + prefs.edit().remove(PREF_RECENTS_AMOUNT).apply(); + long searchInterval = uiController.getSearchInterval(prefs); + long lastDayTime = System.currentTimeMillis() - AlarmManager.INTERVAL_DAY; + assertEquals(lastDayTime, searchInterval, permitTimeDeltaMillis); + + prefs.edit().putString(PREF_RECENTS_AMOUNT, "app_start").apply(); + long deviceStartTime = System.currentTimeMillis() - SystemClock.elapsedRealtime(); + // The service start time is larger than device start time + long appStartTime = deviceStartTime * 2; + prefs.edit().putLong(PREF_TIME_OF_SERVICE_START, appStartTime).apply(); + searchInterval = uiController.getSearchInterval(prefs); + assertEquals(appStartTime, searchInterval); + + // The service start time is smaller than device start time + prefs.edit().putLong(PREF_TIME_OF_SERVICE_START, deviceStartTime - 100).apply(); + searchInterval = uiController.getSearchInterval(prefs); + deviceStartTime = System.currentTimeMillis() - SystemClock.elapsedRealtime(); + assertEquals(deviceStartTime, searchInterval, permitTimeDeltaMillis); + prefs.edit().remove(PREF_TIME_OF_SERVICE_START).apply(); + + prefs.edit().putString(PREF_RECENTS_AMOUNT, "show_all").apply(); + searchInterval = uiController.getSearchInterval(prefs); + assertEquals(0, searchInterval); + + prefs.edit().putString(PREF_RECENTS_AMOUNT, "unsupported").apply(); + searchInterval = uiController.getSearchInterval(prefs); + assertEquals(-1, searchInterval); + + prefs.edit().remove(PREF_RECENTS_AMOUNT).apply(); + } + + @Test public void testDrawSysTrayOnClickListener() { PowerMockito.spy(U.class); BooleanAnswer isLibraryAnswer = new BooleanAnswer(); -- 2.11.0