17514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam/*
27514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * Copyright (C) 2017 The Android Open Source Project
37514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam *
47514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * Licensed under the Apache License, Version 2.0 (the "License");
57514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * you may not use this file except in compliance with the License.
67514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * You may obtain a copy of the License at
77514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam *
87514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam *      http://www.apache.org/licenses/LICENSE-2.0
97514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam *
107514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * Unless required by applicable law or agreed to in writing, software
117514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * distributed under the License is distributed on an "AS IS" BASIS,
127514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * See the License for the specific language governing permissions and
147514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * limitations under the License.
157514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam */
167514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
177514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lampackage com.android.setupwizardlib.template;
187514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
197514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport static org.junit.Assert.assertEquals;
207514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport static org.junit.Assert.assertFalse;
217514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport static org.junit.Assert.assertNotEquals;
227514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport static org.junit.Assert.assertNotNull;
237514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport static org.junit.Assert.assertNull;
247514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport static org.junit.Assert.assertTrue;
257514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
26339cbc0f38d81adda4d2f9bf44a5514e2f027031Maurice Lamimport android.content.Context;
277514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport android.content.res.ColorStateList;
28339cbc0f38d81adda4d2f9bf44a5514e2f027031Maurice Lamimport android.graphics.Canvas;
297514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport android.graphics.Color;
307514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport android.os.Build.VERSION;
317514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport android.os.Build.VERSION_CODES;
327514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport android.support.test.InstrumentationRegistry;
337514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport android.support.test.filters.SmallTest;
347514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport android.support.test.runner.AndroidJUnit4;
35339cbc0f38d81adda4d2f9bf44a5514e2f027031Maurice Lamimport android.view.ContextThemeWrapper;
367514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport android.view.View;
377514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport android.widget.ProgressBar;
387514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
397514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport com.android.setupwizardlib.TemplateLayout;
407514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport com.android.setupwizardlib.test.R;
417514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
427514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport org.junit.Before;
437514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport org.junit.Test;
447514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport org.junit.runner.RunWith;
457514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
467514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam@RunWith(AndroidJUnit4.class)
477514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam@SmallTest
487514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lampublic class ProgressBarMixinTest {
497514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
507514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    private TemplateLayout mTemplateLayout;
517514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
527514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    @Before
537514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    public void setUp() {
54339cbc0f38d81adda4d2f9bf44a5514e2f027031Maurice Lam        Context context = new ContextThemeWrapper(InstrumentationRegistry.getContext(),
55339cbc0f38d81adda4d2f9bf44a5514e2f027031Maurice Lam                R.style.SuwThemeMaterial_Light);
56339cbc0f38d81adda4d2f9bf44a5514e2f027031Maurice Lam        mTemplateLayout = new TemplateLayout(
57339cbc0f38d81adda4d2f9bf44a5514e2f027031Maurice Lam                context,
587514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam                R.layout.test_progress_bar_template, R.id.suw_layout_content);
597514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    }
607514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
617514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    @Test
627514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    public void testSetShown() {
637514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        ProgressBarMixin mixin = new ProgressBarMixin(mTemplateLayout);
647514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        mixin.setShown(true);
657514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
667514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        ProgressBar progressBar = (ProgressBar) mTemplateLayout.findViewById(
677514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam                R.id.suw_layout_progress);
687514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        assertNotNull("Progress bar should be available after setting to shown", progressBar);
697514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        assertEquals(View.VISIBLE, progressBar.getVisibility());
707514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    }
717514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
727514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    @Test
737514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    public void testNotShown() {
747514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        ProgressBarMixin mixin = new ProgressBarMixin(mTemplateLayout);
757514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        mixin.setShown(true);
767514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        mixin.setShown(false);
777514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
787514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        ProgressBar progressBar = (ProgressBar) mTemplateLayout.findViewById(
797514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam                R.id.suw_layout_progress);
807514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        assertNotEquals(View.VISIBLE, progressBar.getVisibility());
817514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    }
827514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
837514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    @Test
847514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    public void testIsShown() {
857514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        ProgressBarMixin mixin = new ProgressBarMixin(mTemplateLayout);
867514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
877514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        mixin.setShown(true);
887514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        assertTrue(mixin.isShown());
897514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
907514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        mixin.setShown(false);
917514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        assertFalse(mixin.isShown());
927514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    }
937514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
947514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    @Test
957514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    public void testPeekProgressBar() {
967514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        ProgressBarMixin mixin = new ProgressBarMixin(mTemplateLayout);
977514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        assertNull("PeekProgressBar should return null when stub not inflated yet",
987514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam                mixin.peekProgressBar());
997514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
1007514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        mixin.setShown(true);
1017514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        assertNotNull("PeekProgressBar should be available after setting to shown",
1027514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam                mixin.peekProgressBar());
1037514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    }
1047514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
1057514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    @Test
1067514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    public void testSetColorBeforeSetShown() {
1077514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        ProgressBarMixin mixin = new ProgressBarMixin(mTemplateLayout);
1087514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        mixin.setColor(ColorStateList.valueOf(Color.MAGENTA));
1097514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
1107514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        mixin.setShown(true);
1117514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
1127514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
1137514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam            ProgressBar progressBar = (ProgressBar) mTemplateLayout.findViewById(
1147514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam                    R.id.suw_layout_progress);
1157514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam            assertEquals(ColorStateList.valueOf(Color.MAGENTA),
1167514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam                    progressBar.getIndeterminateTintList());
1177514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam            assertEquals(ColorStateList.valueOf(Color.MAGENTA),
1187514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam                    progressBar.getProgressBackgroundTintList());
1197514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        }
1207514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        // this method is a no-op on versions < lollipop. Just check that it doesn't crash.
1217514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    }
1227514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
1237514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    @Test
1247514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    public void testSetColorAfterSetShown() {
1257514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        ProgressBarMixin mixin = new ProgressBarMixin(mTemplateLayout);
1267514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        mixin.setShown(true);
1277514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
1287514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        mixin.setColor(ColorStateList.valueOf(Color.YELLOW));
1297514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
1307514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
1317514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam            ProgressBar progressBar = (ProgressBar) mTemplateLayout.findViewById(
1327514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam                    R.id.suw_layout_progress);
1337514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam            assertEquals(ColorStateList.valueOf(Color.YELLOW),
1347514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam                    progressBar.getIndeterminateTintList());
1357514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam            assertEquals(ColorStateList.valueOf(Color.YELLOW),
1367514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam                    progressBar.getProgressBackgroundTintList());
1377514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        }
1387514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        // this method is a no-op on versions < lollipop. Just check that it doesn't crash.
1397514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    }
140339cbc0f38d81adda4d2f9bf44a5514e2f027031Maurice Lam
141339cbc0f38d81adda4d2f9bf44a5514e2f027031Maurice Lam    @Test
142339cbc0f38d81adda4d2f9bf44a5514e2f027031Maurice Lam    public void testDeterminateProgressBarNullTint() {
143339cbc0f38d81adda4d2f9bf44a5514e2f027031Maurice Lam        ProgressBarMixin mixin = new ProgressBarMixin(mTemplateLayout);
144339cbc0f38d81adda4d2f9bf44a5514e2f027031Maurice Lam        mixin.setShown(true);
145339cbc0f38d81adda4d2f9bf44a5514e2f027031Maurice Lam        mixin.peekProgressBar().setIndeterminate(false);
146339cbc0f38d81adda4d2f9bf44a5514e2f027031Maurice Lam
147339cbc0f38d81adda4d2f9bf44a5514e2f027031Maurice Lam        mixin.setColor(null);
148339cbc0f38d81adda4d2f9bf44a5514e2f027031Maurice Lam
149339cbc0f38d81adda4d2f9bf44a5514e2f027031Maurice Lam        if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
150339cbc0f38d81adda4d2f9bf44a5514e2f027031Maurice Lam            ProgressBar progressBar = (ProgressBar) mTemplateLayout.findViewById(
151339cbc0f38d81adda4d2f9bf44a5514e2f027031Maurice Lam                    R.id.suw_layout_progress);
152339cbc0f38d81adda4d2f9bf44a5514e2f027031Maurice Lam            assertEquals(null, progressBar.getProgressBackgroundTintList());
153339cbc0f38d81adda4d2f9bf44a5514e2f027031Maurice Lam            progressBar.draw(new Canvas());
154339cbc0f38d81adda4d2f9bf44a5514e2f027031Maurice Lam        }
155339cbc0f38d81adda4d2f9bf44a5514e2f027031Maurice Lam        // setColor is a no-op on versions < lollipop. Just check that it doesn't crash.
156339cbc0f38d81adda4d2f9bf44a5514e2f027031Maurice Lam    }
1577514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam}
158