1e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam/*
2e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam * Copyright (C) 2017 The Android Open Source Project
3e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam *
4e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam * Licensed under the Apache License, Version 2.0 (the "License");
5e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam * you may not use this file except in compliance with the License.
6e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam * You may obtain a copy of the License at
7e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam *
8e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam *      http://www.apache.org/licenses/LICENSE-2.0
9e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam *
10e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam * Unless required by applicable law or agreed to in writing, software
11e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam * distributed under the License is distributed on an "AS IS" BASIS,
12e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam * See the License for the specific language governing permissions and
14e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam * limitations under the License.
15e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam */
16e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam
17e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lampackage com.android.setupwizardlib.util;
18e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam
19e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lamimport static org.junit.Assert.assertEquals;
20e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam
21e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lamimport android.content.Context;
22e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lamimport android.content.res.TypedArray;
23e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lamimport android.support.test.InstrumentationRegistry;
24e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lamimport android.support.test.filters.SmallTest;
25e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lamimport android.support.test.runner.AndroidJUnit4;
26e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lamimport android.view.ContextThemeWrapper;
27e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam
28e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lamimport com.android.setupwizardlib.test.R;
29e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam
30e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lamimport org.junit.Before;
31e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lamimport org.junit.Test;
32e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lamimport org.junit.runner.RunWith;
33e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam
34e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam@RunWith(AndroidJUnit4.class)
35e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam@SmallTest
36e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lampublic class FallbackThemeWrapperTest {
37e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam
38e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam    private FallbackThemeWrapper mThemedContext;
39e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam
40e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam    @Before
41e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam    public void setUp() {
42e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam        Context baseContext = new ContextThemeWrapper(
43e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam                InstrumentationRegistry.getContext(),
44e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam                R.style.TestBaseTheme);
45e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam        mThemedContext = new FallbackThemeWrapper(baseContext, R.style.TestFallbackTheme);
46e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam    }
47e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam
48e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam    @Test
49e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam    public void testThemeValueOnlyInBase() {
50e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam        final TypedArray a =
51e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam                mThemedContext.obtainStyledAttributes(new int[] {android.R.attr.background});
52e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam        assertEquals(0xffff0000, a.getColor(0, 0));
53e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam        a.recycle();
54e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam    }
55e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam
56e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam    @Test
57e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam    public void testThemeValueOnlyInFallback() {
58e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam        final TypedArray a =
59e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam                mThemedContext.obtainStyledAttributes(new int[] {android.R.attr.foreground});
60e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam        assertEquals(0xff0000ff, a.getColor(0, 0));
61e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam        a.recycle();
62e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam    }
63e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam
64e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam    @Test
65e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam    public void testThemeValueInBoth() {
66e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam        final TypedArray a =
67e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam                mThemedContext.obtainStyledAttributes(new int[] {android.R.attr.theme});
68e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam        assertEquals(R.style.TestBaseTheme, a.getResourceId(0, 0));
69e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam        a.recycle();
70e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam    }
71e2a8d27c2a43cf0b48b80e5b05f893222c541e04Maurice Lam}
72