You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by pu...@apache.org on 2014/08/07 21:49:06 UTC

[1/3] git commit: [CB-6960] Port compass tests to plugin-test-framework

Repository: cordova-plugin-device-orientation
Updated Branches:
  refs/heads/master fd69a87bd -> da51e7b7f


[CB-6960] Port compass tests to plugin-test-framework

Ported the compass plugin (device-orientation) from mobile-spec to the
new test framework with Jasmine 2.0
-Added test folder
-Added test.js file inside the test folder.


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

Branch: refs/heads/master
Commit: 6e44a4a9d21ea86b4af5063c5cfa4577cf7d8ff3
Parents: e8da873
Author: Samir Silva <ss...@gmail.com>
Authored: Mon Jun 30 11:31:36 2014 -0700
Committer: Samir Silva <ss...@gmail.com>
Committed: Mon Jun 30 11:31:36 2014 -0700

----------------------------------------------------------------------
 test/tests.js | 140 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 140 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-orientation/blob/6e44a4a9/test/tests.js
----------------------------------------------------------------------
diff --git a/test/tests.js b/test/tests.js
new file mode 100644
index 0000000..3da81f2
--- /dev/null
+++ b/test/tests.js
@@ -0,0 +1,140 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+exports.defineAutoTests = function() {
+    var fail = function (done) {
+        expect(true).toBe(false);
+        done();
+    },
+    succeed = function (done) {
+        expect(true).toBe(true);
+        done();
+    };
+
+    describe('Compass (navigator.compass)', function () {             
+        var hardwarefailure = false;
+        var failedSpec = 0;
+        beforeEach(function() {
+            jasmine.Expectation.addMatchers({
+                // check to see if the device has a compass, if it doesn't fail gracefully 
+                hasHardware: function() {
+                    return {
+                        compare: function (actual) {
+                            var pass = actual;
+                            hardwarefailure = pass ? false : true;
+                            return {
+                                pass: pass,
+                                message: "The device does not have compass support.  The remaining compass tests will be ignored."
+                            };
+                        }
+                    };
+                }
+            });
+        });
+
+        afterEach(function () {
+            jasmine.Spec.prototype.status = function() {
+                if (this.result.failedExpectations.length > 0) {
+                    failedSpec++;
+                    // We want to gracefully fail if there is a hardware failure
+                    if(failedSpec > 0 && hardwarefailure == true){
+                        // There is an error in the code - stop running tests!
+                        jasmine.Queue.prototype.next_ = function () { this.onComplete();}
+                    }
+                    return 'failed';
+                } else {
+                    return 'passed';
+                }
+            };
+        });
+
+        it("compass.hardwarecheck is compass supported", function() {
+            var f = function(){navigator.compass.getCurrentHeading(function onSuccess(){}, function onError(error) {})};
+            expect(f).hasHardware();
+        });
+
+        it("compass.spec.1 should exist", function() {
+            expect(navigator.compass).toBeDefined();
+        });
+
+        it("compass.spec.2 should contain a getCurrentHeading function", function() {
+            expect(navigator.compass.getCurrentHeading).toBeDefined();
+            expect(typeof navigator.compass.getCurrentHeading == 'function').toBe(true);
+        });
+
+        it("compass.spec.3 getCurrentHeading success callback should be called with a Heading object", function (done) {
+            navigator.compass.getCurrentHeading(function (a) {
+                expect(a instanceof CompassHeading).toBe(true);
+                expect(a.magneticHeading).toBeDefined();
+                expect(typeof a.magneticHeading == 'number').toBe(true);
+                expect(a.trueHeading).not.toBe(undefined);
+                expect(typeof a.trueHeading == 'number' || a.trueHeading === null).toBe(true);
+                expect(a.headingAccuracy).not.toBe(undefined);
+                expect(typeof a.headingAccuracy == 'number' || a.headingAccuracy === null).toBe(true);
+                expect(typeof a.timestamp == 'number').toBe(true);
+                done();
+            },
+            fail.bind(null, done));
+        });
+
+        it("compass.spec.4 should contain a watchHeading function", function() {
+            expect(navigator.compass.watchHeading).toBeDefined();
+            expect(typeof navigator.compass.watchHeading == 'function').toBe(true);
+        });
+
+        it("compass.spec.5 should contain a clearWatch function", function() {
+            expect(navigator.compass.clearWatch).toBeDefined();
+            expect(typeof navigator.compass.clearWatch == 'function').toBe(true);
+        });
+
+        describe('Compass Constants (window.CompassError)', function () {
+            it("compass.spec.1 should exist", function() {
+                expect(window.CompassError).toBeDefined();
+                expect(window.CompassError.COMPASS_INTERNAL_ERR).toBe(0);
+                expect(window.CompassError.COMPASS_NOT_SUPPORTED).toBe(20);
+            });
+        });
+
+        describe('Compass Heading model (CompassHeading)', function () {
+            it("compass.spec.1 should exist", function() {
+                expect(CompassHeading).toBeDefined();
+            });
+
+            it("compass.spec.8 should be able to create a new CompassHeading instance with no parameters", function() {
+                var h = new CompassHeading();
+                expect(h).toBeDefined();
+                expect(h.magneticHeading).toBeUndefined();
+                expect(h.trueHeading).toBeUndefined();
+                expect(h.headingAccuracy).toBeUndefined();
+                expect(typeof h.timestamp == 'number').toBe(true);
+            });
+
+            it("compass.spec.9 should be able to create a new CompassHeading instance with parameters", function() {
+                var h = new CompassHeading(1,2,3,4);
+                expect(h.magneticHeading).toBe(1);
+                expect(h.trueHeading).toBe(2);
+                expect(h.headingAccuracy).toBe(3);
+                expect(h.timestamp.valueOf()).toBe(4);
+                expect(typeof h.timestamp == 'number').toBe(true);
+            });
+        });
+    });
+};


