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