1bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam/*
2bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam * Copyright (C) 2015 The Android Open Source Project
3bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam *
4bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam * Licensed under the Apache License, Version 2.0 (the "License");
5bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam * you may not use this file except in compliance with the License.
6bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam * You may obtain a copy of the License at
7bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam *
8bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam *      http://www.apache.org/licenses/LICENSE-2.0
9bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam *
10bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam * Unless required by applicable law or agreed to in writing, software
11bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam * distributed under the License is distributed on an "AS IS" BASIS,
12bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam * See the License for the specific language governing permissions and
14bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam * limitations under the License.
15bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam */
16bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam
17d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lampackage com.android.setupwizardlib.util;
18bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam
192614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lamimport static org.junit.Assert.assertEquals;
202614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lamimport static org.junit.Assert.assertFalse;
212614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lamimport static org.junit.Assert.assertTrue;
22d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lamimport static org.robolectric.RuntimeEnvironment.application;
232614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lam
24d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lamimport android.annotation.TargetApi;
25bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lamimport android.app.Activity;
26bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lamimport android.content.Intent;
27d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lamimport android.os.Build.VERSION_CODES;
2853f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lamimport android.os.Bundle;
29d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lamimport android.provider.Settings;
30d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lamimport android.provider.Settings.Global;
31d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lamimport android.provider.Settings.Secure;
32e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lamimport android.support.annotation.StyleRes;
33bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam
34d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lamimport com.android.setupwizardlib.BuildConfig;
35e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lamimport com.android.setupwizardlib.R;
36d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lamimport com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner;
37bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam
382614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lamimport org.junit.Test;
392614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lamimport org.junit.runner.RunWith;
40d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lamimport org.robolectric.annotation.Config;
412614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lam
42d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam@RunWith(SuwLibRobolectricTestRunner.class)
43d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam@Config(constants = BuildConfig.class, sdk = Config.NEWEST_SDK)
442614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lampublic class WizardManagerHelperTest {
45bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam
462614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lam    @Test
47bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam    public void testGetNextIntent() {
48bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam        final Intent intent = new Intent("test.intent.ACTION");
49bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam        intent.putExtra("scriptUri", "android-resource://test-script");
50bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam        intent.putExtra("actionId", "test_action_id");
51bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam        intent.putExtra("theme", "test_theme");
52bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam        intent.putExtra("ignoreExtra", "poof"); // extra is ignored because it's not known
53bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam
54bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam        final Intent data = new Intent();
55bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam        data.putExtra("extraData", "shazam");
56bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam
5735cc29c9f307191962cd7124db14eb7b78c9407eMaurice Lam        final Intent nextIntent =
5835cc29c9f307191962cd7124db14eb7b78c9407eMaurice Lam                WizardManagerHelper.getNextIntent(intent, Activity.RESULT_OK, data);
59bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam        assertEquals("Next intent action should be NEXT", "com.android.wizard.NEXT",
60bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam                nextIntent.getAction());
61bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam        assertEquals("Script URI should be the same as original intent",
62bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam                "android-resource://test-script", nextIntent.getStringExtra("scriptUri"));
63bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam        assertEquals("Action ID should be the same as original intent", "test_action_id",
64bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam                nextIntent.getStringExtra("actionId"));
65bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam        assertEquals("Theme extra should be the same as original intent", "test_theme",
66bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam                nextIntent.getStringExtra("theme"));
67bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam        assertFalse("ignoreExtra should not be in nextIntent", nextIntent.hasExtra("ignoreExtra"));
68bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam        assertEquals("Result code extra should be RESULT_OK", Activity.RESULT_OK,
69bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam                nextIntent.getIntExtra("com.android.setupwizard.ResultCode", 0));
70bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam        assertEquals("Extra data should surface as extra in nextIntent", "shazam",
71bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam                nextIntent.getStringExtra("extraData"));
72bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam    }
73bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam
742614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lam    @Test
75bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam    public void testIsSetupWizardTrue() {
76bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam        final Intent intent = new Intent();
77bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam        intent.putExtra("firstRun", true);
78bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam        assertTrue("Is setup wizard should be true",
79bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam                WizardManagerHelper.isSetupWizardIntent(intent));
80bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam    }
81bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam
822614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lam    @Test
83bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam    public void testIsSetupWizardFalse() {
84bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam        final Intent intent = new Intent();
85bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam        intent.putExtra("firstRun", false);
86bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam        assertFalse("Is setup wizard should be true",
87bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam                WizardManagerHelper.isSetupWizardIntent(intent));
88bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam    }
8956a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam
902614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lam    @Test
9156a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam    public void testHoloIsNotLightTheme() {
9256a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam        final Intent intent = new Intent();
9356a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam        intent.putExtra("theme", "holo");
9456a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam        assertFalse("Theme holo should not be light theme",
9556a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam                WizardManagerHelper.isLightTheme(intent, true));
9656a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam    }
9756a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam
982614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lam    @Test
9956a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam    public void testHoloLightIsLightTheme() {
10056a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam        final Intent intent = new Intent();
10156a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam        intent.putExtra("theme", "holo_light");
10256a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam        assertTrue("Theme holo_light should be light theme",
10356a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam                WizardManagerHelper.isLightTheme(intent, false));
10456a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam    }
10556a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam
1062614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lam    @Test
10756a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam    public void testMaterialIsNotLightTheme() {
10856a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam        final Intent intent = new Intent();
10956a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam        intent.putExtra("theme", "material");
11056a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam        assertFalse("Theme material should not be light theme",
11156a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam                WizardManagerHelper.isLightTheme(intent, true));
11256a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam    }
11356a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam
1142614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lam    @Test
11556a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam    public void testMaterialLightIsLightTheme() {
11656a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam        final Intent intent = new Intent();
11756a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam        intent.putExtra("theme", "material_light");
11856a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam        assertTrue("Theme material_light should be light theme",
11956a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam                WizardManagerHelper.isLightTheme(intent, false));
12056a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam    }
12156a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam
1222614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lam    @Test
1230c0f30d332afd782dd107ef11f7fa76fb2fdd165Maurice Lam    public void testGlifIsDarkTheme() {
1240c0f30d332afd782dd107ef11f7fa76fb2fdd165Maurice Lam        final Intent intent = new Intent();
1250c0f30d332afd782dd107ef11f7fa76fb2fdd165Maurice Lam        intent.putExtra("theme", "glif");
1260c0f30d332afd782dd107ef11f7fa76fb2fdd165Maurice Lam        assertFalse("Theme glif should be dark theme",
1270c0f30d332afd782dd107ef11f7fa76fb2fdd165Maurice Lam                WizardManagerHelper.isLightTheme(intent, false));
1280c0f30d332afd782dd107ef11f7fa76fb2fdd165Maurice Lam        assertFalse("Theme glif should be dark theme",
1290c0f30d332afd782dd107ef11f7fa76fb2fdd165Maurice Lam                WizardManagerHelper.isLightTheme(intent, true));
1300c0f30d332afd782dd107ef11f7fa76fb2fdd165Maurice Lam    }
1310c0f30d332afd782dd107ef11f7fa76fb2fdd165Maurice Lam
1322614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lam    @Test
13335cc29c9f307191962cd7124db14eb7b78c9407eMaurice Lam    public void testGlifLightIsLightTheme() {
13435cc29c9f307191962cd7124db14eb7b78c9407eMaurice Lam        final Intent intent = new Intent();
13535cc29c9f307191962cd7124db14eb7b78c9407eMaurice Lam        intent.putExtra("theme", "glif_light");
13635cc29c9f307191962cd7124db14eb7b78c9407eMaurice Lam        assertTrue("Theme glif_light should be light theme",
13735cc29c9f307191962cd7124db14eb7b78c9407eMaurice Lam                WizardManagerHelper.isLightTheme(intent, false));
13835cc29c9f307191962cd7124db14eb7b78c9407eMaurice Lam        assertTrue("Theme glif_light should be light theme",
13935cc29c9f307191962cd7124db14eb7b78c9407eMaurice Lam                WizardManagerHelper.isLightTheme(intent, true));
14035cc29c9f307191962cd7124db14eb7b78c9407eMaurice Lam    }
14135cc29c9f307191962cd7124db14eb7b78c9407eMaurice Lam
1422614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lam    @Test
143d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam    public void testGlifPixelIsDarkTheme() {
144d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam        final Intent intent = new Intent();
145d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam        intent.putExtra("theme", "glif_pixel");
146d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam        assertFalse("Theme glif_pixel should be dark theme",
147d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam                WizardManagerHelper.isLightTheme(intent, false));
148d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam        assertFalse("Theme glif_pixel should be dark theme",
149d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam                WizardManagerHelper.isLightTheme(intent, true));
150d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam    }
151d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam
152d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam    @Test
153d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam    public void testGlifPixelLightIsLightTheme() {
154d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam        final Intent intent = new Intent();
155d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam        intent.putExtra("theme", "glif_pixel_light");
156d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam        assertTrue("Theme glif_pixel_light should be light theme",
157d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam                WizardManagerHelper.isLightTheme(intent, false));
158d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam        assertTrue("Theme glif_pixel_light should be light theme",
159d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam                WizardManagerHelper.isLightTheme(intent, true));
160d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam    }
161d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam
162d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam    @Test
16356a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam    public void testIsLightThemeDefault() {
16456a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam        final Intent intent = new Intent();
16556a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam        intent.putExtra("theme", "abracadabra");
16656a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam        assertTrue("isLightTheme should return default value true",
16756a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam                WizardManagerHelper.isLightTheme(intent, true));
16856a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam        assertFalse("isLightTheme should return default value false",
16956a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam                WizardManagerHelper.isLightTheme(intent, false));
17056a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam    }
17156a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam
1722614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lam    @Test
17356a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam    public void testIsLightThemeUnspecified() {
17456a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam        final Intent intent = new Intent();
17556a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam        assertTrue("isLightTheme should return default value true",
17656a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam                WizardManagerHelper.isLightTheme(intent, true));
17756a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam        assertFalse("isLightTheme should return default value false",
17856a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam                WizardManagerHelper.isLightTheme(intent, false));
17956a19113d248d9ffdb462a0af6ba8a967635be66Maurice Lam    }
180c3a4e07feacd7e9cff6d0fc6ddbe86c90d6f7087Maurice Lam
1812614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lam    @Test
182c3a4e07feacd7e9cff6d0fc6ddbe86c90d6f7087Maurice Lam    public void testIsLightThemeString() {
183c3a4e07feacd7e9cff6d0fc6ddbe86c90d6f7087Maurice Lam        assertTrue("isLightTheme should return true for material_light",
184c3a4e07feacd7e9cff6d0fc6ddbe86c90d6f7087Maurice Lam                WizardManagerHelper.isLightTheme("material_light", false));
185c3a4e07feacd7e9cff6d0fc6ddbe86c90d6f7087Maurice Lam        assertFalse("isLightTheme should return false for material",
186c3a4e07feacd7e9cff6d0fc6ddbe86c90d6f7087Maurice Lam                WizardManagerHelper.isLightTheme("material", false));
187c3a4e07feacd7e9cff6d0fc6ddbe86c90d6f7087Maurice Lam        assertTrue("isLightTheme should return true for holo_light",
188c3a4e07feacd7e9cff6d0fc6ddbe86c90d6f7087Maurice Lam                WizardManagerHelper.isLightTheme("holo_light", false));
189c3a4e07feacd7e9cff6d0fc6ddbe86c90d6f7087Maurice Lam        assertFalse("isLightTheme should return false for holo",
190c3a4e07feacd7e9cff6d0fc6ddbe86c90d6f7087Maurice Lam                WizardManagerHelper.isLightTheme("holo", false));
191c3a4e07feacd7e9cff6d0fc6ddbe86c90d6f7087Maurice Lam        assertTrue("isLightTheme should return default value true",
192c3a4e07feacd7e9cff6d0fc6ddbe86c90d6f7087Maurice Lam                WizardManagerHelper.isLightTheme("abracadabra", true));
193c3a4e07feacd7e9cff6d0fc6ddbe86c90d6f7087Maurice Lam        assertFalse("isLightTheme should return default value false",
194c3a4e07feacd7e9cff6d0fc6ddbe86c90d6f7087Maurice Lam                WizardManagerHelper.isLightTheme("abracadabra", false));
195c3a4e07feacd7e9cff6d0fc6ddbe86c90d6f7087Maurice Lam    }
196e0275b558e533bd0665b87e2e78267801c2472cdMaurice Lam
19753f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam    @Test
198e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam    public void testGetThemeResGlifPixelLight() {
199e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam        assertEquals(R.style.SuwThemeGlifPixel_Light,
200e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam                WizardManagerHelper.getThemeRes("glif_pixel_light", 0));
201e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam    }
202e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam
203e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam    @Test
204e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam    public void testGetThemeResGlifPixel() {
205e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam        assertEquals(R.style.SuwThemeGlifPixel,
206e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam                WizardManagerHelper.getThemeRes("glif_pixel", 0));
207e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam    }
208e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam
209e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam    @Test
210e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam    public void testGetThemeResGlifLight() {
211e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam        assertEquals(R.style.SuwThemeGlif_Light,
212e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam                WizardManagerHelper.getThemeRes("glif_light", 0));
213e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam    }
214e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam
215e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam    @Test
216e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam    public void testGetThemeResGlif() {
217e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam        assertEquals(R.style.SuwThemeGlif,
218e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam                WizardManagerHelper.getThemeRes("glif", 0));
219e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam    }
220e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam
221e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam    @Test
222e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam    public void testGetThemeResMaterialLight() {
223e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam        assertEquals(R.style.SuwThemeMaterial_Light,
224e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam                WizardManagerHelper.getThemeRes("material_light", 0));
225e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam    }
226e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam
227e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam    @Test
228e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam    public void testGetThemeResMaterial() {
229e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam        assertEquals(R.style.SuwThemeMaterial,
230e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam                WizardManagerHelper.getThemeRes("material", 0));
231e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam    }
232e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam
233e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam    @Test
234e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam    public void testGetThemeResDefault() {
235e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam        @StyleRes int def = 123;
236e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam        assertEquals(def, WizardManagerHelper.getThemeRes("abracadabra", def));
237e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam    }
238e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam
239e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam    @Test
240e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam    public void testGetThemeResNull() {
241e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam        @StyleRes int def = 123;
242e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam        assertEquals(def, WizardManagerHelper.getThemeRes((String) null, def));
243e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam    }
244e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam
245e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam    @Test
246e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam    public void testGetThemeResFromIntent() {
247e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam        Intent intent = new Intent();
248e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam        intent.putExtra(WizardManagerHelper.EXTRA_THEME, "material");
249e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam        assertEquals(R.style.SuwThemeMaterial, WizardManagerHelper.getThemeRes(intent, 0));
250e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam    }
251e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam
252e749c2c1f2f664d2798ea9c482375f33f5371bf0Maurice Lam    @Test
25353f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam    public void testCopyWizardManagerIntent() {
25453f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam        Bundle wizardBundle = new Bundle();
25553f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam        wizardBundle.putString("foo", "bar");
25653f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam        Intent originalIntent = new Intent()
25753f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam                .putExtra(WizardManagerHelper.EXTRA_THEME, "test_theme")
25853f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam                .putExtra(WizardManagerHelper.EXTRA_WIZARD_BUNDLE, wizardBundle)
25953f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam                .putExtra(WizardManagerHelper.EXTRA_IS_FIRST_RUN, true)
26053f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam                // Script URI and Action ID are kept for backwards compatibility
26153f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam                .putExtra(WizardManagerHelper.EXTRA_SCRIPT_URI, "test_script_uri")
26253f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam                .putExtra(WizardManagerHelper.EXTRA_ACTION_ID, "test_action_id");
26353f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam
26453f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam        Intent intent = new Intent("test.intent.action");
26553f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam        WizardManagerHelper.copyWizardManagerExtras(originalIntent, intent);
26653f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam
26753f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam        assertEquals("Intent action should be kept", "test.intent.action", intent.getAction());
26853f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam        assertEquals("EXTRA_THEME should be copied",
26953f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam                "test_theme", intent.getStringExtra(WizardManagerHelper.EXTRA_THEME));
27053f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam        Bundle copiedWizardBundle =
27153f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam                intent.getParcelableExtra(WizardManagerHelper.EXTRA_WIZARD_BUNDLE);
27253f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam        assertEquals("Wizard bundle should be copied", "bar", copiedWizardBundle.getString("foo"));
27353f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam
27453f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam        assertTrue("EXTRA_IS_FIRST_RUN should be copied",
27553f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam                intent.getBooleanExtra(WizardManagerHelper.EXTRA_IS_FIRST_RUN, false));
27653f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam
27753f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam        // Script URI and Action ID are replaced by Wizard Bundle in M, but are kept for backwards
27853f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam        // compatibility
27953f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam        assertEquals("EXTRA_SCRIPT_URI should be copied",
28053f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam                "test_script_uri", intent.getStringExtra(WizardManagerHelper.EXTRA_SCRIPT_URI));
28153f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam        assertEquals("EXTRA_ACTION_ID should be copied",
28253f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam                "test_action_id", intent.getStringExtra(WizardManagerHelper.EXTRA_ACTION_ID));
28353f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam    }
28453f9de0cc4b08886f1636cde9db67728ae9464f2Maurice Lam
285d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam    @TargetApi(VERSION_CODES.JELLY_BEAN_MR1)
2862614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lam    @Test
287e0275b558e533bd0665b87e2e78267801c2472cdMaurice Lam    public void testIsUserSetupComplete() {
288d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam        Settings.Secure.putInt(application.getContentResolver(), Global.DEVICE_PROVISIONED, 1);
289d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam        Settings.Secure.putInt(application.getContentResolver(), "user_setup_complete", 1);
290d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam        assertTrue(WizardManagerHelper.isUserSetupComplete(application));
291d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam
292d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam        Settings.Secure.putInt(application.getContentResolver(), "user_setup_complete", 0);
293d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam        assertFalse(WizardManagerHelper.isUserSetupComplete(application));
294d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam    }
295d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam
296d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam    @Test
297d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam    @Config(sdk = VERSION_CODES.JELLY_BEAN)
298d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam    public void testIsUserSetupCompleteCompat() {
299d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam        Settings.Secure.putInt(application.getContentResolver(), Secure.DEVICE_PROVISIONED, 1);
300d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam        assertTrue(WizardManagerHelper.isUserSetupComplete(application));
301d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam
302d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam        Settings.Secure.putInt(application.getContentResolver(), Secure.DEVICE_PROVISIONED, 0);
303d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam        assertFalse(WizardManagerHelper.isUserSetupComplete(application));
304e0275b558e533bd0665b87e2e78267801c2472cdMaurice Lam    }
305e0275b558e533bd0665b87e2e78267801c2472cdMaurice Lam
306d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam    @TargetApi(VERSION_CODES.JELLY_BEAN_MR1)
3072614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lam    @Test
308e0275b558e533bd0665b87e2e78267801c2472cdMaurice Lam    public void testIsDeviceProvisioned() {
309d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam        Settings.Secure.putInt(application.getContentResolver(), Global.DEVICE_PROVISIONED, 1);
310d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam        assertTrue(WizardManagerHelper.isDeviceProvisioned(application));
311d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam        Settings.Secure.putInt(application.getContentResolver(), Global.DEVICE_PROVISIONED, 0);
312d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam        assertFalse(WizardManagerHelper.isDeviceProvisioned(application));
313d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam    }
314d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam
315d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam    @Test
316d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam    @Config(sdk = VERSION_CODES.JELLY_BEAN)
317d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam    public void testIsDeviceProvisionedCompat() {
318d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam        Settings.Secure.putInt(application.getContentResolver(), Secure.DEVICE_PROVISIONED, 1);
319d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam        assertTrue(WizardManagerHelper.isDeviceProvisioned(application));
320d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam        Settings.Secure.putInt(application.getContentResolver(), Secure.DEVICE_PROVISIONED, 0);
321d3ffc713be68823409d5dc6d2d44bb21bde5bfd0Maurice Lam        assertFalse(WizardManagerHelper.isDeviceProvisioned(application));
322e0275b558e533bd0665b87e2e78267801c2472cdMaurice Lam    }
323bc60ae4e0ee0116facc9bdc21d6da8a470303ce3Maurice Lam}
324