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