Initial commit

This commit is contained in:
2018-09-22 10:44:38 +08:00
commit eacb95c18a
723 changed files with 100993 additions and 0 deletions
@@ -0,0 +1,14 @@
{
"name": "cordova-plugin-battery-status-tests",
"version": "1.2.4-dev",
"description": "",
"cordova": {
"id": "cordova-plugin-battery-status-tests",
"platforms": []
},
"keywords": [
"ecosystem:cordova"
],
"author": "",
"license": "Apache 2.0"
}
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
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.
-->
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
xmlns:rim="http://www.blackberry.com/ns/widgets"
xmlns:android="http://schemas.android.com/apk/res/android"
id="cordova-plugin-battery-status-tests"
version="1.2.4">
<name>Cordova Battery Plugin Tests</name>
<license>Apache 2.0</license>
<js-module src="tests.js" name="tests">
</js-module>
</plugin>
+559
View File
@@ -0,0 +1,559 @@
/*
*
* 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.
*
*/
/* jshint jasmine: true */
/* global Windows, WinJS */
exports.defineAutoTests = function () {
var hasPowerManagerAPI = cordova.platformId === "windows" &&
Windows && Windows.System && Windows.System.Power &&
Windows.System.Power.PowerManager;
var batteryStatusUnsupported = cordova.platformId === "windows8" ||
// We don't test battery status on Windows when there is no corresponding APIs available
cordova.platformId === "windows" && !(hasPowerManagerAPI || WinJS.Utilities.isPhone);
var onEvent;
describe('Battery (navigator.battery)', function () {
it("battery.spec.1 should exist", function () {
if (batteryStatusUnsupported) {
pending('Battery status is not supported on windows store');
}
expect(navigator.battery).toBeDefined();
});
});
describe('Battery Events', function () {
describe("batterystatus", function () {
afterEach(function () {
if (!batteryStatusUnsupported) {
try {
window.removeEventListener("batterystatus", onEvent, false);
}
catch (e) {
console.error('Error removing batterystatus event listener: ' + e);
}
}
});
it("battery.spec.2 should fire batterystatus events", function (done) {
if (batteryStatusUnsupported) {
pending('Battery status is not supported on windows store');
}
onEvent = jasmine.createSpy("BatteryStatus");
// batterystatus -> 30
window.addEventListener("batterystatus", onEvent, false);
navigator.battery._status({
level: 30,
isPlugged: false
});
setTimeout(function () {
expect(onEvent).toHaveBeenCalled();
done();
}, 100);
});
});
describe("batterylow", function () {
afterEach(function () {
if (!batteryStatusUnsupported) {
try {
window.removeEventListener("batterylow", onEvent, false);
}
catch (e) {
console.error('Error removing batterylow event listener: ' + e);
}
}
});
it("battery.spec.3 should fire batterylow event (30 -> 20)", function (done) {
if (batteryStatusUnsupported) {
pending('Battery status is not supported on windows store');
}
onEvent = jasmine.createSpy("BatteryLow");
// batterylow 30 -> 20
window.addEventListener("batterylow", onEvent, false);
navigator.battery._status({
level : 30,
isPlugged : false
});
navigator.battery._status({
level : 20,
isPlugged : false
});
setTimeout(function () {
expect(onEvent).toHaveBeenCalled();
done();
}, 100);
});
it("battery.spec.3.1 should fire batterylow event (30 -> 19)", function (done) {
if (batteryStatusUnsupported) {
pending('Battery status is not supported on windows store');
}
onEvent = jasmine.createSpy("BatteryLow");
// batterylow 30 -> 19
window.addEventListener("batterylow", onEvent, false);
navigator.battery._status({
level : 30,
isPlugged : false
});
navigator.battery._status({
level : 19,
isPlugged : false
});
setTimeout(function () {
expect(onEvent).toHaveBeenCalled();
done();
}, 100);
});
it("battery.spec.3.2 should not fire batterylow event (5 -> 20)", function (done) {
if (batteryStatusUnsupported) {
pending('Battery status is not supported on windows store');
}
onEvent = jasmine.createSpy("BatteryLow");
// batterylow should not fire when level increases (5->20) ( CB-4519 )
window.addEventListener("batterylow", onEvent, false);
navigator.battery._status({
level : 5,
isPlugged : false
});
navigator.battery._status({
level: 20,
isPlugged: false
});
setTimeout(function () {
expect(onEvent).not.toHaveBeenCalled();
done();
}, 100);
});
it("battery.spec.3.3 batterylow event(21 -> 20) should not fire if charging", function (done) {
if (batteryStatusUnsupported) {
pending('Battery status is not supported on windows store');
}
onEvent = jasmine.createSpy("BatteryLow");
// batterylow should NOT fire if we are charging ( CB-4520 )
window.addEventListener("batterylow", onEvent, false);
navigator.battery._status({
level : 21,
isPlugged : true
});
navigator.battery._status({
level : 20,
isPlugged : true
});
setTimeout(function () {
expect(onEvent).not.toHaveBeenCalled();
done();
}, 100);
});
});
describe("batterycritical", function () {
afterEach(function () {
if (!batteryStatusUnsupported) {
try {
window.removeEventListener("batterycritical", onEvent, false);
}
catch (e) {
console.error('Error removing batterycritical event listener: ' + e);
}
}
});
it("battery.spec.4 should fire batterycritical event (19 -> 5)", function (done) {
if (batteryStatusUnsupported) {
pending('Battery status is not supported on windows store');
}
onEvent = jasmine.createSpy("BatteryCritical");
// batterycritical 19->5
window.addEventListener("batterycritical", onEvent, false);
navigator.battery._status({
level: 19,
isPlugged: false
});
navigator.battery._status({
level: 5,
isPlugged: false
});
setTimeout(function () {
expect(onEvent).toHaveBeenCalled();
done();
}, 100);
});
it("battery.spec.4.1 should fire batterycritical event (19 -> 4)", function (done) {
if (batteryStatusUnsupported) {
pending('Battery status is not supported on windows store');
}
onEvent = jasmine.createSpy("BatteryCritical");
// batterycritical 19->4
window.addEventListener("batterycritical", onEvent, false);
navigator.battery._status({
level: 19,
isPlugged: false
});
navigator.battery._status({
level: 4,
isPlugged: false
});
setTimeout(function () {
expect(onEvent).toHaveBeenCalled();
done();
}, 100);
});
it("battery.spec.4.2 should fire batterycritical event (100 -> 4) when decreases", function (done) {
if (batteryStatusUnsupported) {
pending('Battery status is not supported on windows store');
}
onEvent = jasmine.createSpy("BatteryCritical");
// setup: batterycritical should fire when level decreases (100->4) ( CB-4519 )
window.addEventListener("batterycritical", onEvent, false);
navigator.battery._status({
level: 100,
isPlugged: false
});
navigator.battery._status({
level: 4,
isPlugged: false
});
setTimeout(function () {
expect(onEvent).toHaveBeenCalled();
done();
}, 100);
});
it("battery.spec.4.3 should not fire batterycritical event (4 -> 5) when increasing", function (done) {
if (batteryStatusUnsupported) {
pending('Battery status is not supported on windows store');
}
onEvent = jasmine.createSpy("BatteryCritical");
window.addEventListener("batterycritical", onEvent, false);
// batterycritical should not fire when level increases (4->5)( CB-4519 )
navigator.battery._status({
level: 4,
isPlugged: false
});
navigator.battery._status({
level: 5,
isPlugged: false
});
setTimeout(function () {
expect(onEvent.calls.count()).toBeLessThan(2);
done();
}, 100);
});
it("battery.spec.4.4 should not fire batterycritical event (6 -> 5) if charging", function (done) {
if (batteryStatusUnsupported) {
pending('Battery status is not supported on windows store');
}
onEvent = jasmine.createSpy("BatteryCritical");
window.addEventListener("batterycritical", onEvent, false);
// batterycritical should NOT fire if we are charging ( CB-4520 )
navigator.battery._status({
level: 6,
isPlugged: true
});
navigator.battery._status({
level: 5,
isPlugged: true
});
setTimeout(function () {
expect(onEvent).not.toHaveBeenCalled();
done();
}, 100);
});
});
});
};
//******************************************************************************************
//***************************************Manual Tests***************************************
//******************************************************************************************
exports.defineManualTests = function (contentEl, createActionButton) {
/* Battery */
function updateInfo(info) {
document.getElementById('levelValue').innerText = info.level;
document.getElementById('pluggedValue').innerText = info.isPlugged;
if (info.level > 5) {
document.getElementById('criticalValue').innerText = "false";
}
if (info.level > 20) {
document.getElementById('lowValue').innerText = "false";
}
}
function batteryLow(info) {
document.getElementById('lowValue').innerText = "true";
}
function batteryCritical(info) {
document.getElementById('criticalValue').innerText = "true";
}
function addBattery() {
window.addEventListener("batterystatus", updateInfo, false);
}
function removeBattery() {
window.removeEventListener("batterystatus", updateInfo, false);
}
function addLow() {
window.addEventListener("batterylow", batteryLow, false);
}
function removeLow() {
window.removeEventListener("batterylow", batteryLow, false);
}
function addCritical() {
window.addEventListener("batterycritical", batteryCritical, false);
}
function removeCritical() {
window.removeEventListener("batterycritical", batteryCritical, false);
}
//Generate Dynamic Table
function generateTable(tableId, rows, cells, elements) {
var table = document.createElement('table');
for (var r = 0; r < rows; r++) {
var row = table.insertRow(r);
for (var c = 0; c < cells; c++) {
var cell = row.insertCell(c);
cell.setAttribute("align", "center");
for (var e in elements) {
if (elements[e].position.row == r && elements[e].position.cell == c) {
var htmlElement = document.createElement(elements[e].tag);
var content;
if (elements[e].content !== "") {
content = document.createTextNode(elements[e].content);
htmlElement.appendChild(content);
}
if (elements[e].type) {
htmlElement.type = elements[e].type;
}
htmlElement.setAttribute("id", elements[e].id);
cell.appendChild(htmlElement);
}
}
}
}
table.setAttribute("align", "center");
table.setAttribute("id", tableId);
return table;
}
// Battery Elements
var batteryElements =
[{
id : "statusTag",
content : "Status:",
tag : "div",
position : {
row : 0,
cell : 0
}
}, {
id : "statusValue",
content : "",
tag : "div",
position : {
row : 0,
cell : 1
}
}, {
id : "levelTag",
content : "Level:",
tag : "div",
position : {
row : 1,
cell : 0
}
}, {
id : "levelValue",
content : "",
tag : "div",
position : {
row : 1,
cell : 1
}
}, {
id : "pluggedTag",
content : "Plugged:",
tag : "div",
position : {
row : 2,
cell : 0
}
}, {
id : "pluggedValue",
content : "",
tag : "div",
position : {
row : 2,
cell : 1
}
}, {
id : "lowTag",
content : "Low:",
tag : "div",
position : {
row : 3,
cell : 0
}
}, {
id : "lowValue",
content : "",
tag : "div",
position : {
row : 3,
cell : 1
}
}, {
id : "criticalTag",
content : "Critical:",
tag : "div",
position : {
row : 4,
cell : 0
}
}, {
id : "criticalValue",
content : "",
tag : "div",
position : {
row : 4,
cell : 1
}
}
];
//Title audio results
var div = document.createElement('h2');
div.appendChild(document.createTextNode('Battery Status'));
div.setAttribute("align", "center");
contentEl.appendChild(div);
var batteryTable = generateTable('info', 5, 3, batteryElements);
contentEl.appendChild(batteryTable);
div = document.createElement('h2');
div.appendChild(document.createTextNode('Actions'));
div.setAttribute("align", "center");
contentEl.appendChild(div);
contentEl.innerHTML += '<h3>Battery Status Tests</h3>' +
'Will update values for level and plugged when they change. If battery low and critical values are false, they will get updated in status box, but only once' +
'<div id="addBS"></div><div id="remBs"></div>' +
'<h3>Battery Low Tests</h3>' +
'</p> Will update value for battery low to true when battery is below 20%' +
'<div id="addBl"></div><div id="remBl"></div>' +
'<h3>Battery Critical Tests</h3>' +
'</p> Will update value for battery critical to true when battery is below 5%' +
'<div id="addBc"></div><div id="remBc"></div>';
createActionButton('Add "batterystatus" listener', function () {
addBattery();
}, 'addBS');
createActionButton('Remove "batterystatus" listener', function () {
removeBattery();
}, 'remBs');
createActionButton('Add "batterylow" listener', function () {
addLow();
}, 'addBl');
createActionButton('Remove "batterylow" listener', function () {
removeLow();
}, 'remBl');
createActionButton('Add "batterycritical" listener', function () {
addCritical();
}, 'addBc');
createActionButton('Remove "batterycritical" listener', function () {
removeCritical();
}, 'remBc');
};