[3/3] git commit: Merge branch 'CB-6960' of https://github.com/stacic/cordova-plugin-device-orientation

Posted by pu...@apache.org.
Merge branch 'CB-6960' of https://github.com/stacic/cordova-plugin-device-orientation


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

Branch: refs/heads/master
Commit: da51e7b7fe5a9ba6e798d499e4d155b0ff950082
Parents: fd69a87 7457cba
Author: Jesse MacFadyen <pu...@gmail.com>
Authored: Thu Aug 7 12:48:50 2014 -0700
Committer: Jesse MacFadyen <pu...@gmail.com>
Committed: Thu Aug 7 12:48:50 2014 -0700

----------------------------------------------------------------------
 test/tests.js | 236 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 236 insertions(+)
----------------------------------------------------------------------



[2/3] git commit: CB-6960 Added manual tests

Posted by pu...@apache.org.
CB-6960 Added manual tests


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

Branch: refs/heads/master
Commit: 7457cba1c08cf2727f9c03eba5e376098be3c071
Parents: 6e44a4a
Author: Staci Cooper <sm...@us.ibm.com>
Authored: Thu Jul 17 16:20:25 2014 -0400
Committer: Staci Cooper <sm...@us.ibm.com>
Committed: Thu Jul 17 16:20:25 2014 -0400

----------------------------------------------------------------------
 test/tests.js | 222 ++++++++++++++++++++++++++++++++++++++---------------
 1 file changed, 159 insertions(+), 63 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-plugin-device-orientation/blob/7457cba1/test/tests.js
----------------------------------------------------------------------
diff --git a/test/tests.js b/test/tests.js
index 3da81f2..50f97d9 100644
--- a/test/tests.js
+++ b/test/tests.js
@@ -1,48 +1,47 @@
 /*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
+*
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied.  See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*
 */
 
