• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.settings.accessibility;
18 
19 import static org.mockito.ArgumentMatchers.any;
20 import static org.mockito.Mockito.spy;
21 import static org.mockito.Mockito.verify;
22 import static org.mockito.Mockito.when;
23 
24 import android.content.Context;
25 
26 import androidx.preference.PreferenceScreen;
27 import androidx.test.core.app.ApplicationProvider;
28 
29 import com.android.settings.display.PreviewPagerAdapter;
30 import com.android.settings.testutils.shadow.ShadowInteractionJankMonitor;
31 import com.android.settings.widget.LabeledSeekBarPreference;
32 
33 import org.junit.Before;
34 import org.junit.Test;
35 import org.junit.runner.RunWith;
36 import org.mockito.Mock;
37 import org.mockito.MockitoAnnotations;
38 import org.robolectric.RobolectricTestRunner;
39 import org.robolectric.annotation.Config;
40 import org.robolectric.shadows.ShadowChoreographer;
41 
42 import java.util.ArrayList;
43 import java.util.List;
44 
45 /**
46  * Tests for {@link TextReadingPreviewController}.
47  */
48 @RunWith(RobolectricTestRunner.class)
49 @Config(shadows = {ShadowChoreographer.class, ShadowInteractionJankMonitor.class})
50 public class TextReadingPreviewControllerTest {
51     private static final String PREVIEW_KEY = "preview";
52     private static final String FONT_SIZE_KEY = "font_size";
53     private static final String DISPLAY_SIZE_KEY = "display_size";
54     private final Context mContext = ApplicationProvider.getApplicationContext();
55     private TextReadingPreviewController mPreviewController;
56     private TextReadingPreviewPreference mPreviewPreference;
57     private LabeledSeekBarPreference mFontSizePreference;
58     private LabeledSeekBarPreference mDisplaySizePreference;
59 
60     @Mock
61     private DisplaySizeData mDisplaySizeData;
62 
63     @Mock
64     private PreferenceScreen mPreferenceScreen;
65 
66     @Before
setUp()67     public void setUp() {
68         MockitoAnnotations.initMocks(this);
69 
70         final FontSizeData fontSizeData = new FontSizeData(mContext);
71         final List<Integer> displayData = createFakeDisplayData();
72         when(mDisplaySizeData.getValues()).thenReturn(displayData);
73         mPreviewPreference = spy(new TextReadingPreviewPreference(mContext, /* attr= */ null));
74         mPreviewController = new TextReadingPreviewController(mContext, PREVIEW_KEY, fontSizeData,
75                 mDisplaySizeData);
76         mFontSizePreference = new LabeledSeekBarPreference(mContext, /* attr= */ null);
77         mDisplaySizePreference = new LabeledSeekBarPreference(mContext, /* attr= */ null);
78     }
79 
80     @Test
initPreviewerAdapter_verifyAction()81     public void initPreviewerAdapter_verifyAction() {
82         when(mPreferenceScreen.findPreference(PREVIEW_KEY)).thenReturn(mPreviewPreference);
83         when(mPreferenceScreen.findPreference(FONT_SIZE_KEY)).thenReturn(mFontSizePreference);
84         when(mPreferenceScreen.findPreference(DISPLAY_SIZE_KEY)).thenReturn(mDisplaySizePreference);
85 
86         mPreviewController.displayPreference(mPreferenceScreen);
87 
88         verify(mPreviewPreference).setPreviewAdapter(any(PreviewPagerAdapter.class));
89     }
90 
91     @Test(expected = NullPointerException.class)
initPreviewerAdapterWithoutDisplaySizePreference_throwNPE()92     public void initPreviewerAdapterWithoutDisplaySizePreference_throwNPE() {
93         when(mPreferenceScreen.findPreference(PREVIEW_KEY)).thenReturn(mPreviewPreference);
94         when(mPreferenceScreen.findPreference(DISPLAY_SIZE_KEY)).thenReturn(mDisplaySizePreference);
95 
96         mPreviewController.displayPreference(mPreferenceScreen);
97 
98         verify(mPreviewPreference).setPreviewAdapter(any(PreviewPagerAdapter.class));
99     }
100 
101     @Test(expected = NullPointerException.class)
initPreviewerAdapterWithoutFontSizePreference_throwNPE()102     public void initPreviewerAdapterWithoutFontSizePreference_throwNPE() {
103         when(mPreferenceScreen.findPreference(PREVIEW_KEY)).thenReturn(mPreviewPreference);
104         when(mPreferenceScreen.findPreference(FONT_SIZE_KEY)).thenReturn(mFontSizePreference);
105 
106         mPreviewController.displayPreference(mPreferenceScreen);
107 
108         verify(mPreviewPreference).setPreviewAdapter(any(PreviewPagerAdapter.class));
109     }
110 
createFakeDisplayData()111     private List<Integer> createFakeDisplayData() {
112         final List<Integer> list = new ArrayList<>();
113         list.add(1);
114         list.add(2);
115         list.add(3);
116         list.add(4);
117 
118         return list;
119     }
120 }
121