diff options
Diffstat (limited to 'library/test/robotest/src/com/android/setupwizardlib/util/GlifStyleTest.java')
-rw-r--r-- | library/test/robotest/src/com/android/setupwizardlib/util/GlifStyleTest.java | 118 |
1 files changed, 63 insertions, 55 deletions
diff --git a/library/test/robotest/src/com/android/setupwizardlib/util/GlifStyleTest.java b/library/test/robotest/src/com/android/setupwizardlib/util/GlifStyleTest.java index d8e318d..61b84bb 100644 --- a/library/test/robotest/src/com/android/setupwizardlib/util/GlifStyleTest.java +++ b/library/test/robotest/src/com/android/setupwizardlib/util/GlifStyleTest.java @@ -17,9 +17,6 @@ package com.android.setupwizardlib.util; import static com.google.common.truth.Truth.assertThat; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; import static org.robolectric.RuntimeEnvironment.application; import android.annotation.TargetApi; @@ -28,71 +25,82 @@ import android.content.Context; import android.os.Build.VERSION; import android.os.Build.VERSION_CODES; import android.os.Bundle; +import androidx.annotation.Nullable; +import android.util.AttributeSet; import android.view.ContextThemeWrapper; +import android.view.View; import android.widget.Button; import android.widget.ProgressBar; - -import androidx.annotation.Nullable; - import com.android.setupwizardlib.R; -import com.android.setupwizardlib.robolectric.SuwLibRobolectricTestRunner; - -import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; +import org.robolectric.util.ReflectionHelpers; +import org.robolectric.util.ReflectionHelpers.ClassParameter; -@RunWith(SuwLibRobolectricTestRunner.class) +@RunWith(RobolectricTestRunner.class) @Config(sdk = {Config.OLDEST_SDK, Config.NEWEST_SDK}) public class GlifStyleTest { - private Context mContext; - - @Before - public void setUp() { - mContext = new ContextThemeWrapper(application, R.style.SuwThemeGlif_Light); + @Test + public void testSuwGlifButtonTertiary() { + Button button = + createButton( + new ContextThemeWrapper(application, R.style.SuwThemeGlif_Light), + Robolectric.buildAttributeSet() + .setStyleAttribute("@style/SuwGlifButton.Tertiary") + .build()); + assertThat(button.getBackground()).named("background").isNotNull(); + assertThat(button.getTransformationMethod()).named("transformation method").isNull(); + if (VERSION.SDK_INT < VERSION_CODES.M) { + // Robolectric resolved the wrong theme attribute on versions >= M + // https://github.com/robolectric/robolectric/issues/2940 + assertThat(Integer.toHexString(button.getTextColors().getDefaultColor())) + .isEqualTo("ff4285f4"); } - - @Test - public void testSuwGlifButtonTertiary() { - Button button = new Button( - mContext, - Robolectric.buildAttributeSet() - .setStyleAttribute("@style/SuwGlifButton.Tertiary") - .build()); - assertThat(button.getBackground()).named("background").isNotNull(); - assertThat(button.getTransformationMethod()).named("transformation method").isNull(); - if (VERSION.SDK_INT < VERSION_CODES.M) { - // Robolectric resolved the wrong theme attribute on versions >= M - // https://github.com/robolectric/robolectric/issues/2940 - assertEquals("ff4285f4", Integer.toHexString(button.getTextColors().getDefaultColor())); - } + } + + @TargetApi(VERSION_CODES.LOLLIPOP) + @Config(sdk = Config.NEWEST_SDK) + @Test + public void glifThemeLight_statusBarColorShouldBeTransparent() { + GlifThemeActivity activity = Robolectric.setupActivity(GlifThemeActivity.class); + assertThat(activity.getWindow().getStatusBarColor()).isEqualTo(0x00000000); + } + + @Test + public void glifLoadingScreen_shouldHaveProgressBar() { + GlifThemeActivity activity = Robolectric.setupActivity(GlifThemeActivity.class); + activity.setContentView(R.layout.suw_glif_loading_screen); + + assertThat((View) activity.findViewById(R.id.suw_large_progress_bar)) + .isInstanceOf(ProgressBar.class); + } + + private Button createButton(Context context, AttributeSet attrs) { + Class<? extends Button> buttonClass; + try { + // Use AppCompatButton in builds that have them (i.e. gingerbreadCompat) + // noinspection unchecked + buttonClass = + (Class<? extends Button>) Class.forName("androidx.appcompat.widget.AppCompatButton"); + } catch (ClassNotFoundException e) { + buttonClass = Button.class; } - - @TargetApi(VERSION_CODES.LOLLIPOP) - @Config(sdk = Config.NEWEST_SDK) - @Test - public void glifThemeLight_statusBarColorShouldBeTransparent() { - GlifThemeActivity activity = Robolectric.setupActivity(GlifThemeActivity.class); - assertEquals(0x00000000, activity.getWindow().getStatusBarColor()); - } - - @Test - public void glifLoadingScreen_shouldHaveProgressBar() { - GlifThemeActivity activity = Robolectric.setupActivity(GlifThemeActivity.class); - activity.setContentView(R.layout.suw_glif_loading_screen); - - assertTrue("Progress bar should exist", - activity.findViewById(R.id.suw_large_progress_bar) instanceof ProgressBar); - } - - private static class GlifThemeActivity extends Activity { - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - setTheme(R.style.SuwThemeGlif_Light); - super.onCreate(savedInstanceState); - } + return ReflectionHelpers.callConstructor( + buttonClass, + ClassParameter.from(Context.class, context), + ClassParameter.from(AttributeSet.class, attrs)); + } + + private static class GlifThemeActivity extends Activity { + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + setTheme(R.style.SuwThemeGlif_Light); + super.onCreate(savedInstanceState); } + } } |