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