Add CTS to test invalid camera parameters.

bug:3104514
Change-Id: I6e88ab7fa9ca6fc62f34816ef0eecfb381f4ca22
diff --git a/tests/tests/hardware/src/android/hardware/cts/CameraTest.java b/tests/tests/hardware/src/android/hardware/cts/CameraTest.java
index 694dc62..c7032f8 100644
--- a/tests/tests/hardware/src/android/hardware/cts/CameraTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/CameraTest.java
@@ -1810,4 +1810,58 @@
         }
         terminateMessageLooper();
     }
+
+    @UiThreadTest
+    public void testInvalidParameters() throws Exception {
+        int nCameras = Camera.getNumberOfCameras();
+        for (int id = 0; id < nCameras; id++) {
+            Log.v(TAG, "Camera id=" + id);
+            testInvalidParametersByCamera(id);
+        }
+    }
+
+    private void testInvalidParametersByCamera(int cameraId) throws Exception {
+        initializeMessageLooper(cameraId);
+        // Test flash mode.
+        Parameters parameters = mCamera.getParameters();
+        List<String> list = parameters.getSupportedFlashModes();
+        if (list != null && list.size() > 0) {
+            String original = parameters.getFlashMode();
+            parameters.setFlashMode("invalid");
+            try {
+                mCamera.setParameters(parameters);
+                fail("Should throw exception for invalid parameters");
+            } catch (RuntimeException e) {
+                // expected
+            }
+            parameters = mCamera.getParameters();
+            assertEquals(original, parameters.getFlashMode());
+        }
+
+        // Test focus mode.
+        String originalFocus = parameters.getFocusMode();
+        parameters.setFocusMode("invalid");
+        try {
+            mCamera.setParameters(parameters);
+            fail("Should throw exception for invalid parameters");
+        } catch (RuntimeException e) {
+            // expected
+        }
+        parameters = mCamera.getParameters();
+        assertEquals(originalFocus, parameters.getFocusMode());
+
+        // Test preview size.
+        Size originalSize = parameters.getPreviewSize();
+        parameters.setPreviewSize(-1, -1);
+        try {
+            mCamera.setParameters(parameters);
+            fail("Should throw exception for invalid parameters");
+        } catch (RuntimeException e) {
+            // expected
+        }
+        parameters = mCamera.getParameters();
+        assertEquals(originalSize, parameters.getPreviewSize());
+
+        terminateMessageLooper();
+    }
 }