From 4f636dcd183b1d7567aaa67d9d24260cbea4b088 Mon Sep 17 00:00:00 2001 From: utzcoz Date: Sun, 27 Dec 2020 14:15:14 +0800 Subject: [PATCH] Add tests for QuitReceiver Test: ./gradlew test Signed-off-by: utzcoz --- .../farmerbb/taskbar/receiver/QuitReceiver.java | 3 + .../taskbar/receiver/QuitReceiverTest.java | 64 ++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 app/src/test/java/com/farmerbb/taskbar/receiver/QuitReceiverTest.java diff --git a/app/src/main/java/com/farmerbb/taskbar/receiver/QuitReceiver.java b/app/src/main/java/com/farmerbb/taskbar/receiver/QuitReceiver.java index 0b404738..b663f7ab 100644 --- a/app/src/main/java/com/farmerbb/taskbar/receiver/QuitReceiver.java +++ b/app/src/main/java/com/farmerbb/taskbar/receiver/QuitReceiver.java @@ -32,6 +32,9 @@ import static com.farmerbb.taskbar.util.Constants.*; public class QuitReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { + if (intent == null || !ACTION_QUIT.equals(intent.getAction())) { + return; + } SharedPreferences pref = U.getSharedPreferences(context); if(!pref.getBoolean(PREF_SKIP_QUIT_RECEIVER, false)) { Intent taskbarIntent = new Intent(context, TaskbarService.class); diff --git a/app/src/test/java/com/farmerbb/taskbar/receiver/QuitReceiverTest.java b/app/src/test/java/com/farmerbb/taskbar/receiver/QuitReceiverTest.java new file mode 100644 index 00000000..1a2aeb5d --- /dev/null +++ b/app/src/test/java/com/farmerbb/taskbar/receiver/QuitReceiverTest.java @@ -0,0 +1,64 @@ +package com.farmerbb.taskbar.receiver; + +import android.content.Context; +import android.content.Intent; +import android.content.SharedPreferences; + +import androidx.test.core.app.ApplicationProvider; + +import com.farmerbb.taskbar.util.U; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; + +import static com.farmerbb.taskbar.Constants.UNSUPPORTED; +import static com.farmerbb.taskbar.util.Constants.ACTION_QUIT; +import static com.farmerbb.taskbar.util.Constants.PREF_SKIP_QUIT_RECEIVER; +import static com.farmerbb.taskbar.util.Constants.PREF_TASKBAR_ACTIVE; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +@RunWith(RobolectricTestRunner.class) +public class QuitReceiverTest { + private QuitReceiver quitReceiver; + private Context context; + private SharedPreferences prefs; + + @Before + public void setUp() { + context = ApplicationProvider.getApplicationContext(); + quitReceiver = new QuitReceiver(); + prefs = U.getSharedPreferences(context); + } + + @Test + public void testSkipQuitReceiver() { + prefs.edit().putBoolean(PREF_SKIP_QUIT_RECEIVER, true).apply(); + + quitReceiver.onReceive(context, null); + assertTrue(prefs.getBoolean(PREF_SKIP_QUIT_RECEIVER, true)); + + Intent intent = new Intent(); + quitReceiver.onReceive(context, intent); + assertTrue(prefs.getBoolean(PREF_SKIP_QUIT_RECEIVER, true)); + + intent.setAction(ACTION_QUIT + UNSUPPORTED); + quitReceiver.onReceive(context, intent); + assertTrue(prefs.getBoolean(PREF_SKIP_QUIT_RECEIVER, true)); + + intent.setAction(ACTION_QUIT); + quitReceiver.onReceive(context, intent); + assertFalse(prefs.contains(PREF_SKIP_QUIT_RECEIVER)); + } + + @Test + public void testNonSkipQuitReceiver() { + prefs.edit().putBoolean(PREF_SKIP_QUIT_RECEIVER, false).apply(); + prefs.edit().putBoolean(PREF_TASKBAR_ACTIVE, true).apply(); + Intent intent = new Intent(ACTION_QUIT); + quitReceiver.onReceive(context, intent); + assertFalse(prefs.getBoolean(PREF_TASKBAR_ACTIVE, true)); + } +} -- 2.11.0