-exports.defineAutoTests = function() {
-    var fail = function (done) {
-        expect(true).toBe(false);
+exports.defineAutoTests = function () {
+    var fail = function (done, message) {
+        message = (typeof message !== 'string') ? "Forced failure: wrong callback called" : message;
+        expect(true).toFailWithMessage(message);
         done();
     },
-    succeed = function (done) {
-        expect(true).toBe(true);
-        done();
-    };
+        unexpectedSuccess = "Forced failure: success callback should not have been called",
+        unexpectedFailure = "Forced failure: error callback should not have been called";
 
-    describe('Compass (navigator.compass)', function () {             
+    describe('Compass (navigator.compass)', function () {
         var hardwarefailure = false;
-        var failedSpec = 0;
-        beforeEach(function() {
+        beforeEach(function () {
             jasmine.Expectation.addMatchers({
-                // check to see if the device has a compass, if it doesn't fail gracefully 
-                hasHardware: function() {
+                toFailWithMessage: function () {
                     return {
-                        compare: function (actual) {
-                            var pass = actual;
-                            hardwarefailure = pass ? false : true;
+                        compare: function (actual, customMessage) {
+                            var pass = false;
+                            if (customMessage === undefined) {
+                                customMessage = "Forced failure: wrong callback called";
+                            }
                             return {
                                 pass: pass,
-                                message: "The device does not have compass support.  The remaining compass tests will be ignored."
+                                message: customMessage
                             };
                         }
                     };
@@ -50,37 +49,31 @@ exports.defineAutoTests = function() {
             });
         });
 
-        afterEach(function () {
-            jasmine.Spec.prototype.status = function() {
-                if (this.result.failedExpectations.length > 0) {
-                    failedSpec++;
-                    // We want to gracefully fail if there is a hardware failure
-                    if(failedSpec > 0 && hardwarefailure == true){
-                        // There is an error in the code - stop running tests!
-                        jasmine.Queue.prototype.next_ = function () { this.onComplete();}
+        it("compass.hardwarecheck is compass supported", function (done) {
+            navigator.compass.getCurrentHeading(function onSuccess() { done(); },
+                function onError(error) {
+                    if (error.code == CompassError.COMPASS_NOT_SUPPORTED) {
+                        hardwarefailure = true;
+                        expect(this).toFailWithMessage("The device does not have compass support. Any tests relying on support will be marked pending.");
                     }
-                    return 'failed';
-                } else {
-                    return 'passed';
-                }
-            };
-        });
-
-        it("compass.hardwarecheck is compass supported", function() {
-            var f = function(){navigator.compass.getCurrentHeading(function onSuccess(){}, function onError(error) {})};
-            expect(f).hasHardware();
+                    done();
+                });
         });
 
-        it("compass.spec.1 should exist", function() {
+        it("compass.spec.1 should exist", function () {
+            console.log("In spec 1");
             expect(navigator.compass).toBeDefined();
         });
 
-        it("compass.spec.2 should contain a getCurrentHeading function", function() {
+        it("compass.spec.2 should contain a getCurrentHeading function", function () {
             expect(navigator.compass.getCurrentHeading).toBeDefined();
             expect(typeof navigator.compass.getCurrentHeading == 'function').toBe(true);
         });
 
         it("compass.spec.3 getCurrentHeading success callback should be called with a Heading object", function (done) {
+            if (hardwarefailure) {
+                pending();
+            }
             navigator.compass.getCurrentHeading(function (a) {
                 expect(a instanceof CompassHeading).toBe(true);
                 expect(a.magneticHeading).toBeDefined();
@@ -91,22 +84,21 @@ exports.defineAutoTests = function() {
                 expect(typeof a.headingAccuracy == 'number' || a.headingAccuracy === null).toBe(true);
                 expect(typeof a.timestamp == 'number').toBe(true);
                 done();
-            },
-            fail.bind(null, done));
+            }, fail.bind(null, done, unexpectedFailure));
         });
 
-        it("compass.spec.4 should contain a watchHeading function", function() {
+        it("compass.spec.4 should contain a watchHeading function", function () {
             expect(navigator.compass.watchHeading).toBeDefined();
             expect(typeof navigator.compass.watchHeading == 'function').toBe(true);
         });
 
-        it("compass.spec.5 should contain a clearWatch function", function() {
+        it("compass.spec.5 should contain a clearWatch function", function () {
             expect(navigator.compass.clearWatch).toBeDefined();
             expect(typeof navigator.compass.clearWatch == 'function').toBe(true);
         });
 
         describe('Compass Constants (window.CompassError)', function () {
-            it("compass.spec.1 should exist", function() {
+            it("compass.spec.1 should exist", function () {
                 expect(window.CompassError).toBeDefined();
                 expect(window.CompassError.COMPASS_INTERNAL_ERR).toBe(0);
                 expect(window.CompassError.COMPASS_NOT_SUPPORTED).toBe(20);
@@ -114,11 +106,11 @@ exports.defineAutoTests = function() {
         });
 
         describe('Compass Heading model (CompassHeading)', function () {
-            it("compass.spec.1 should exist", function() {
+            it("compass.spec.1 should exist", function () {
                 expect(CompassHeading).toBeDefined();
             });
 
-            it("compass.spec.8 should be able to create a new CompassHeading instance with no parameters", function() {
+            it("compass.spec.8 should be able to create a new CompassHeading instance with no parameters", function () {
                 var h = new CompassHeading();
                 expect(h).toBeDefined();
                 expect(h.magneticHeading).toBeUndefined();
@@ -127,8 +119,8 @@ exports.defineAutoTests = function() {
                 expect(typeof h.timestamp == 'number').toBe(true);
             });
 
-            it("compass.spec.9 should be able to create a new CompassHeading instance with parameters", function() {
-                var h = new CompassHeading(1,2,3,4);
+            it("compass.spec.9 should be able to create a new CompassHeading instance with parameters", function () {
+                var h = new CompassHeading(1, 2, 3, 4);
                 expect(h.magneticHeading).toBe(1);
                 expect(h.trueHeading).toBe(2);
                 expect(h.headingAccuracy).toBe(3);
@@ -138,3 +130,107 @@ exports.defineAutoTests = function() {
         });
     });
 };
+
+/******************************************************************************/
+/******************************************************************************/
+/******************************************************************************/
+
+exports.defineManualTests = function (contentEl, createActionButton) {
+    function roundNumber(num) {
+        var dec = 3;
+        var result = Math.round(num * Math.pow(10, dec)) / Math.pow(10, dec);
+        return result;
+    }
+
+    var watchCompassId = null;
+
+    /**
+     * Start watching compass
+     */
+    var watchCompass = function () {
+        console.log("watchCompass()");
+
+        // Success callback
+        var success = function (a) {
+            document.getElementById('compassHeading').innerHTML = roundNumber(a.magneticHeading);
+        };
+
+        // Fail callback
+        var fail = function (e) {
+            console.log("watchCompass fail callback with error code " + e);
+            stopCompass();
+            setCompassStatus(e);
+        };
+
+        // Update heading every 1 sec
+        var opt = {};
+        opt.frequency = 1000;
+        watchCompassId = navigator.compass.watchHeading(success, fail, opt);
+
+        setCompassStatus("Running");
+    };
+
+    /**
+     * Stop watching the acceleration
+     */
+    var stopCompass = function () {
+        setCompassStatus("Stopped");
+        if (watchCompassId) {
+            navigator.compass.clearWatch(watchCompassId);
+            watchCompassId = null;
+        }
+    };
+
+    /**
+     * Get current compass
+     */
+    var getCompass = function () {
+        console.log("getCompass()");
+
+        // Stop compass if running
+        stopCompass();
+
+        // Success callback
+        var success = function (a) {
+            document.getElementById('compassHeading').innerHTML = roundNumber(a.magneticHeading);
+        };
+
+        // Fail callback
+        var fail = function (e) {
+            console.log("getCompass fail callback with error code " + e.toString);
+            setCompassStatus(e);
+        };
+
+        // Make call
+        var opt = {};
+        navigator.compass.getCurrentHeading(success, fail, opt);
+    };
+
+    /**
+     * Set compass status
+     */
+    var setCompassStatus = function (status) {
+        document.getElementById('compass_status').innerHTML = status;
+    };
+
+    /******************************************************************************/
+
+    contentEl.innerHTML = '<div id="info"><b>Status: </b>' +
+        '<span id="compass_status">Stopped</span>' +
+        '<table width="100%"><tr>' +
+        '<td width="33%">Heading: <span id="compassHeading"></span>' +
+        '</td></tr></table></div>' +
+        '<div id="actions"></div>';
+
+    createActionButton('Get Compass', function () {
+        getCompass();
+    }, 'actions');
+
+    createActionButton('Start Watching Compass', function () {
+        watchCompass();
+    }, 'actions');
+
+    createActionButton('Stop Watching Compass', function () {
+        stopCompass();
+    }, 'actions');
+};