aboutsummaryrefslogtreecommitdiff
path: root/integration_tests/ctesque/src/sharedTest/java/android/view/ViewConfigurationTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'integration_tests/ctesque/src/sharedTest/java/android/view/ViewConfigurationTest.java')
-rw-r--r--integration_tests/ctesque/src/sharedTest/java/android/view/ViewConfigurationTest.java68
1 files changed, 68 insertions, 0 deletions
diff --git a/integration_tests/ctesque/src/sharedTest/java/android/view/ViewConfigurationTest.java b/integration_tests/ctesque/src/sharedTest/java/android/view/ViewConfigurationTest.java
new file mode 100644
index 000000000..a490b5842
--- /dev/null
+++ b/integration_tests/ctesque/src/sharedTest/java/android/view/ViewConfigurationTest.java
@@ -0,0 +1,68 @@
+package android.view;
+
+import static android.os.Build.VERSION_CODES.O_MR1;
+import static com.google.common.truth.Truth.assertThat;
+
+import android.os.Build;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import java.lang.reflect.Method;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.annotation.Config;
+import org.robolectric.annotation.internal.DoNotInstrument;
+
+/** Tests that {@link android.view.ViewConfiguration} behavior is consistent with real Android. */
+@DoNotInstrument
+@RunWith(AndroidJUnit4.class)
+public final class ViewConfigurationTest {
+
+ private float density;
+ private ViewConfiguration viewConfiguration;
+
+ @Before
+ public void setUp() {
+ density =
+ ApplicationProvider.getApplicationContext().getResources().getDisplayMetrics().density;
+ viewConfiguration = ViewConfiguration.get(ApplicationProvider.getApplicationContext());
+ }
+
+ @Test
+ public void scrollbar_configuration() {
+ int scrollBarSize = ViewConfiguration.getScrollBarSize();
+ int scaledScrollBarSizeDp = pxToDp(viewConfiguration.getScaledScrollBarSize());
+ if (Build.VERSION.SDK_INT >= O_MR1) {
+ assertThat(scrollBarSize).isEqualTo(4);
+ assertThat(scaledScrollBarSizeDp).isEqualTo(4);
+ } else {
+ assertThat(scrollBarSize).isEqualTo(10);
+ assertThat(scaledScrollBarSizeDp).isEqualTo(10);
+ }
+ }
+
+ @Test
+ public void isFadingMarqueeEnabled_returnsFalse() throws Exception {
+ // isFadingMarqueeEnabled is a '@hide' method.
+ boolean isFadingMarqueeEnabled =
+ callMethod(viewConfiguration, "isFadingMarqueeEnabled", Boolean.class);
+ assertThat(isFadingMarqueeEnabled).isFalse();
+ }
+
+ // Emulators have hdpi density by default, so match this in Robolectric for consistency.
+ @Config(qualifiers = "hdpi")
+ @Test
+ public void overfling_distance() {
+ assertThat(density).isEqualTo(1.5f);
+ assertThat(viewConfiguration.getScaledOverflingDistance()).isEqualTo(9);
+ }
+
+ public int pxToDp(int px) {
+ return Math.round(px / density);
+ }
+
+ public <T> T callMethod(Object obj, String methodName, Class<T> returnType) throws Exception {
+ Method method = obj.getClass().getMethod(methodName);
+ return returnType.cast(method.invoke(obj));
+ }
+}