mirror of https://github.com/espruino/BangleApps
154 lines
3.8 KiB
JavaScript
154 lines
3.8 KiB
JavaScript
let result = true;
|
|
|
|
function assertTrue(condition, text) {
|
|
if (!condition) {
|
|
result = false;
|
|
print("FAILURE: " + text);
|
|
} else print("OK: " + text);
|
|
}
|
|
|
|
function assertFalse(condition, text) {
|
|
assertTrue(!condition, text);
|
|
}
|
|
|
|
function assertUndefinedOrEmpty(array, text) {
|
|
assertTrue(!array || array.length == 0, text);
|
|
}
|
|
|
|
function assertNotEmpty(array, text) {
|
|
assertTrue(array && array.length > 0, text);
|
|
}
|
|
|
|
let internalOn = () => {
|
|
return getPinMode((process.env.HWVERSION==2)?D30:D26) == "input";
|
|
};
|
|
|
|
let sec = {
|
|
connected: false
|
|
};
|
|
|
|
NRF.getSecurityStatus = () => sec;
|
|
// add an empty starting point to make the asserts work
|
|
Bangle._PWR={};
|
|
|
|
let teststeps = [];
|
|
|
|
teststeps.push(()=>{
|
|
print("Not connected, should use internal GPS");
|
|
assertTrue(!NRF.getSecurityStatus().connected, "Not connected");
|
|
|
|
assertUndefinedOrEmpty(Bangle._PWR.GPS, "No GPS");
|
|
assertFalse(Bangle.isGPSOn(), "isGPSOn");
|
|
|
|
assertTrue(Bangle.setGPSPower(1, "test"), "Switch GPS on");
|
|
|
|
assertNotEmpty(Bangle._PWR.GPS, "GPS");
|
|
assertTrue(Bangle.isGPSOn(), "isGPSOn");
|
|
assertTrue(internalOn(), "Internal GPS on");
|
|
|
|
assertFalse(Bangle.setGPSPower(0, "test"), "Switch GPS off");
|
|
|
|
assertUndefinedOrEmpty(Bangle._PWR.GPS, "No GPS");
|
|
assertFalse(Bangle.isGPSOn(), "isGPSOn");
|
|
assertFalse(internalOn(), "Internal GPS off");
|
|
|
|
});
|
|
|
|
teststeps.push(()=>{
|
|
print("Connected, should use GB GPS");
|
|
sec.connected = true;
|
|
|
|
assertTrue(NRF.getSecurityStatus().connected, "Connected");
|
|
|
|
assertUndefinedOrEmpty(Bangle._PWR.GPS, "No GPS");
|
|
assertFalse(Bangle.isGPSOn(), "isGPSOn");
|
|
assertFalse(internalOn(), "Internal GPS off");
|
|
|
|
|
|
print("Internal GPS stays on until the first GadgetBridge event arrives");
|
|
assertTrue(Bangle.setGPSPower(1, "test"), "Switch GPS on");
|
|
|
|
assertNotEmpty(Bangle._PWR.GPS, "GPS");
|
|
assertTrue(Bangle.isGPSOn(), "isGPSOn");
|
|
assertTrue(internalOn(), "Internal GPS on");
|
|
|
|
print("Send minimal GadgetBridge GPS event to trigger switch");
|
|
GB({t:"gps"});
|
|
});
|
|
|
|
teststeps.push(()=>{
|
|
print("GPS should be on, internal off");
|
|
|
|
assertNotEmpty(Bangle._PWR.GPS, "GPS");
|
|
assertTrue(Bangle.isGPSOn(), "isGPSOn");
|
|
assertFalse(internalOn(), "Internal GPS off");
|
|
});
|
|
|
|
teststeps.push(()=>{
|
|
print("Switching GPS off turns both GadgetBridge as well as internal off");
|
|
assertFalse(Bangle.setGPSPower(0, "test"), "Switch GPS off");
|
|
|
|
assertUndefinedOrEmpty(Bangle._PWR.GPS, "No GPS");
|
|
assertFalse(Bangle.isGPSOn(), "isGPSOn");
|
|
assertFalse(internalOn(), "Internal GPS off");
|
|
});
|
|
|
|
teststeps.push(()=>{
|
|
print("Wait for all timeouts to run out");
|
|
return 12000;
|
|
});
|
|
|
|
teststeps.push(()=>{
|
|
print("Check auto switch when no GPS event arrives");
|
|
|
|
assertTrue(Bangle.setGPSPower(1, "test"), "Switch GPS on");
|
|
|
|
assertNotEmpty(Bangle._PWR.GPS, "GPS");
|
|
assertTrue(Bangle.isGPSOn(), "isGPSOn");
|
|
assertTrue(internalOn(), "Internal GPS on");
|
|
|
|
print("Send minimal GadgetBridge GPS event to trigger switch");
|
|
GB({t:"gps"});
|
|
|
|
print("Internal should be switched off now");
|
|
|
|
assertNotEmpty(Bangle._PWR.GPS, "GPS");
|
|
assertTrue(Bangle.isGPSOn(), "isGPSOn");
|
|
assertFalse(internalOn(), "Internal GPS off");
|
|
|
|
//wait on next test
|
|
return 12000;
|
|
});
|
|
|
|
teststeps.push(()=>{
|
|
print("Check state and disable GPS, internal should be on");
|
|
|
|
assertNotEmpty(Bangle._PWR.GPS, "GPS");
|
|
assertTrue(Bangle.isGPSOn(), "isGPSOn");
|
|
assertTrue(internalOn(), "Internal GPS on");
|
|
|
|
assertFalse(Bangle.setGPSPower(0, "test"), "Switch GPS off");
|
|
});
|
|
|
|
teststeps.push(()=>{
|
|
print("Result Overall is " + (result ? "OK" : "FAIL"));
|
|
});
|
|
|
|
let wrap = (functions) => {
|
|
if (functions.length > 0) {
|
|
setTimeout(()=>{
|
|
let waitingTime = functions.shift()();
|
|
if (waitingTime){
|
|
print("WAITING: ", waitingTime);
|
|
setTimeout(()=>{wrap(functions);}, waitingTime);
|
|
} else
|
|
wrap(functions);
|
|
},0);
|
|
}
|
|
};
|
|
|
|
setTimeout(()=>{
|
|
wrap(teststeps);
|
|
}, 5000);
|
|
|