1a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang/*
2a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang * Copyright (C) 2017 The Android Open Source Project
3a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang *
4a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang * Licensed under the Apache License, Version 2.0 (the "License");
5a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang * you may not use this file except in compliance with the License.
6a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang * You may obtain a copy of the License at
7a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang *
8a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang *      http://www.apache.org/licenses/LICENSE-2.0
9a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang *
10a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang * Unless required by applicable law or agreed to in writing, software
11a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang * distributed under the License is distributed on an "AS IS" BASIS,
12a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang * See the License for the specific language governing permissions and
14a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang * limitations under the License.
15a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang */
16a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang
17a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhangpackage com.android.settings.display;
18a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang
19a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhangimport static com.google.common.truth.Truth.assertThat;
20a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhangimport static org.mockito.Mockito.doReturn;
21a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhangimport static org.mockito.Mockito.spy;
22a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang
23a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhangimport android.content.ContentResolver;
24a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhangimport android.os.UserHandle;
25a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhangimport android.provider.Settings;
26a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang
27a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhangimport com.android.internal.logging.nano.MetricsProto;
289f1e911759dc6fedaac9fa65afb79f6a93022bf4Andrew Sappersteinimport com.android.settings.testutils.SettingsRobolectricTestRunner;
29a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhangimport com.android.settings.TestConfig;
30a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhangimport com.android.settings.testutils.shadow.ShadowSecureSettings;
31a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang
32a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhangimport org.junit.Before;
33a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhangimport org.junit.Test;
34a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhangimport org.junit.runner.RunWith;
35a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhangimport org.mockito.MockitoAnnotations;
36a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhangimport org.robolectric.RuntimeEnvironment;
37a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhangimport org.robolectric.annotation.Config;
38a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang
39a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhangimport java.util.List;
40a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang
41a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang@RunWith(SettingsRobolectricTestRunner.class)
42a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
43a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhangpublic class VrDisplayPreferencePickerTest {
44a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang
45a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang    private VrDisplayPreferencePicker mPicker;
46a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang
47a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang    @Before
48a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang    public void setUp() {
49a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang        MockitoAnnotations.initMocks(this);
50a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang
51a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang        mPicker = spy(new VrDisplayPreferencePicker());
52a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang        doReturn(RuntimeEnvironment.application).when(mPicker).getContext();
53a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang    }
54a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang
55a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang    @Test
56a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang    public void verifyMetricsConstant() {
57a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang        assertThat(mPicker.getMetricsCategory())
58a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang                .isEqualTo(MetricsProto.MetricsEvent.VR_DISPLAY_PREFERENCE);
59a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang    }
60a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang
61a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang    @Test
62a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang    public void getCandidates_shouldReturnTwoCandidates() {
63a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang        List<VrDisplayPreferencePicker.VrCandidateInfo> candidates = mPicker.getCandidates();
64a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang
65a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang        assertThat(candidates.size()).isEqualTo(2);
66a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang        assertThat(candidates.get(0).getKey())
67a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang                .isEqualTo(VrDisplayPreferencePicker.PREF_KEY_PREFIX + 0);
68a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang        assertThat(candidates.get(1).getKey())
69a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang                .isEqualTo(VrDisplayPreferencePicker.PREF_KEY_PREFIX + 1);
70a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang    }
71a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang
72a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang    @Test
73a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang    @Config(shadows = ShadowSecureSettings.class)
74a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang    public void getKey_shouldGetFromSettingsProvider() {
75a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang        final ContentResolver cr = RuntimeEnvironment.application.getContentResolver();
76a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang        Settings.Secure.putIntForUser(cr, Settings.Secure.VR_DISPLAY_MODE, 1,
77a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang                UserHandle.myUserId());
78a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang
79a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang        assertThat(mPicker.getDefaultKey())
80a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang                .isEqualTo(VrDisplayPreferencePicker.PREF_KEY_PREFIX + 1);
81a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang    }
82a0c2c11bbfe0c4643b2f645bbf883b918f4ba857Fan Zhang}
83