Add Screen Layout Size and Long Tests
Bug 5278778
Assert that the screen layout size and long value is reported just
like WindowManagerService does.
Change-Id: Id009e329ece44f7ba24bcecc14db626e07747b91
diff --git a/tests/tests/dpi/src/android/dpi/cts/ConfigurationTest.java b/tests/tests/dpi/src/android/dpi/cts/ConfigurationTest.java
index f478de7..316933d 100644
--- a/tests/tests/dpi/src/android/dpi/cts/ConfigurationTest.java
+++ b/tests/tests/dpi/src/android/dpi/cts/ConfigurationTest.java
@@ -17,6 +17,7 @@
package android.dpi.cts;
import android.content.Context;
+import android.content.res.Configuration;
import android.test.AndroidTestCase;
import android.util.DisplayMetrics;
import android.view.Display;
@@ -30,12 +31,6 @@
*/
public class ConfigurationTest extends AndroidTestCase {
- /**
- * Starting in HC MR2, this is in the public SDK and can be directly referenced instead
- * of this constant.
- */
- private static final int DENSITY_TV = 213;
-
public void testScreenConfiguration() {
WindowManager windowManager =
(WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
@@ -63,7 +58,6 @@
allowedDensities.add(DisplayMetrics.DENSITY_MEDIUM);
allowedDensities.add(DisplayMetrics.DENSITY_TV);
allowedDensities.add(DisplayMetrics.DENSITY_HIGH);
- allowedDensities.add(DENSITY_TV);
allowedDensities.add(DisplayMetrics.DENSITY_XHIGH);
assertTrue("DisplayMetrics#densityDpi must be one of the DisplayMetrics.DENSITY_* values: "
+ allowedDensities, allowedDensities.contains(metrics.densityDpi));
@@ -71,5 +65,32 @@
assertEquals(metrics.density,
(float) metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT,
0.5f / DisplayMetrics.DENSITY_DEFAULT);
+
+ Configuration mConfig = mContext.getResources().getConfiguration();
+ int screenLayout = mConfig.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK;
+ int screenLayoutLong = mConfig.screenLayout & Configuration.SCREENLAYOUT_LONG_MASK;
+
+ int longSize = (int) (max / metrics.density);
+ int shortSize = (int) (min / metrics.density);
+
+ // Logic copied from WindowManagerService...
+ if (longSize < 470) {
+ assertEquals(Configuration.SCREENLAYOUT_SIZE_SMALL, screenLayout);
+ assertEquals(Configuration.SCREENLAYOUT_LONG_NO, screenLayoutLong);
+ } else {
+ if (longSize >= 960 && shortSize >= 720) {
+ assertEquals(Configuration.SCREENLAYOUT_SIZE_XLARGE, screenLayout);
+ } else if (longSize >= 640 && shortSize >= 480) {
+ assertEquals(Configuration.SCREENLAYOUT_SIZE_LARGE, screenLayout);
+ } else {
+ assertEquals(Configuration.SCREENLAYOUT_SIZE_NORMAL, screenLayout);
+ }
+
+ if (((longSize * 3) / 5) >= (shortSize - 1)) {
+ assertEquals(Configuration.SCREENLAYOUT_LONG_YES, screenLayoutLong);
+ } else {
+ assertEquals(Configuration.SCREENLAYOUT_LONG_NO, screenLayoutLong);
+ }
+ }
}
}