diff options
Diffstat (limited to 'library/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardLayoutTest.java')
-rw-r--r-- | library/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardLayoutTest.java | 390 |
1 files changed, 196 insertions, 194 deletions
diff --git a/library/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardLayoutTest.java b/library/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardLayoutTest.java index 531d69e..9d2f784 100644 --- a/library/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardLayoutTest.java +++ b/library/test/instrumentation/src/com/android/setupwizardlib/test/SetupWizardLayoutTest.java @@ -27,9 +27,7 @@ import android.content.Context; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.os.Parcelable; -import android.support.test.InstrumentationRegistry; -import android.support.test.filters.SmallTest; -import android.support.test.runner.AndroidJUnit4; +import androidx.annotation.IdRes; import android.util.SparseArray; import android.view.AbsSavedState; import android.view.ContextThemeWrapper; @@ -37,15 +35,14 @@ import android.view.LayoutInflater; import android.view.View; import android.widget.ProgressBar; import android.widget.TextView; - -import androidx.annotation.IdRes; - +import android.support.test.InstrumentationRegistry; +import android.support.test.filters.SmallTest; +import android.support.test.runner.AndroidJUnit4; import com.android.setupwizardlib.SetupWizardLayout; import com.android.setupwizardlib.template.HeaderMixin; import com.android.setupwizardlib.template.NavigationBarMixin; import com.android.setupwizardlib.template.ProgressBarMixin; import com.android.setupwizardlib.view.NavigationBar; - import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -54,191 +51,196 @@ import org.junit.runner.RunWith; @SmallTest public class SetupWizardLayoutTest { - @IdRes - private static final int ID1234 = 1234; - - private Context mContext; - - @Before - public void setUp() throws Exception { - mContext = new ContextThemeWrapper(InstrumentationRegistry.getContext(), - R.style.SuwThemeMaterial_Light); - } - - @Test - public void testDefaultTemplate() { - SetupWizardLayout layout = new SetupWizardLayout(mContext); - assertDefaultTemplateInflated(layout); - } - - @Test - public void testSetHeaderText() { - SetupWizardLayout layout = new SetupWizardLayout(mContext); - TextView title = (TextView) layout.findViewById(R.id.suw_layout_title); - layout.setHeaderText("Abracadabra"); - assertEquals("Header text should be \"Abracadabra\"", "Abracadabra", title.getText()); - } - - @Test - public void testAddView() { - SetupWizardLayout layout = new SetupWizardLayout(mContext); - TextView tv = new TextView(mContext); - tv.setId(R.id.test_view_id); - layout.addView(tv); - assertDefaultTemplateInflated(layout); - View view = layout.findViewById(R.id.test_view_id); - assertSame("The view added should be the same text view", tv, view); - } - - @Test - public void testInflateFromXml() { - LayoutInflater inflater = LayoutInflater.from(mContext); - SetupWizardLayout layout = (SetupWizardLayout) inflater.inflate(R.layout.test_layout, null); - assertDefaultTemplateInflated(layout); - View content = layout.findViewById(R.id.test_content); - assertTrue("@id/test_content should be a TextView", content instanceof TextView); - } - - @Test - public void testCustomTemplate() { - SetupWizardLayout layout = new SetupWizardLayout(mContext, R.layout.test_template); - View templateView = layout.findViewById(R.id.test_template_view); - assertNotNull("@id/test_template_view should exist in template", templateView); - - TextView tv = new TextView(mContext); - tv.setId(R.id.test_view_id); - layout.addView(tv); - - templateView = layout.findViewById(R.id.test_template_view); - assertNotNull("@id/test_template_view should exist in template", templateView); - View contentView = layout.findViewById(R.id.test_view_id); - assertSame("The view added should be the same text view", tv, contentView); - - // The following methods should be no-ops because the custom template doesn't contain the - // corresponding optional views. Just check that they don't throw exceptions. - layout.setHeaderText("Abracadabra"); - layout.setIllustration(new ColorDrawable(Color.MAGENTA)); - layout.setLayoutBackground(new ColorDrawable(Color.RED)); - } - - @Test - public void testGetNavigationBar() { - final SetupWizardLayout layout = new SetupWizardLayout(mContext); - final NavigationBar navigationBar = layout.getNavigationBar(); - assertEquals("Navigation bar should have ID = @id/suw_layout_navigation_bar", - R.id.suw_layout_navigation_bar, navigationBar.getId()); - } - - @Test - public void testGetNavigationBarNull() { - // test_template does not have navigation bar so getNavigationBar() should return null. - final SetupWizardLayout layout = new SetupWizardLayout(mContext, R.layout.test_template); - final NavigationBar navigationBar = layout.getNavigationBar(); - assertNull("getNavigationBar() in test_template should return null", navigationBar); - } - - @Test - public void testShowProgressBar() { - final SetupWizardLayout layout = new SetupWizardLayout(mContext); - layout.showProgressBar(); - assertTrue("Progress bar should be shown", layout.isProgressBarShown()); - final View progressBar = layout.findViewById(R.id.suw_layout_progress); - assertTrue("Progress bar view should be shown", - progressBar instanceof ProgressBar && progressBar.getVisibility() == View.VISIBLE); - } - - @Test - public void testHideProgressBar() { - final SetupWizardLayout layout = new SetupWizardLayout(mContext); - layout.showProgressBar(); - assertTrue("Progress bar should be shown", layout.isProgressBarShown()); - layout.hideProgressBar(); - assertFalse("Progress bar should be hidden", layout.isProgressBarShown()); - final View progressBar = layout.findViewById(R.id.suw_layout_progress); - assertTrue("Progress bar view should exist", - progressBar == null || progressBar.getVisibility() != View.VISIBLE); - } - - @Test - public void testShowProgressBarNotExist() { - // test_template does not have progress bar, so showNavigationBar() should do nothing. - final SetupWizardLayout layout = new SetupWizardLayout(mContext, R.layout.test_template); - layout.showProgressBar(); - assertFalse("Progress bar should not be shown", layout.isProgressBarShown()); - } - - @Test - public void testNonMaterialTheme() { - mContext = new ContextThemeWrapper(InstrumentationRegistry.getContext(), - android.R.style.Theme); - new SetupWizardLayout(mContext); - // Inflating with a non-Material theme should not crash - } - - @Test - public void testOnRestoreFromInstanceState() { - final SetupWizardLayout layout = new SetupWizardLayout(mContext); - layout.setId(ID1234); - - SparseArray<Parcelable> container = new SparseArray<>(); - layout.saveHierarchyState(container); - - final SetupWizardLayout layout2 = new SetupWizardLayout(mContext); - layout2.setId(ID1234); - layout2.restoreHierarchyState(container); - - assertFalse("Progress bar should not be shown", layout2.isProgressBarShown()); - } - - @Test - public void testOnRestoreFromInstanceStateProgressBarShown() { - final SetupWizardLayout layout = new SetupWizardLayout(mContext); - layout.setId(ID1234); - - layout.setProgressBarShown(true); - - SparseArray<Parcelable> container = new SparseArray<>(); - layout.saveHierarchyState(container); - - final SetupWizardLayout layout2 = new SetupWizardLayout(mContext); - layout2.setId(ID1234); - layout2.restoreHierarchyState(container); - - assertTrue("Progress bar should be shown", layout2.isProgressBarShown()); - } - - @Test - public void testOnRestoreFromIncompatibleInstanceState() { - final SetupWizardLayout layout = new SetupWizardLayout(mContext); - layout.setId(ID1234); - - SparseArray<Parcelable> container = new SparseArray<>(); - container.put(1234, AbsSavedState.EMPTY_STATE); - layout.restoreHierarchyState(container); - - // SetupWizardLayout shouldn't crash with incompatible Parcelable - - assertFalse("Progress bar should not be shown", layout.isProgressBarShown()); - } - - @Test - public void testGetMixins() { - final SetupWizardLayout layout = new SetupWizardLayout(mContext); - assertNotNull("SetupWizardLayout should have header mixin", - layout.getMixin(HeaderMixin.class)); - assertNotNull("SetupWizardLayout should have progress bar mixin", - layout.getMixin(ProgressBarMixin.class)); - assertNotNull("SetupWizardLayout should have navigation bar mixin", - layout.getMixin(NavigationBarMixin.class)); - } - - private void assertDefaultTemplateInflated(SetupWizardLayout layout) { - View decorView = layout.findViewById(R.id.suw_layout_decor); - View navbar = layout.findViewById(R.id.suw_layout_navigation_bar); - View title = layout.findViewById(R.id.suw_layout_title); - assertNotNull("@id/suw_layout_decor_view should not be null", decorView); - assertTrue("@id/suw_layout_navigation_bar should be an instance of NavigationBar", - navbar instanceof NavigationBar); - assertNotNull("@id/suw_layout_title should not be null", title); - } + @IdRes private static final int ID1234 = 1234; + + private Context mContext; + + @Before + public void setUp() throws Exception { + mContext = + new ContextThemeWrapper( + InstrumentationRegistry.getContext(), R.style.SuwThemeMaterial_Light); + } + + @Test + public void testDefaultTemplate() { + SetupWizardLayout layout = new SetupWizardLayout(mContext); + assertDefaultTemplateInflated(layout); + } + + @Test + public void testSetHeaderText() { + SetupWizardLayout layout = new SetupWizardLayout(mContext); + TextView title = (TextView) layout.findViewById(R.id.suw_layout_title); + layout.setHeaderText("Abracadabra"); + assertEquals("Header text should be \"Abracadabra\"", "Abracadabra", title.getText()); + } + + @Test + public void testAddView() { + SetupWizardLayout layout = new SetupWizardLayout(mContext); + TextView tv = new TextView(mContext); + tv.setId(R.id.test_view_id); + layout.addView(tv); + assertDefaultTemplateInflated(layout); + View view = layout.findViewById(R.id.test_view_id); + assertSame("The view added should be the same text view", tv, view); + } + + @Test + public void testInflateFromXml() { + LayoutInflater inflater = LayoutInflater.from(mContext); + SetupWizardLayout layout = (SetupWizardLayout) inflater.inflate(R.layout.test_layout, null); + assertDefaultTemplateInflated(layout); + View content = layout.findViewById(R.id.test_content); + assertTrue("@id/test_content should be a TextView", content instanceof TextView); + } + + @Test + public void testCustomTemplate() { + SetupWizardLayout layout = new SetupWizardLayout(mContext, R.layout.test_template); + View templateView = layout.findViewById(R.id.test_template_view); + assertNotNull("@id/test_template_view should exist in template", templateView); + + TextView tv = new TextView(mContext); + tv.setId(R.id.test_view_id); + layout.addView(tv); + + templateView = layout.findViewById(R.id.test_template_view); + assertNotNull("@id/test_template_view should exist in template", templateView); + View contentView = layout.findViewById(R.id.test_view_id); + assertSame("The view added should be the same text view", tv, contentView); + + // The following methods should be no-ops because the custom template doesn't contain the + // corresponding optional views. Just check that they don't throw exceptions. + layout.setHeaderText("Abracadabra"); + layout.setIllustration(new ColorDrawable(Color.MAGENTA)); + layout.setLayoutBackground(new ColorDrawable(Color.RED)); + } + + @Test + public void testGetNavigationBar() { + final SetupWizardLayout layout = new SetupWizardLayout(mContext); + final NavigationBar navigationBar = layout.getNavigationBar(); + assertEquals( + "Navigation bar should have ID = @id/suw_layout_navigation_bar", + R.id.suw_layout_navigation_bar, + navigationBar.getId()); + } + + @Test + public void testGetNavigationBarNull() { + // test_template does not have navigation bar so getNavigationBar() should return null. + final SetupWizardLayout layout = new SetupWizardLayout(mContext, R.layout.test_template); + final NavigationBar navigationBar = layout.getNavigationBar(); + assertNull("getNavigationBar() in test_template should return null", navigationBar); + } + + @Test + public void testShowProgressBar() { + final SetupWizardLayout layout = new SetupWizardLayout(mContext); + layout.showProgressBar(); + assertTrue("Progress bar should be shown", layout.isProgressBarShown()); + final View progressBar = layout.findViewById(R.id.suw_layout_progress); + assertTrue( + "Progress bar view should be shown", + progressBar instanceof ProgressBar && progressBar.getVisibility() == View.VISIBLE); + } + + @Test + public void testHideProgressBar() { + final SetupWizardLayout layout = new SetupWizardLayout(mContext); + layout.showProgressBar(); + assertTrue("Progress bar should be shown", layout.isProgressBarShown()); + layout.hideProgressBar(); + assertFalse("Progress bar should be hidden", layout.isProgressBarShown()); + final View progressBar = layout.findViewById(R.id.suw_layout_progress); + assertTrue( + "Progress bar view should exist", + progressBar == null || progressBar.getVisibility() != View.VISIBLE); + } + + @Test + public void testShowProgressBarNotExist() { + // test_template does not have progress bar, so showNavigationBar() should do nothing. + final SetupWizardLayout layout = new SetupWizardLayout(mContext, R.layout.test_template); + layout.showProgressBar(); + assertFalse("Progress bar should not be shown", layout.isProgressBarShown()); + } + + @Test + public void testNonMaterialTheme() { + mContext = new ContextThemeWrapper(InstrumentationRegistry.getContext(), android.R.style.Theme); + new SetupWizardLayout(mContext); + // Inflating with a non-Material theme should not crash + } + + @Test + public void testOnRestoreFromInstanceState() { + final SetupWizardLayout layout = new SetupWizardLayout(mContext); + layout.setId(ID1234); + + SparseArray<Parcelable> container = new SparseArray<>(); + layout.saveHierarchyState(container); + + final SetupWizardLayout layout2 = new SetupWizardLayout(mContext); + layout2.setId(ID1234); + layout2.restoreHierarchyState(container); + + assertFalse("Progress bar should not be shown", layout2.isProgressBarShown()); + } + + @Test + public void testOnRestoreFromInstanceStateProgressBarShown() { + final SetupWizardLayout layout = new SetupWizardLayout(mContext); + layout.setId(ID1234); + + layout.setProgressBarShown(true); + + SparseArray<Parcelable> container = new SparseArray<>(); + layout.saveHierarchyState(container); + + final SetupWizardLayout layout2 = new SetupWizardLayout(mContext); + layout2.setId(ID1234); + layout2.restoreHierarchyState(container); + + assertTrue("Progress bar should be shown", layout2.isProgressBarShown()); + } + + @Test + public void testOnRestoreFromIncompatibleInstanceState() { + final SetupWizardLayout layout = new SetupWizardLayout(mContext); + layout.setId(ID1234); + + SparseArray<Parcelable> container = new SparseArray<>(); + container.put(1234, AbsSavedState.EMPTY_STATE); + layout.restoreHierarchyState(container); + + // SetupWizardLayout shouldn't crash with incompatible Parcelable + + assertFalse("Progress bar should not be shown", layout.isProgressBarShown()); + } + + @Test + public void testGetMixins() { + final SetupWizardLayout layout = new SetupWizardLayout(mContext); + assertNotNull("SetupWizardLayout should have header mixin", layout.getMixin(HeaderMixin.class)); + assertNotNull( + "SetupWizardLayout should have progress bar mixin", + layout.getMixin(ProgressBarMixin.class)); + assertNotNull( + "SetupWizardLayout should have navigation bar mixin", + layout.getMixin(NavigationBarMixin.class)); + } + + private void assertDefaultTemplateInflated(SetupWizardLayout layout) { + View decorView = layout.findViewById(R.id.suw_layout_decor); + View navbar = layout.findViewById(R.id.suw_layout_navigation_bar); + View title = layout.findViewById(R.id.suw_layout_title); + assertNotNull("@id/suw_layout_decor_view should not be null", decorView); + assertTrue( + "@id/suw_layout_navigation_bar should be an instance of NavigationBar", + navbar instanceof NavigationBar); + assertNotNull("@id/suw_layout_title should not be null", title); + } } |