Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
|
shalamov
2016/11/02 14:25:14
We had a plan to make generic list of tests when s
| |
| 2 <script src="../resources/testharness.js"></script> | 2 <script src="../resources/testharness.js"></script> |
| 3 <script src="../resources/testharnessreport.js"></script> | 3 <script src="../resources/testharnessreport.js"></script> |
| 4 <script src="../resources/mojo-helpers.js"></script> | 4 <script src="../resources/mojo-helpers.js"></script> |
| 5 <script src="resources/sensor-helpers.js"></script> | 5 <script src="resources/sensor-helpers.js"></script> |
| 6 <script> | 6 <script> |
| 7 | 7 |
| 8 'use strict'; | 8 'use strict'; |
| 9 | 9 |
| 10 if (!window.testRunner) | 10 if (!window.testRunner) |
| 11 debug('This test cannot be run without the TestRunner'); | 11 debug('This test cannot be run without the TestRunner'); |
| 12 | 12 |
| 13 const kDefaultReadingValue = 3.1415; | 13 const kDefaultReadingX = 1.12345; |
| 14 const kDefaultReadingY = 2.12345; | |
| 15 const kDefaultReadingZ = 3.12345; | |
| 14 | 16 |
| 15 function update_sensor_reading(buffer) { | 17 function update_sensor_reading(buffer) { |
| 16 buffer[1] = window.performance.now(); | 18 buffer[1] = window.performance.now(); |
| 17 buffer[2] = kDefaultReadingValue; | 19 buffer[2] = kDefaultReadingX; |
| 20 buffer[3] = kDefaultReadingY; | |
| 21 buffer[4] = kDefaultReadingZ; | |
| 18 } | 22 } |
| 19 | 23 |
| 20 test(() => assert_throws( | 24 test(() => assert_throws( |
| 21 new RangeError(), | 25 new RangeError(), |
| 22 () => new AmbientLightSensor({frequency: -60})), | 26 () => new Accelerometer({frequency: -60})), |
| 23 'Test that negative frequency causes exception from constructor.'); | 27 'Test that negative frequency causes exception from constructor.'); |
| 24 | 28 |
| 25 sensor_test(sensor => { | 29 sensor_test(sensor => { |
| 26 sensor.mockSensorProvider.setGetSensorShouldFail(true); | 30 sensor.mockSensorProvider.setGetSensorShouldFail(true); |
| 27 let ambientLightSensor = new AmbientLightSensor(); | 31 let accelerometer = new Accelerometer(); |
| 28 ambientLightSensor.start(); | 32 accelerometer.start(); |
| 29 return new Promise((resolve, reject) => { | 33 return new Promise((resolve, reject) => { |
| 30 ambientLightSensor.onstatechange = event => { | 34 accelerometer.onstatechange = event => { |
| 31 if(ambientLightSensor.state == 'errored') { | 35 if(accelerometer.state == 'errored') { |
| 32 resolve(); | 36 resolve(); |
| 33 } | 37 } |
| 34 }; | 38 }; |
| 35 }); | 39 }); |
| 36 }, 'Test that sensor state changes to "errored" when sensor is not supported.'); | 40 }, 'Test that sensor state changes to "errored" when sensor is not supported.'); |
| 37 | 41 |
| 38 sensor_test(sensor => { | 42 sensor_test(sensor => { |
| 39 sensor.mockSensorProvider.setGetSensorShouldFail(true); | 43 sensor.mockSensorProvider.setGetSensorShouldFail(true); |
| 40 let ambientLightSensor = new AmbientLightSensor(); | 44 let accelerometer = new Accelerometer(); |
| 41 ambientLightSensor.start(); | 45 accelerometer.start(); |
| 42 return new Promise((resolve, reject) => { | 46 return new Promise((resolve, reject) => { |
| 43 ambientLightSensor.onerror = event => { | 47 accelerometer.onerror = event => { |
| 44 assert_equals(ambientLightSensor.state, 'errored'); | 48 assert_equals(accelerometer.state, 'errored'); |
| 45 console.log(event.error.message); | 49 console.log(event.error.message); |
| 46 assert_equals(event.error.name, 'NotFoundError'); | 50 assert_equals(event.error.name, 'NotFoundError'); |
| 47 resolve(); | 51 resolve(); |
| 48 }; | 52 }; |
| 49 | 53 |
| 50 }); | 54 }); |
| 51 }, 'Test that "onerror" is send when sensor is not supported.'); | 55 }, 'Test that "onerror" is send when sensor is not supported.'); |
| 52 | 56 |
| 53 | 57 |
| 54 sensor_test(sensor => { | 58 sensor_test(sensor => { |
| 55 let ambientLightSensor = new AmbientLightSensor({frequency: 560}); | 59 let accelerometer = new Accelerometer({frequency: 560}); |
| 56 ambientLightSensor.start(); | 60 accelerometer.start(); |
| 57 | 61 |
| 58 let testPromise = sensor.mockSensorProvider.getCreatedSensor() | 62 let testPromise = sensor.mockSensorProvider.getCreatedSensor() |
| 59 .then(mockSensor => { | 63 .then(mockSensor => { |
| 60 mockSensor.setStartShouldFail(true); | 64 mockSensor.setStartShouldFail(true); |
| 61 return mockSensor.addConfigurationCalled(); }) | 65 return mockSensor.addConfigurationCalled(); }) |
| 62 .then(mockSensor => { | 66 .then(mockSensor => { |
| 63 return new Promise((resolve, reject) => { | 67 return new Promise((resolve, reject) => { |
| 64 ambientLightSensor.onerror = event => { | 68 accelerometer.onerror = event => { |
| 65 assert_equals(ambientLightSensor.state, 'errored'); | 69 assert_equals(accelerometer.state, 'errored'); |
| 66 assert_equals(event.error.name, 'OperationError'); | 70 assert_equals(event.error.name, 'OperationError'); |
| 67 resolve(); | 71 resolve(); |
| 68 }; | 72 }; |
| 69 }); | 73 }); |
| 70 }); | 74 }); |
| 71 return testPromise; | 75 return testPromise; |
| 72 }, 'Test that "onerror" is send when start() call has failed.'); | 76 }, 'Test that "onerror" is send when start() call has failed.'); |
| 73 | 77 |
| 74 sensor_test(sensor => { | 78 sensor_test(sensor => { |
| 75 let ambientLightSensor = new AmbientLightSensor({frequency: 560}); | 79 let accelerometer = new Accelerometer({frequency: 560}); |
| 76 ambientLightSensor.start(); | 80 accelerometer.start(); |
| 77 | 81 |
| 78 let testPromise = sensor.mockSensorProvider.getCreatedSensor() | 82 let testPromise = sensor.mockSensorProvider.getCreatedSensor() |
| 79 .then(mockSensor => { return mockSensor.addConfigurationCalled(); }) | 83 .then(mockSensor => { return mockSensor.addConfigurationCalled(); }) |
| 80 .then(mockSensor => { | 84 .then(mockSensor => { |
| 81 return new Promise((resolve, reject) => { | 85 return new Promise((resolve, reject) => { |
| 82 ambientLightSensor.onstatechange = event => { | 86 accelerometer.onstatechange = event => { |
| 83 if (ambientLightSensor.state === 'idle') { | 87 if (accelerometer.state === 'idle') { |
| 84 resolve(mockSensor); | 88 resolve(mockSensor); |
| 85 } | 89 } |
| 86 | 90 |
| 87 if (ambientLightSensor.state === 'active') { | 91 if (accelerometer.state === 'active') { |
| 88 let configuration = mockSensor.active_sensor_configurations_[0]; | 92 let configuration = mockSensor.active_sensor_configurations_[0]; |
| 89 assert_equals(configuration.frequency, 60); | 93 assert_equals(configuration.frequency, 60); |
| 90 ambientLightSensor.stop(); | 94 accelerometer.stop(); |
| 91 } | 95 } |
| 92 }; | 96 }; |
| 93 }); | 97 }); |
| 94 }) | 98 }) |
| 95 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); }); | 99 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); }); |
| 96 | 100 |
| 97 return testPromise; | 101 return testPromise; |
| 98 }, 'Test that frequency is capped to 60.0 Hz.'); | 102 }, 'Test that frequency is capped to 60.0 Hz.'); |
| 99 | 103 |
| 100 sensor_test(sensor => { | 104 sensor_test(sensor => { |
| 101 let ambientLightSensor = new AmbientLightSensor({frequency: 60}); | 105 let accelerometer = new Accelerometer({frequency: 60}); |
| 102 ambientLightSensor.start(); | 106 accelerometer.start(); |
| 103 let testPromise = sensor.mockSensorProvider.getCreatedSensor() | 107 let testPromise = sensor.mockSensorProvider.getCreatedSensor() |
| 104 .then((mockSensor) => { | 108 .then((mockSensor) => { |
| 105 return new Promise((resolve, reject) => { | 109 return new Promise((resolve, reject) => { |
| 106 ambientLightSensor.onstatechange = event => { | 110 accelerometer.onstatechange = event => { |
| 107 if (ambientLightSensor.state === 'idle') { | 111 if (accelerometer.state === 'idle') { |
| 108 resolve(mockSensor); | 112 resolve(mockSensor); |
| 109 } | 113 } |
| 110 | 114 |
| 111 if (ambientLightSensor.state === 'active') { | 115 if (accelerometer.state === 'active') { |
| 112 ambientLightSensor.stop(); | 116 accelerometer.stop(); |
| 113 } | 117 } |
| 114 }; | 118 }; |
| 115 ambientLightSensor.onerror = reject; | 119 accelerometer.onerror = reject; |
| 116 }); | 120 }); |
| 117 }) | 121 }) |
| 118 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); }); | 122 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); }); |
| 119 | 123 |
| 120 return testPromise; | 124 return testPromise; |
| 121 }, 'Test that sensor can be successfully created if sensor is supported.'); | 125 }, 'Test that sensor can be successfully created if sensor is supported.'); |
| 122 | 126 |
| 123 sensor_test(sensor => { | 127 sensor_test(sensor => { |
| 124 let ambientLightSensor = new AmbientLightSensor(); | 128 let accelerometer = new Accelerometer({includeGravity: false}); |
| 125 ambientLightSensor.start(); | 129 accelerometer.start(); |
| 126 let testPromise = sensor.mockSensorProvider.getCreatedSensor() | 130 let testPromise = sensor.mockSensorProvider.getCreatedSensor() |
| 127 .then((mockSensor) => { | 131 .then((mockSensor) => { |
| 128 return new Promise((resolve, reject) => { | 132 return new Promise((resolve, reject) => { |
| 129 ambientLightSensor.onstatechange = event => { | 133 accelerometer.onstatechange = event => { |
| 130 if (ambientLightSensor.state === 'idle') { | 134 if (accelerometer.state === 'idle') { |
| 135 assert_equals(accelerometer.includesGravity, false); | |
| 131 resolve(mockSensor); | 136 resolve(mockSensor); |
| 132 } | 137 } |
| 133 | 138 |
| 134 if (ambientLightSensor.state === 'active') { | 139 if (accelerometer.state === 'active') { |
| 135 ambientLightSensor.stop(); | 140 accelerometer.stop(); |
| 141 } | |
| 142 }; | |
| 143 accelerometer.onerror = reject; | |
| 144 }); | |
| 145 }) | |
| 146 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); }); | |
| 147 | |
| 148 return testPromise; | |
| 149 }, 'Test that sensor can be successfully created with sensor specific configurat ion parameter.'); | |
| 150 | |
| 151 sensor_test(sensor => { | |
| 152 let accelerometer = new Accelerometer(); | |
| 153 accelerometer.start(); | |
| 154 let testPromise = sensor.mockSensorProvider.getCreatedSensor() | |
| 155 .then((mockSensor) => { | |
| 156 return new Promise((resolve, reject) => { | |
| 157 accelerometer.onstatechange = event => { | |
| 158 if (accelerometer.state === 'idle') { | |
| 159 resolve(mockSensor); | |
| 160 } | |
| 161 | |
| 162 if (accelerometer.state === 'active') { | |
| 163 accelerometer.stop(); | |
| 136 } | 164 } |
| 137 }; | 165 }; |
| 138 | 166 |
| 139 ambientLightSensor.onerror = reject; | 167 accelerometer.onerror = reject; |
| 140 }); | 168 }); |
| 141 }) | 169 }) |
| 142 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); }); | 170 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); }); |
| 143 | 171 |
| 144 return testPromise; | 172 return testPromise; |
| 145 }, 'Test that sensor can be constructed with default configuration.'); | 173 }, 'Test that sensor can be constructed with default configuration.'); |
| 146 | 174 |
| 147 sensor_test(sensor => { | 175 sensor_test(sensor => { |
| 148 let ambientLightSensor = new AmbientLightSensor({frequency: 60}); | 176 let accelerometer = new Accelerometer({frequency: 60}); |
| 149 ambientLightSensor.start(); | 177 accelerometer.start(); |
| 150 | 178 |
| 151 let testPromise = sensor.mockSensorProvider.getCreatedSensor() | 179 let testPromise = sensor.mockSensorProvider.getCreatedSensor() |
| 152 .then(mockSensor => { return mockSensor.addConfigurationCalled(); }) | 180 .then(mockSensor => { return mockSensor.addConfigurationCalled(); }) |
| 153 .then(mockSensor => { | 181 .then(mockSensor => { |
| 154 return new Promise((resolve, reject) => { | 182 return new Promise((resolve, reject) => { |
| 155 ambientLightSensor.onstatechange = event => { | 183 accelerometer.onstatechange = event => { |
| 156 if (ambientLightSensor.state === 'idle') { | 184 if (accelerometer.state === 'idle') { |
| 157 resolve(mockSensor); | 185 resolve(mockSensor); |
| 158 } | 186 } |
| 159 | 187 |
| 160 if (ambientLightSensor.state === 'active') { | 188 if (accelerometer.state === 'active') { |
| 161 ambientLightSensor.stop(); | 189 accelerometer.stop(); |
| 162 } | 190 } |
| 163 }; | 191 }; |
| 164 }); | 192 }); |
| 165 }) | 193 }) |
| 166 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); }); | 194 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); }); |
| 167 | 195 |
| 168 return testPromise; | 196 return testPromise; |
| 169 }, 'Test that addConfiguration and removeConfiguration is called.'); | 197 }, 'Test that addConfiguration and removeConfiguration is called.'); |
| 170 | 198 |
| 171 sensor_test(sensor => { | 199 sensor_test(sensor => { |
| 172 let ambientLightSensor = new AmbientLightSensor({frequency: 60}); | 200 let accelerometer = new Accelerometer({frequency: 60}); |
| 173 ambientLightSensor.start(); | 201 accelerometer.start(); |
| 174 let testPromise = sensor.mockSensorProvider.getCreatedSensor() | 202 let testPromise = sensor.mockSensorProvider.getCreatedSensor() |
| 175 .then(mockSensor => { | 203 .then(mockSensor => { |
| 176 return mockSensor.setUpdateSensorReadingFunction(update_sensor_reading); | 204 return mockSensor.setUpdateSensorReadingFunction(update_sensor_reading); |
| 177 }) | 205 }) |
| 178 .then((mockSensor) => { | 206 .then((mockSensor) => { |
| 179 return new Promise((resolve, reject) => { | 207 return new Promise((resolve, reject) => { |
| 180 ambientLightSensor.onstatechange = event => { | 208 accelerometer.onstatechange = event => { |
| 181 if (ambientLightSensor.state === 'idle') { | 209 if (accelerometer.state === 'idle') { |
| 182 resolve(mockSensor); | 210 resolve(mockSensor); |
| 183 } | 211 } |
| 184 }; | 212 }; |
| 185 | 213 |
| 186 ambientLightSensor.onchange = e => { | 214 accelerometer.onchange = e => { |
| 187 assert_equals(e.reading.illuminance, kDefaultReadingValue); | 215 assert_equals(e.reading.x, kDefaultReadingX); |
| 188 ambientLightSensor.stop(); | 216 assert_equals(e.reading.y, kDefaultReadingY); |
| 217 assert_equals(e.reading.z, kDefaultReadingZ); | |
| 218 accelerometer.stop(); | |
| 189 }; | 219 }; |
| 190 | 220 |
| 191 ambientLightSensor.onerror = reject; | 221 accelerometer.onerror = reject; |
| 192 }); | 222 }); |
| 193 }) | 223 }) |
| 194 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); }); | 224 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); }); |
| 195 | 225 |
| 196 return testPromise; | 226 return testPromise; |
| 197 }, 'Test that onChange is called and sensor reading is valid.'); | 227 }, 'Test that onChange is called and sensor reading is valid.'); |
| 198 | 228 |
| 199 sensor_test(sensor => { | 229 sensor_test(sensor => { |
| 200 let ambientLightSensor = new AmbientLightSensor({frequency: 60}); | 230 let accelerometer = new Accelerometer({frequency: 60}); |
| 201 ambientLightSensor.start(); | 231 accelerometer.start(); |
| 202 let testPromise = sensor.mockSensorProvider.getCreatedSensor() | 232 let testPromise = sensor.mockSensorProvider.getCreatedSensor() |
| 203 .then(mockSensor => { | 233 .then(mockSensor => { |
| 204 return mockSensor.setUpdateSensorReadingFunction(update_sensor_reading); | 234 return mockSensor.setUpdateSensorReadingFunction(update_sensor_reading); |
| 205 }) | 235 }) |
| 206 .then((mockSensor) => { | 236 .then((mockSensor) => { |
| 207 return new Promise((resolve, reject) => { | 237 return new Promise((resolve, reject) => { |
| 208 ambientLightSensor.onstatechange = () => { | 238 accelerometer.onstatechange = () => { |
| 209 if (ambientLightSensor.state === 'idle') { | 239 if (accelerometer.state === 'idle') { |
| 210 assert_equals(ambientLightSensor.reading, null); | 240 assert_equals(accelerometer.reading, null); |
| 211 resolve(mockSensor); | 241 resolve(mockSensor); |
| 212 } | 242 } |
| 213 } | 243 } |
| 214 | 244 |
| 215 ambientLightSensor.onchange = e => { | 245 accelerometer.onchange = e => { |
| 216 assert_equals(e.reading.illuminance, kDefaultReadingValue); | 246 assert_equals(e.reading.x, kDefaultReadingX); |
| 217 ambientLightSensor.stop(); | 247 assert_equals(e.reading.y, kDefaultReadingY); |
| 248 assert_equals(e.reading.z, kDefaultReadingZ); | |
| 249 accelerometer.stop(); | |
| 218 } | 250 } |
| 219 ambientLightSensor.onerror = reject; | 251 accelerometer.onerror = reject; |
| 220 }); | 252 }); |
| 221 }) | 253 }) |
| 222 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); }); | 254 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); }); |
| 223 | 255 |
| 224 return testPromise; | 256 return testPromise; |
| 225 }, 'Test that sensor reading is not updated when sensor is stopped.'); | 257 }, 'Test that sensor reading is not updated when sensor is stopped.'); |
| 226 | 258 |
| 227 sensor_test(sensor => { | 259 sensor_test(sensor => { |
| 228 let ambientLightSensor = new AmbientLightSensor(); | 260 let accelerometer = new Accelerometer(); |
| 229 ambientLightSensor.start(); | 261 accelerometer.start(); |
| 230 let testPromise = sensor.mockSensorProvider.getCreatedSensor() | 262 let testPromise = sensor.mockSensorProvider.getCreatedSensor() |
| 231 .then(mockSensor => { | 263 .then(mockSensor => { |
| 232 return mockSensor.setUpdateSensorReadingFunction(update_sensor_reading); | 264 return mockSensor.setUpdateSensorReadingFunction(update_sensor_reading); |
| 233 }) | 265 }) |
| 234 .then((mockSensor) => { | 266 .then((mockSensor) => { |
| 235 return new Promise((resolve, reject) => { | 267 return new Promise((resolve, reject) => { |
| 236 ambientLightSensor.onchange = e => { | 268 accelerometer.onchange = e => { |
| 237 if (e.reading.illuminance == kDefaultReadingValue) { | 269 if (e.reading.x == kDefaultReadingX && |
| 270 e.reading.y == kDefaultReadingY && | |
| 271 e.reading.z == kDefaultReadingZ) { | |
| 238 resolve(mockSensor); | 272 resolve(mockSensor); |
| 239 } | 273 } |
| 240 } | 274 } |
| 241 ambientLightSensor.onerror = reject; | 275 accelerometer.onerror = reject; |
| 242 }); | 276 }); |
| 243 }) | 277 }) |
| 244 .then((mockSensor) => { | 278 .then((mockSensor) => { |
| 245 testRunner.setPageVisibility("hidden"); | 279 testRunner.setPageVisibility("hidden"); |
| 246 return mockSensor.suspendCalled(); | 280 return mockSensor.suspendCalled(); |
| 247 }) | 281 }) |
| 248 .then((mockSensor) => { | 282 .then((mockSensor) => { |
| 249 testRunner.setPageVisibility("visible"); | 283 testRunner.setPageVisibility("visible"); |
| 250 return mockSensor.resumeCalled(); | 284 return mockSensor.resumeCalled(); |
| 251 }) | 285 }) |
| 252 .then((mockSensor) => { | 286 .then((mockSensor) => { |
| 253 return new Promise((resolve, reject) => { | 287 return new Promise((resolve, reject) => { |
| 254 ambientLightSensor.onstatechange = () => { | 288 accelerometer.onstatechange = () => { |
| 255 if (ambientLightSensor.state === 'idle') { | 289 if (accelerometer.state === 'idle') { |
| 256 resolve(mockSensor); | 290 resolve(mockSensor); |
| 257 } | 291 } |
| 258 } | 292 } |
| 259 ambientLightSensor.stop(); | 293 accelerometer.stop(); |
| 260 ambientLightSensor.onerror = reject; | 294 accelerometer.onerror = reject; |
| 261 }); | 295 }); |
| 262 }) | 296 }) |
| 263 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); }); | 297 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); }); |
| 264 | 298 |
| 265 return testPromise; | 299 return testPromise; |
| 266 }, 'Test that sensor receives suspend / resume notifications when page' | 300 }, 'Test that sensor receives suspend / resume notifications when page' |
| 267 +' visibility changes.'); | 301 +' visibility changes.'); |
| 268 | 302 |
| 269 </script> | 303 </script> |
| OLD | NEW |