Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 package org.chromium.content.browser; | |
| 6 | |
| 7 import org.chromium.base.ActivityStatus; | |
| 8 import org.chromium.base.test.util.Feature; | |
| 9 import org.chromium.content.app.LibraryLoader; | |
| 10 import org.chromium.content.common.CommandLine; | |
| 11 import org.chromium.content.common.ProcessInitException; | |
| 12 import org.chromium.content_shell_apk.ContentShellApplication; | |
| 13 | |
| 14 import android.test.AndroidTestCase; | |
| 15 import android.test.suitebuilder.annotation.SmallTest; | |
| 16 import android.test.UiThreadTest; | |
| 17 import android.hardware.Sensor; | |
| 18 import android.hardware.SensorEvent; | |
| 19 import android.hardware.SensorEventListener; | |
| 20 import android.hardware.SensorManager; | |
| 21 import android.os.Handler; | |
| 22 | |
| 23 import com.google.common.collect.Sets; | |
| 24 | |
| 25 import java.util.ArrayList; | |
| 26 import java.util.List; | |
| 27 import java.util.Set; | |
| 28 | |
| 29 | |
| 30 /** | |
| 31 * Test suite for DeviceMotionAndOrientation. | |
| 32 */ | |
| 33 public class DeviceMotionAndOrientationTest extends AndroidTestCase { | |
| 34 | |
| 35 private DeviceMotionAndOrientationForTests mDeviceMotionAndOrientation; | |
| 36 private MockSensorManager mMockSensorManager; | |
| 37 | |
| 38 @Override | |
| 39 public void setUp() throws Exception { | |
| 40 super.setUp(); | |
| 41 mMockSensorManager = new MockSensorManager(); | |
| 42 mDeviceMotionAndOrientation = DeviceMotionAndOrientationForTests.getInst ance(); | |
| 43 mDeviceMotionAndOrientation.setSensorManagerProxy(mMockSensorManager); | |
| 44 } | |
| 45 | |
| 46 @SmallTest | |
| 47 public void testRegisterSensors_DeviceMotion() { | |
|
bulach
2013/03/19 18:51:06
ahn, I see the need for the suffix... however, in
timvolodine
2013/03/19 19:35:04
Done.
| |
| 48 boolean start = mDeviceMotionAndOrientation.start(0, | |
| 49 DeviceMotionAndOrientation.DEVICE_MOTION, 100); | |
| 50 | |
| 51 assertTrue(start); | |
| 52 assertTrue("should contain all motion sensors", | |
| 53 mDeviceMotionAndOrientation.mActiveSensors.containsAll( | |
| 54 DeviceMotionAndOrientation.DEVICE_MOTION_SENSORS)); | |
| 55 assertTrue(mDeviceMotionAndOrientation.mDeviceMotionIsActive); | |
| 56 assertFalse(mDeviceMotionAndOrientation.mDeviceOrientationIsActive); | |
| 57 | |
| 58 assertEquals(DeviceMotionAndOrientation.DEVICE_MOTION_SENSORS.size(), | |
| 59 mMockSensorManager.numRegistered); | |
| 60 assertEquals(0, mMockSensorManager.numUnRegistered); | |
| 61 } | |
| 62 | |
| 63 @SmallTest | |
| 64 public void testRegisterSensors_DeviceOrientation() { | |
| 65 boolean start = mDeviceMotionAndOrientation.start(0, | |
| 66 DeviceMotionAndOrientation.DEVICE_ORIENTATION, 100); | |
| 67 | |
| 68 assertTrue(start); | |
| 69 assertTrue("should contain all orientation sensors", | |
| 70 mDeviceMotionAndOrientation.mActiveSensors.containsAll( | |
| 71 DeviceMotionAndOrientation.DEVICE_ORIENTATION_SENSORS)); | |
| 72 assertFalse(mDeviceMotionAndOrientation.mDeviceMotionIsActive); | |
| 73 assertTrue(mDeviceMotionAndOrientation.mDeviceOrientationIsActive); | |
| 74 | |
| 75 assertEquals(DeviceMotionAndOrientation.DEVICE_ORIENTATION_SENSORS.size( ), | |
| 76 mMockSensorManager.numRegistered); | |
| 77 assertEquals(0, mMockSensorManager.numUnRegistered); | |
| 78 } | |
| 79 | |
| 80 @SmallTest | |
| 81 public void testRegisterSensors_DeviceMotionAndOrientation() { | |
| 82 boolean startOrientation = mDeviceMotionAndOrientation.start(0, | |
| 83 DeviceMotionAndOrientation.DEVICE_ORIENTATION, 100); | |
| 84 boolean startMotion = mDeviceMotionAndOrientation.start(0, | |
| 85 DeviceMotionAndOrientation.DEVICE_MOTION, 100); | |
| 86 | |
| 87 assertTrue(startOrientation); | |
| 88 assertTrue(startMotion); | |
| 89 assertTrue("should contain all motion sensors", | |
| 90 mDeviceMotionAndOrientation.mActiveSensors.containsAll( | |
| 91 DeviceMotionAndOrientation.DEVICE_MOTION_SENSORS)); | |
| 92 assertTrue("should contain all orientation sensors", | |
| 93 mDeviceMotionAndOrientation.mActiveSensors.containsAll( | |
| 94 DeviceMotionAndOrientation.DEVICE_ORIENTATION_SENSORS)); | |
| 95 | |
| 96 Set<Integer> union = Sets.newHashSet(DeviceMotionAndOrientation.DEVICE_O RIENTATION_SENSORS); | |
| 97 union.addAll(DeviceMotionAndOrientation.DEVICE_MOTION_SENSORS); | |
| 98 | |
| 99 assertEquals(union.size(), mDeviceMotionAndOrientation.mActiveSensors.si ze()); | |
| 100 assertTrue(mDeviceMotionAndOrientation.mDeviceMotionIsActive); | |
| 101 assertTrue(mDeviceMotionAndOrientation.mDeviceOrientationIsActive); | |
| 102 assertEquals(union.size(), mMockSensorManager.numRegistered); | |
| 103 assertEquals(0, mMockSensorManager.numUnRegistered); | |
| 104 } | |
| 105 | |
| 106 @SmallTest | |
| 107 public void testUnregisterSensors_DeviceMotion() { | |
| 108 mDeviceMotionAndOrientation.start(0, DeviceMotionAndOrientation.DEVICE_M OTION, 100); | |
| 109 mDeviceMotionAndOrientation.stop(DeviceMotionAndOrientation.DEVICE_MOTIO N); | |
| 110 | |
| 111 assertTrue("should contain no sensors", | |
| 112 mDeviceMotionAndOrientation.mActiveSensors.isEmpty()); | |
| 113 assertFalse(mDeviceMotionAndOrientation.mDeviceMotionIsActive); | |
| 114 assertFalse(mDeviceMotionAndOrientation.mDeviceOrientationIsActive); | |
| 115 assertEquals(DeviceMotionAndOrientation.DEVICE_MOTION_SENSORS.size(), | |
| 116 mMockSensorManager.numUnRegistered); | |
| 117 } | |
| 118 | |
| 119 @SmallTest | |
| 120 public void testUnregisterSensors_DeviceOrientation() { | |
| 121 mDeviceMotionAndOrientation.start(0, DeviceMotionAndOrientation.DEVICE_O RIENTATION, 100); | |
| 122 mDeviceMotionAndOrientation.stop(DeviceMotionAndOrientation.DEVICE_ORIEN TATION); | |
| 123 | |
| 124 assertTrue("should contain no sensors", | |
| 125 mDeviceMotionAndOrientation.mActiveSensors.isEmpty()); | |
| 126 assertFalse(mDeviceMotionAndOrientation.mDeviceMotionIsActive); | |
| 127 assertFalse(mDeviceMotionAndOrientation.mDeviceOrientationIsActive); | |
| 128 assertEquals(DeviceMotionAndOrientation.DEVICE_ORIENTATION_SENSORS.size( ), | |
| 129 mMockSensorManager.numUnRegistered); | |
| 130 } | |
| 131 | |
| 132 @SmallTest | |
| 133 public void testUnRegisterSensors_DeviceMotionAndOrientation() { | |
| 134 mDeviceMotionAndOrientation.start(0, DeviceMotionAndOrientation.DEVICE_O RIENTATION, 100); | |
| 135 mDeviceMotionAndOrientation.start(0, DeviceMotionAndOrientation.DEVICE_M OTION, 100); | |
| 136 mDeviceMotionAndOrientation.stop(DeviceMotionAndOrientation.DEVICE_MOTIO N); | |
| 137 | |
| 138 assertTrue("should contain all orientation sensors", | |
| 139 mDeviceMotionAndOrientation.mActiveSensors.containsAll( | |
| 140 DeviceMotionAndOrientation.DEVICE_ORIENTATION_SENSORS)); | |
| 141 | |
| 142 Set<Integer> diff = Sets.newHashSet(DeviceMotionAndOrientation.DEVICE_MO TION_SENSORS); | |
| 143 diff.removeAll(DeviceMotionAndOrientation.DEVICE_ORIENTATION_SENSORS); | |
| 144 | |
| 145 assertEquals(diff.size(), mMockSensorManager.numUnRegistered); | |
| 146 | |
| 147 mDeviceMotionAndOrientation.stop(DeviceMotionAndOrientation.DEVICE_ORIEN TATION); | |
| 148 | |
| 149 assertTrue("should contain no sensors", | |
| 150 mDeviceMotionAndOrientation.mActiveSensors.isEmpty()); | |
| 151 assertEquals(diff.size() + DeviceMotionAndOrientation.DEVICE_ORIENTATION _SENSORS.size(), | |
| 152 mMockSensorManager.numUnRegistered); | |
| 153 } | |
| 154 | |
| 155 @SmallTest | |
| 156 public void testSensorChanged_gotAccelerationAndOrientation() { | |
| 157 boolean startOrientation = mDeviceMotionAndOrientation.start(0, | |
| 158 DeviceMotionAndOrientation.DEVICE_ORIENTATION, 100); | |
| 159 boolean startMotion = mDeviceMotionAndOrientation.start(0, | |
| 160 DeviceMotionAndOrientation.DEVICE_MOTION, 100); | |
| 161 | |
| 162 assertTrue(startOrientation); | |
| 163 assertTrue(startMotion); | |
| 164 assertTrue(mDeviceMotionAndOrientation.mDeviceMotionIsActive); | |
| 165 assertTrue(mDeviceMotionAndOrientation.mDeviceOrientationIsActive); | |
| 166 | |
| 167 float[] values = {0.0f, 0.0f, 9.0f}; | |
| 168 float[] values2 = {10.0f, 10.0f, 10.0f}; | |
| 169 mDeviceMotionAndOrientation.sensorChanged(Sensor.TYPE_ACCELEROMETER, val ues); | |
| 170 mDeviceMotionAndOrientation.sensorChanged(Sensor.TYPE_MAGNETIC_FIELD, va lues2); | |
| 171 mDeviceMotionAndOrientation.verifyCalls("gotAccelerationIncludingGravity "+"gotOrientation"); | |
|
bulach
2013/03/19 18:51:06
nit: spaces between +
timvolodine
2013/03/19 19:35:04
Done.
| |
| 172 mDeviceMotionAndOrientation.verifyValuesEpsilon(45, 0, 0); | |
| 173 } | |
| 174 | |
| 175 @SmallTest | |
| 176 public void testSensorChanged_gotAccelerationIncludingGravity() { | |
| 177 mDeviceMotionAndOrientation.start(0, DeviceMotionAndOrientation.DEVICE_M OTION, 100); | |
| 178 | |
| 179 float[] values = {1, 2, 3}; | |
| 180 mDeviceMotionAndOrientation.sensorChanged(Sensor.TYPE_ACCELEROMETER, val ues); | |
| 181 mDeviceMotionAndOrientation.verifyCalls("gotAccelerationIncludingGravity "); | |
| 182 mDeviceMotionAndOrientation.verifyValues(1, 2, 3); | |
| 183 } | |
| 184 | |
| 185 @SmallTest | |
| 186 public void testSensorChanged_gotAcceleration() { | |
| 187 mDeviceMotionAndOrientation.start(0, DeviceMotionAndOrientation.DEVICE_M OTION, 100); | |
| 188 | |
| 189 float[] values = {1, 2, 3}; | |
| 190 mDeviceMotionAndOrientation.sensorChanged(Sensor.TYPE_LINEAR_ACCELERATIO N, values); | |
| 191 mDeviceMotionAndOrientation.verifyCalls("gotAcceleration"); | |
| 192 mDeviceMotionAndOrientation.verifyValues(1, 2, 3); | |
| 193 } | |
| 194 | |
| 195 @SmallTest | |
| 196 public void testSensorChanged_gotRotationRate() { | |
| 197 mDeviceMotionAndOrientation.start(0, DeviceMotionAndOrientation.DEVICE_M OTION, 100); | |
| 198 | |
| 199 float[] values = {1, 2, 3}; | |
| 200 mDeviceMotionAndOrientation.sensorChanged(Sensor.TYPE_GYROSCOPE, values) ; | |
| 201 mDeviceMotionAndOrientation.verifyCalls("gotRotationRate"); | |
| 202 mDeviceMotionAndOrientation.verifyValues(1, 2, 3); | |
| 203 } | |
| 204 | |
| 205 @SmallTest | |
| 206 public void testSensorChanged_magneticField() { | |
| 207 mDeviceMotionAndOrientation.start(0, DeviceMotionAndOrientation.DEVICE_O RIENTATION, 100); | |
| 208 | |
| 209 float[] values = {1, 2, 3}; | |
| 210 mDeviceMotionAndOrientation.sensorChanged(Sensor.TYPE_MAGNETIC_FIELD, va lues); | |
| 211 mDeviceMotionAndOrientation.verifyCalls(""); | |
| 212 } | |
| 213 | |
| 214 static class DeviceMotionAndOrientationForTests extends DeviceMotionAndOrien tation { | |
|
bulach
2013/03/19 18:51:06
won't make much difference, but could mark this an
timvolodine
2013/03/19 19:35:04
Done. However this was not possible in some places
| |
| 215 | |
| 216 double value1 = 0; | |
| 217 double value2 = 0; | |
| 218 double value3 = 0; | |
| 219 String mCalls = ""; | |
| 220 | |
| 221 private DeviceMotionAndOrientationForTests(){ | |
| 222 } | |
| 223 | |
| 224 static DeviceMotionAndOrientationForTests getInstance() { | |
| 225 return new DeviceMotionAndOrientationForTests(); | |
| 226 } | |
| 227 | |
| 228 void verifyValues(double v1, double v2, double v3) { | |
| 229 assertEquals(v1, value1); | |
| 230 assertEquals(v2, value2); | |
| 231 assertEquals(v3, value3); | |
| 232 } | |
| 233 | |
| 234 void verifyValuesEpsilon(double v1, double v2, double v3) { | |
| 235 assertEquals(v1, value1, 0.1); | |
| 236 assertEquals(v2, value2, 0.1); | |
| 237 assertEquals(v3, value3, 0.1); | |
| 238 } | |
| 239 | |
| 240 void verifyCalls(String names) { | |
| 241 assertEquals(mCalls, names); | |
| 242 } | |
| 243 | |
| 244 @Override | |
| 245 protected void gotOrientation(double alpha, double beta, double gamma) { | |
| 246 value1 = alpha; | |
| 247 value2 = beta; | |
| 248 value3 = gamma; | |
| 249 mCalls = mCalls.concat("gotOrientation"); | |
| 250 } | |
| 251 | |
| 252 @Override | |
| 253 protected void gotAcceleration(double x, double y, double z) { | |
| 254 value1 = x; | |
| 255 value2 = y; | |
| 256 value3 = z; | |
| 257 mCalls = mCalls.concat("gotAcceleration"); | |
| 258 } | |
| 259 | |
| 260 @Override | |
| 261 protected void gotAccelerationIncludingGravity(double x, double y, doubl e z) { | |
| 262 value1 = x; | |
| 263 value2 = y; | |
| 264 value3 = z; | |
| 265 mCalls = mCalls.concat("gotAccelerationIncludingGravity"); | |
| 266 } | |
| 267 | |
| 268 @Override | |
| 269 protected void gotRotationRate(double alpha, double beta, double gamma) { | |
| 270 value1 = alpha; | |
| 271 value2 = beta; | |
| 272 value3 = gamma; | |
| 273 mCalls = mCalls.concat("gotRotationRate"); | |
| 274 } | |
| 275 } | |
| 276 | |
| 277 static class MockSensorManager implements DeviceMotionAndOrientation.SensorM anagerProxy { | |
| 278 | |
| 279 int numRegistered = 0; | |
| 280 int numUnRegistered = 0; | |
| 281 | |
| 282 MockSensorManager() { | |
| 283 } | |
| 284 | |
| 285 @Override | |
| 286 public boolean registerListener(SensorEventListener listener, int sensor Type, int rate, | |
| 287 Handler handler) { | |
| 288 numRegistered++; | |
| 289 return true; | |
| 290 } | |
| 291 | |
| 292 @Override | |
| 293 public void unregisterListener(SensorEventListener listener, int sensorT ype) { | |
| 294 numUnRegistered++; | |
| 295 } | |
| 296 } | |
| 297 } | |
| OLD | NEW |