12831318df83781bb5bada256e35726612d225052Maurice Lam/* 22831318df83781bb5bada256e35726612d225052Maurice Lam * Copyright (C) 2017 The Android Open Source Project 32831318df83781bb5bada256e35726612d225052Maurice Lam * 42831318df83781bb5bada256e35726612d225052Maurice Lam * Licensed under the Apache License, Version 2.0 (the "License"); 52831318df83781bb5bada256e35726612d225052Maurice Lam * you may not use this file except in compliance with the License. 62831318df83781bb5bada256e35726612d225052Maurice Lam * You may obtain a copy of the License at 72831318df83781bb5bada256e35726612d225052Maurice Lam * 82831318df83781bb5bada256e35726612d225052Maurice Lam * http://www.apache.org/licenses/LICENSE-2.0 92831318df83781bb5bada256e35726612d225052Maurice Lam * 102831318df83781bb5bada256e35726612d225052Maurice Lam * Unless required by applicable law or agreed to in writing, software 112831318df83781bb5bada256e35726612d225052Maurice Lam * distributed under the License is distributed on an "AS IS" BASIS, 122831318df83781bb5bada256e35726612d225052Maurice Lam * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132831318df83781bb5bada256e35726612d225052Maurice Lam * See the License for the specific language governing permissions and 142831318df83781bb5bada256e35726612d225052Maurice Lam * limitations under the License. 152831318df83781bb5bada256e35726612d225052Maurice Lam */ 162831318df83781bb5bada256e35726612d225052Maurice Lam 172831318df83781bb5bada256e35726612d225052Maurice Lampackage com.android.setupwizardlib.items; 182831318df83781bb5bada256e35726612d225052Maurice Lam 192831318df83781bb5bada256e35726612d225052Maurice Lamimport static org.junit.Assert.assertTrue; 202831318df83781bb5bada256e35726612d225052Maurice Lam 212831318df83781bb5bada256e35726612d225052Maurice Lamimport android.support.test.annotation.UiThreadTest; 222831318df83781bb5bada256e35726612d225052Maurice Lamimport android.support.test.filters.SmallTest; 232831318df83781bb5bada256e35726612d225052Maurice Lamimport android.support.test.rule.UiThreadTestRule; 242831318df83781bb5bada256e35726612d225052Maurice Lamimport android.support.test.runner.AndroidJUnit4; 252831318df83781bb5bada256e35726612d225052Maurice Lamimport android.view.ViewGroup; 262831318df83781bb5bada256e35726612d225052Maurice Lamimport android.widget.Button; 272831318df83781bb5bada256e35726612d225052Maurice Lamimport android.widget.LinearLayout; 282831318df83781bb5bada256e35726612d225052Maurice Lam 292831318df83781bb5bada256e35726612d225052Maurice Lamimport com.android.setupwizardlib.R; 302831318df83781bb5bada256e35726612d225052Maurice Lamimport com.android.setupwizardlib.test.util.DrawingTestHelper; 312831318df83781bb5bada256e35726612d225052Maurice Lam 322831318df83781bb5bada256e35726612d225052Maurice Lamimport org.junit.Before; 332831318df83781bb5bada256e35726612d225052Maurice Lamimport org.junit.Rule; 342831318df83781bb5bada256e35726612d225052Maurice Lamimport org.junit.Test; 352831318df83781bb5bada256e35726612d225052Maurice Lamimport org.junit.runner.RunWith; 362831318df83781bb5bada256e35726612d225052Maurice Lam 372831318df83781bb5bada256e35726612d225052Maurice Lam@SmallTest 382831318df83781bb5bada256e35726612d225052Maurice Lam@RunWith(AndroidJUnit4.class) 392831318df83781bb5bada256e35726612d225052Maurice Lampublic class ButtonItemDrawingTest { 402831318df83781bb5bada256e35726612d225052Maurice Lam 412831318df83781bb5bada256e35726612d225052Maurice Lam private static final int GOOGLE_BLUE = 0xff4285f4; 422831318df83781bb5bada256e35726612d225052Maurice Lam 432831318df83781bb5bada256e35726612d225052Maurice Lam // These tests need to be run on UI thread because button uses ValueAnimator 442831318df83781bb5bada256e35726612d225052Maurice Lam @Rule 452831318df83781bb5bada256e35726612d225052Maurice Lam public UiThreadTestRule mUiThreadTestRule = new UiThreadTestRule(); 462831318df83781bb5bada256e35726612d225052Maurice Lam 472831318df83781bb5bada256e35726612d225052Maurice Lam private ViewGroup mParent; 482831318df83781bb5bada256e35726612d225052Maurice Lam 492831318df83781bb5bada256e35726612d225052Maurice Lam @Before 502831318df83781bb5bada256e35726612d225052Maurice Lam public void setUp() throws Exception { 512831318df83781bb5bada256e35726612d225052Maurice Lam mParent = new LinearLayout( 522831318df83781bb5bada256e35726612d225052Maurice Lam DrawingTestHelper.createCanvasActivity(R.style.SuwThemeGlif_Light)); 532831318df83781bb5bada256e35726612d225052Maurice Lam } 542831318df83781bb5bada256e35726612d225052Maurice Lam 552831318df83781bb5bada256e35726612d225052Maurice Lam @Test 562831318df83781bb5bada256e35726612d225052Maurice Lam @UiThreadTest 572831318df83781bb5bada256e35726612d225052Maurice Lam public void testColoredButtonTheme() { 582831318df83781bb5bada256e35726612d225052Maurice Lam TestButtonItem item = new TestButtonItem(); 592831318df83781bb5bada256e35726612d225052Maurice Lam item.setTheme(R.style.SuwButtonItem_Colored); 602831318df83781bb5bada256e35726612d225052Maurice Lam item.setText("foobar"); 612831318df83781bb5bada256e35726612d225052Maurice Lam 622831318df83781bb5bada256e35726612d225052Maurice Lam final Button button = item.createButton(mParent); 632831318df83781bb5bada256e35726612d225052Maurice Lam 642831318df83781bb5bada256e35726612d225052Maurice Lam DrawingTestHelper drawingTestHelper = new DrawingTestHelper(50, 50); 652831318df83781bb5bada256e35726612d225052Maurice Lam drawingTestHelper.drawView(button); 662831318df83781bb5bada256e35726612d225052Maurice Lam 672831318df83781bb5bada256e35726612d225052Maurice Lam int googleBluePixelCount = 0; 682831318df83781bb5bada256e35726612d225052Maurice Lam for (int pixel : drawingTestHelper.getPixels()) { 692831318df83781bb5bada256e35726612d225052Maurice Lam if (pixel == GOOGLE_BLUE) { 702831318df83781bb5bada256e35726612d225052Maurice Lam googleBluePixelCount++; 712831318df83781bb5bada256e35726612d225052Maurice Lam } 722831318df83781bb5bada256e35726612d225052Maurice Lam } 732831318df83781bb5bada256e35726612d225052Maurice Lam assertTrue("> 10 pixels should be Google blue. Found " + googleBluePixelCount, 742831318df83781bb5bada256e35726612d225052Maurice Lam googleBluePixelCount > 10); 752831318df83781bb5bada256e35726612d225052Maurice Lam } 762831318df83781bb5bada256e35726612d225052Maurice Lam 772831318df83781bb5bada256e35726612d225052Maurice Lam private static class TestButtonItem extends ButtonItem { 782831318df83781bb5bada256e35726612d225052Maurice Lam 792831318df83781bb5bada256e35726612d225052Maurice Lam @Override 802831318df83781bb5bada256e35726612d225052Maurice Lam public Button createButton(ViewGroup parent) { 812831318df83781bb5bada256e35726612d225052Maurice Lam // Make this method public for testing 822831318df83781bb5bada256e35726612d225052Maurice Lam return super.createButton(parent); 832831318df83781bb5bada256e35726612d225052Maurice Lam } 842831318df83781bb5bada256e35726612d225052Maurice Lam } 852831318df83781bb5bada256e35726612d225052Maurice Lam} 86