Tutorial improvement for Accessibility shortcut (3/n).

Add test cases for tutorial pages.

Bug: 148989018
Bug: 134640159
Test: manual test & run RoboTests
Change-Id: I9bb29f6e61e331c3f9a2408a1eebc3d5e9e16000
diff --git a/src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorial.java b/src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorial.java
index c3320ad..58245b7 100644
--- a/src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorial.java
+++ b/src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorial.java
@@ -45,6 +45,7 @@
 import androidx.annotation.ColorInt;
 import androidx.annotation.IntDef;
 import androidx.annotation.NonNull;
+import androidx.annotation.VisibleForTesting;
 import androidx.appcompat.app.AlertDialog;
 import androidx.core.content.ContextCompat;
 import androidx.core.util.Preconditions;
@@ -364,7 +365,8 @@
         return new TutorialPage(title, image, indicatorIcon, instruction);
     }
 
-    private static List<TutorialPage> createShortcutTutorialPages(@NonNull Context context,
+    @VisibleForTesting
+    static List<TutorialPage> createShortcutTutorialPages(@NonNull Context context,
             int shortcutTypes) {
         final List<TutorialPage> tutorialPages = new ArrayList<>();
         if ((shortcutTypes & UserShortcutType.SOFTWARE) == UserShortcutType.SOFTWARE) {
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorialTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorialTest.java
new file mode 100644
index 0000000..cf0ce96
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorialTest.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.accessibility;
+
+import static com.android.settings.accessibility.AccessibilityGestureNavigationTutorial.createAccessibilityTutorialDialog;
+import static com.android.settings.accessibility.AccessibilityGestureNavigationTutorial.createShortcutTutorialPages;
+import static com.android.settings.accessibility.AccessibilityUtil.UserShortcutType;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+
+import androidx.appcompat.app.AlertDialog;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+
+/** Tests for {@link AccessibilityGestureNavigationTutorial}. */
+@RunWith(RobolectricTestRunner.class)
+public final class AccessibilityGestureNavigationTutorialTest {
+
+    private Context mContext;
+    private int mShortcutTypes;
+
+    @Before
+    public void setUp() {
+        mContext = RuntimeEnvironment.application;
+        mShortcutTypes = /* initial */ 0;
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void createTutorialPages_shortcutListIsEmpty_throwsException() {
+        createAccessibilityTutorialDialog(mContext, mShortcutTypes);
+    }
+
+    @Test
+    public void createTutorialPages_turnOnTripleTapShortcut_hasOnePage() {
+        mShortcutTypes |= UserShortcutType.TRIPLETAP;
+
+        final AlertDialog alertDialog =
+                createAccessibilityTutorialDialog(mContext, mShortcutTypes);
+
+        assertThat(createShortcutTutorialPages(mContext,
+                mShortcutTypes)).hasSize(/* expectedSize= */ 1);
+        assertThat(alertDialog).isNotNull();
+    }
+
+    @Test
+    public void createTutorialPages_turnOnSoftwareShortcut_hasOnePage() {
+        mShortcutTypes |= UserShortcutType.SOFTWARE;
+
+        final AlertDialog alertDialog =
+                createAccessibilityTutorialDialog(mContext, mShortcutTypes);
+
+        assertThat(createShortcutTutorialPages(mContext,
+                mShortcutTypes)).hasSize(/* expectedSize= */ 1);
+        assertThat(alertDialog).isNotNull();
+    }
+
+    @Test
+    public void createTutorialPages_turnOnSoftwareAndHardwareShortcuts_hasTwoPages() {
+        mShortcutTypes |= UserShortcutType.SOFTWARE;
+        mShortcutTypes |= UserShortcutType.HARDWARE;
+
+        final AlertDialog alertDialog =
+                createAccessibilityTutorialDialog(mContext, mShortcutTypes);
+
+        assertThat(createShortcutTutorialPages(mContext,
+                mShortcutTypes)).hasSize(/* expectedSize= */ 2);
+        assertThat(alertDialog).isNotNull();
+    }
+}