CameraITS: update ev compensation tests

1. basic test: always test [-2 ev, -1 ev, 0 ev, 1 ev, 2 ev]
2. advanced test: always test [-Max EV, ..., Max EV]
3. Allow images to be saturated for positive ev level

Change-Id: I138194c09f397ea1f1e96a1ef8ef8cf71ce0ed2c
diff --git a/apps/CameraITS/tests/scene1/test_ev_compensation_advanced.py b/apps/CameraITS/tests/scene1/test_ev_compensation_advanced.py
index 2c311f8..9b43a74 100644
--- a/apps/CameraITS/tests/scene1/test_ev_compensation_advanced.py
+++ b/apps/CameraITS/tests/scene1/test_ev_compensation_advanced.py
@@ -36,7 +36,13 @@
                              its.caps.per_frame_control(props) and
                              its.caps.ev_compensation(props))
 
-        evs = range(-4,5)
+        ev_compensation_range = props['android.control.aeCompensationRange']
+        range_min = ev_compensation_range[0]
+        range_max = ev_compensation_range[1]
+        ev_per_step = its.objects.rational_to_float(
+                props['android.control.aeCompensationStep'])
+        steps_per_ev = int(1.0 / ev_per_step)
+        evs = range(range_min, range_max + 1, steps_per_ev)
         lumas = []
         for ev in evs:
             # Re-converge 3A, and lock AE once converged. skip AF trigger as
@@ -59,10 +65,8 @@
             tile = its.image.get_image_patch(y, 0.45,0.45,0.1,0.1)
             lumas.append(its.image.compute_image_means(tile)[0])
 
-        ev_step_size_in_stops = its.objects.rational_to_float(
-                props['android.control.aeCompensationStep'])
-        luma_increase_per_step = pow(2, ev_step_size_in_stops)
-        print "ev_step_size_in_stops", ev_step_size_in_stops
+        luma_increase_per_step = pow(2, ev_per_step)
+        print "ev_step_size_in_stops", ev_per_step
         imid = len(lumas) / 2
         expected_lumas = [lumas[imid] / pow(luma_increase_per_step, i)
                           for i in range(imid , 0, -1)]  + \
diff --git a/apps/CameraITS/tests/scene1/test_ev_compensation_basic.py b/apps/CameraITS/tests/scene1/test_ev_compensation_basic.py
index 30f1df2..d09f2fd 100644
--- a/apps/CameraITS/tests/scene1/test_ev_compensation_basic.py
+++ b/apps/CameraITS/tests/scene1/test_ev_compensation_basic.py
@@ -31,7 +31,10 @@
         props = cam.get_camera_properties()
         its.caps.skip_unless(its.caps.ev_compensation(props))
 
-        evs = range(-4,5)
+        ev_per_step = its.objects.rational_to_float(
+                props['android.control.aeCompensationStep'])
+        steps_per_ev = int(1.0 / ev_per_step)
+        evs = range(-2 * steps_per_ev, 2 * steps_per_ev + 1, steps_per_ev)
         lumas = []
         for ev in evs:
             # Re-converge 3A, and lock AE once converged. skip AF trigger as
@@ -51,6 +54,11 @@
         pylab.plot(evs, lumas, 'r')
         matplotlib.pyplot.savefig("%s_plot_means.png" % (NAME))
 
+        # trim trailing 1.0s (for saturated image)
+        while lumas and lumas[-1] == 1.0:
+            lumas.pop(-1)
+        # Only allow positive EVs to give saturated image
+        assert(len(lumas) > 2)
         luma_diffs = numpy.diff(lumas)
         min_luma_diffs = min(luma_diffs)
         print "Min of the luma value difference between adjacent ev comp: ", \