Camera2: skip some tests for unsupported devices

Bug: 10360518
Change-Id: I3e03e7d8323646e7c6001e7f8c3fc5334b085956
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/CameraManagerTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraManagerTest.java
index 2968a47f..7091cac 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/CameraManagerTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/CameraManagerTest.java
@@ -75,19 +75,33 @@
         String[] ids = mCameraManager.getCameraIdList();
         if (VERBOSE) Log.v(TAG, "CameraManager ids: " + Arrays.toString(ids));
 
-        // Test: that if the device has a camera, there must be at least one reported id.
-        assertTrue("At least one camera must be detected",
-               ! mPackageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY)
-            || ids.length >= 1);
+        /**
+         * Test: that if there is at least one reported id, then the system must have
+         * the FEATURE_CAMERA_ANY feature.
+         */
+        assertTrue("System camera feature and camera id list don't match",
+                ids.length == 0 ||
+                mPackageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY));
 
         /**
-         * Test: that if the device has both front and rear facing cameras, then there
-         * must be at lest two reported ids.
+         * Test: that if the device has front or rear facing cameras, then there
+         * must be matched system features.
          */
-        assertTrue("At least two cameras must be detected",
-               ! mPackageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA)
-            || ! mPackageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_FRONT)
-            || ids.length >= 2);
+        for (int i = 0; i < ids.length; i++) {
+            CameraCharacteristics props = mCameraManager.getCameraCharacteristics(ids[i]);
+            assertNotNull("Can't get camera characteristics for camera " + ids[i], props);
+            Integer lensFacing = props.get(CameraCharacteristics.LENS_FACING);
+            assertNotNull("Can't get lens facing info", lensFacing);
+            if (lensFacing == CameraCharacteristics.LENS_FACING_FRONT) {
+                assertTrue("System doesn't have front camera feature",
+                        mPackageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_FRONT));
+            } else if (lensFacing == CameraCharacteristics.LENS_FACING_BACK) {
+                assertTrue("System doesn't have back camera feature",
+                        mPackageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA));
+            } else {
+                fail("Unknown camera lens facing " + lensFacing.toString());
+            }
+        }
 
         /**
          * Test: that if there is one camera device, then the system must have some