You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by st...@apache.org on 2016/08/25 22:54:40 UTC

cordova-plugin-device-motion git commit: CB-11482 Fix unreliable tests on Android

Repository: cordova-plugin-device-motion
Updated Branches:
  refs/heads/master 293dcb922 -> fe7b21399


CB-11482 Fix unreliable tests on Android

 This closes #46


Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/commit/fe7b2139
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/tree/fe7b2139
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/diff/fe7b2139

Branch: refs/heads/master
Commit: fe7b2139966740af7852ca403dbdb9c724059f72
Parents: 293dcb9
Author: Vladimir Kotikov <ko...@gmail.com>
Authored: Thu Jul 7 11:08:42 2016 +0300
Committer: Steve Gill <st...@gmail.com>
Committed: Thu Aug 25 15:54:25 2016 -0700

----------------------------------------------------------------------
 src/android/AccelListener.java | 10 ++++++----
 tests/tests.js                 | 24 ++++++++++++++----------
 2 files changed, 20 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/blob/fe7b2139/src/android/AccelListener.java
----------------------------------------------------------------------
diff --git a/src/android/AccelListener.java b/src/android/AccelListener.java
index 3932c0f..61856fb 100755
--- a/src/android/AccelListener.java
+++ b/src/android/AccelListener.java
@@ -148,9 +148,6 @@ public class AccelListener extends CordovaPlugin implements SensorEventListener
 
         this.setStatus(AccelListener.STARTING);
 
-        // CB-11531: Reset accuracy to the default level
-        this.accuracy = SensorManager.SENSOR_STATUS_ACCURACY_MEDIUM;
-
         // Get accelerometer from sensor manager
         List<Sensor> list = this.sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER);
 
@@ -159,6 +156,9 @@ public class AccelListener extends CordovaPlugin implements SensorEventListener
           this.mSensor = list.get(0);
           if (this.sensorManager.registerListener(this, this.mSensor, SensorManager.SENSOR_DELAY_UI)) {
               this.setStatus(AccelListener.STARTING);
+              // CB-11531: Mark accuracy as 'reliable' - this is complementary to
+              // setting it to 'unreliable' 'stop' method
+              this.accuracy = SensorManager.SENSOR_STATUS_ACCURACY_MEDIUM;
           } else {
               this.setStatus(AccelListener.ERROR_FAILED_TO_START);
               this.fail(AccelListener.ERROR_FAILED_TO_START, "Device sensor returned an error.");
@@ -204,8 +204,10 @@ public class AccelListener extends CordovaPlugin implements SensorEventListener
      * Called two seconds after starting the listener.
      */
     private void timeout() {
-        if (this.status == AccelListener.STARTING) {
+        if (this.status == AccelListener.STARTING &&
+            this.accuracy >= SensorManager.SENSOR_STATUS_ACCURACY_MEDIUM) {
             // call win with latest cached position
+            // but first check if cached position is reliable
             this.timestamp = System.currentTimeMillis();
             this.win();
         }

http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion/blob/fe7b2139/tests/tests.js
----------------------------------------------------------------------
diff --git a/tests/tests.js b/tests/tests.js
index b782629..5deec41 100644
--- a/tests/tests.js
+++ b/tests/tests.js
@@ -123,8 +123,13 @@ exports.defineAutoTests = function () {
     describe("watchAcceleration", function() {
       var id;
 
-      afterEach(function() {
-          navigator.accelerometer.clearWatch(id);
+      afterEach(function(done) {
+          if (id) {
+            navigator.accelerometer.clearWatch(id);
+          }
+          // clearWatch implementation is async but doesn't accept a cllback
+          // so let's give it some time before starting next spec
+          setTimeout(done, 100);
       });
 
       it("accelerometer.spec.6 should exist", function() {
@@ -178,15 +183,11 @@ exports.defineAutoTests = function () {
             pending();
           }
           var veryRecently = (new Date()).getTime();
-          var ACCEPTABLE_PERCENT_RANGE = 95;
           // Need to check that dates returned are not vastly greater than a recent time stamp.
           // In case the timestamps returned are ridiculously high
           var reasonableTimeLimit = veryRecently + 5000; // 5 seconds from now
           var win = function(a) {
-            // Checking if the returned timestamp is atleast 95% of the veryRecently timestamp
-            // If it is greater than very recently (for eg: 125%) it is fine and we do not want
-            // a positive delta comparison in this assert
-            expect((a.timestamp * 100) / veryRecently).toBeGreaterThan(ACCEPTABLE_PERCENT_RANGE);
+            expect(a.timestamp).toBeGreaterThan(veryRecently);
             expect(a.timestamp).toBeLessThan(reasonableTimeLimit);
             done();
           };
@@ -291,6 +292,7 @@ exports.defineManualTests = function (contentEl, createActionButton) {
             document.getElementById('x').innerHTML = roundNumber(a.x);
             document.getElementById('y').innerHTML = roundNumber(a.y);
             document.getElementById('z').innerHTML = roundNumber(a.z);
+            document.getElementById('t').innerHTML = a.timestamp;
         };
 
         // Fail callback
@@ -322,6 +324,7 @@ exports.defineManualTests = function (contentEl, createActionButton) {
             document.getElementById('x').innerHTML = roundNumber(a.x);
             document.getElementById('y').innerHTML = roundNumber(a.y);
             document.getElementById('z').innerHTML = roundNumber(a.z);
+            document.getElementById('t').innerHTML = a.timestamp;
             console.log("getAccel success callback");
         };
 
@@ -348,9 +351,10 @@ exports.defineManualTests = function (contentEl, createActionButton) {
     contentEl.innerHTML = '<div id="info">' +
         'Status: <span id="accel_status">Stopped</span>' +
         '<table width="100%">' +
-        '<tr><td width="20%">X:</td><td id="x"> </td></tr>' +
-        '<tr><td width="20%">Y:</td><td id="y"> </td></tr>' +
-        '<tr><td width="20%">Z:</td><td id="z"> </td></tr>' +
+        '<tr><td width="30%">X:</td><td id="x"> </td></tr>' +
+        '<tr><td width="30%">Y:</td><td id="y"> </td></tr>' +
+        '<tr><td width="30%">Z:</td><td id="z"> </td></tr>' +
+        '<tr><td width="30%">Timestamp:</td><td id="t"> </td></tr>' +
         '</table></div>' +
         accelerometer_tests;
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org