mirror of
https://github.com/koreader/koreader
synced 2024-11-16 06:12:56 +00:00
830fc790f1
- fix incorrectly shown awake, sleeping, charging and discharging, - remove unneeded debug mode and logging to external file, - prevent showing values like inf, -inf, nan in estimated times (we now show "n/a"), and values below zero, - show extra confirm box when we want to reset data, - show time in format xxhxxm instead of only pure minutes, - check at initialization that the device was charging when it was turned off (battery level larger than at the time of exit).
192 lines
6.8 KiB
Lua
192 lines
6.8 KiB
Lua
describe("BatteryState plugin tests #nocov", function()
|
|
local MockTime, module
|
|
|
|
local stat = function() --luacheck: ignore
|
|
return module:new():stat()
|
|
end,
|
|
|
|
setup(function()
|
|
require("commonrequire")
|
|
package.unloadAll()
|
|
require("document/canvascontext"):init(require("device"))
|
|
MockTime = require("mock_time")
|
|
MockTime:install()
|
|
end)
|
|
|
|
teardown(function()
|
|
MockTime:uninstall()
|
|
package.unloadAll()
|
|
require("document/canvascontext"):init(require("device"))
|
|
end)
|
|
|
|
before_each(function()
|
|
module = dofile("plugins/batterystat.koplugin/main.lua")
|
|
end)
|
|
|
|
it("should record charging time", function()
|
|
local widget = stat()
|
|
assert.is_false(widget.was_charging)
|
|
assert.is_false(widget.was_suspending)
|
|
widget:resetAll()
|
|
MockTime:increase(1)
|
|
widget:accumulate()
|
|
assert.are.equal(1, widget.awake.time)
|
|
assert.are.equal(0, widget.sleeping.time)
|
|
assert.are.equal(1, widget.discharging.time)
|
|
assert.are.equal(0, widget.charging.time)
|
|
|
|
widget:onCharging()
|
|
assert.is_true(widget.was_charging)
|
|
assert.is_false(widget.was_suspending)
|
|
MockTime:increase(1)
|
|
widget:accumulate()
|
|
-- Awake charging & discharging time should be reset.
|
|
assert.are.equal(0, widget.awake.time)
|
|
assert.are.equal(0, widget.sleeping.time)
|
|
assert.are.equal(0, widget.discharging.time)
|
|
assert.are.equal(1, widget.charging.time)
|
|
|
|
widget:onNotCharging()
|
|
assert.is_false(widget.was_charging)
|
|
assert.is_false(widget.was_suspending)
|
|
MockTime:increase(1)
|
|
widget:accumulate()
|
|
-- awake & discharging time should be reset.
|
|
assert.are.equal(1, widget.awake.time)
|
|
assert.are.equal(0, widget.sleeping.time)
|
|
assert.are.equal(1, widget.discharging.time)
|
|
assert.are.equal(1, widget.charging.time)
|
|
|
|
widget:onCharging()
|
|
assert.is_true(widget.was_charging)
|
|
assert.is_false(widget.was_suspending)
|
|
MockTime:increase(1)
|
|
widget:accumulate()
|
|
-- Awake charging & discharging time should be reset.
|
|
assert.are.equal(0, widget.awake.time)
|
|
assert.are.equal(0, widget.sleeping.time)
|
|
assert.are.equal(0, widget.discharging.time)
|
|
assert.are.equal(1, widget.charging.time)
|
|
end)
|
|
|
|
it("should record suspending time", function()
|
|
local widget = stat()
|
|
assert.is_false(widget.was_charging)
|
|
assert.is_false(widget.was_suspending)
|
|
widget:resetAll()
|
|
MockTime:increase(1)
|
|
widget:accumulate()
|
|
assert.are.equal(1, widget.awake.time)
|
|
assert.are.equal(0, widget.sleeping.time)
|
|
assert.are.equal(1, widget.discharging.time)
|
|
assert.are.equal(0, widget.charging.time)
|
|
|
|
widget:onSuspend()
|
|
assert.is_false(widget.was_charging)
|
|
assert.is_true(widget.was_suspending)
|
|
MockTime:increase(1)
|
|
widget:accumulate()
|
|
assert.are.equal(1, widget.awake.time)
|
|
assert.are.equal(1, widget.sleeping.time)
|
|
assert.are.equal(2, widget.discharging.time)
|
|
assert.are.equal(0, widget.charging.time)
|
|
|
|
widget:onResume()
|
|
assert.is_false(widget.was_charging)
|
|
assert.is_false(widget.was_suspending)
|
|
MockTime:increase(1)
|
|
widget:accumulate()
|
|
assert.are.equal(2, widget.awake.time)
|
|
assert.are.equal(1, widget.sleeping.time)
|
|
assert.are.equal(3, widget.discharging.time)
|
|
assert.are.equal(0, widget.charging.time)
|
|
|
|
widget:onSuspend()
|
|
assert.is_false(widget.was_charging)
|
|
assert.is_true(widget.was_suspending)
|
|
MockTime:increase(1)
|
|
widget:accumulate()
|
|
assert.are.equal(2, widget.awake.time)
|
|
assert.are.equal(2, widget.sleeping.time)
|
|
assert.are.equal(4, widget.discharging.time)
|
|
assert.are.equal(0, widget.charging.time)
|
|
end)
|
|
|
|
it("should not swap the state when several charging events fired", function()
|
|
local widget = stat()
|
|
assert.is_false(widget.was_charging)
|
|
assert.is_false(widget.was_suspending)
|
|
widget:resetAll()
|
|
MockTime:increase(1)
|
|
widget:accumulate()
|
|
assert.are.equal(1, widget.awake.time)
|
|
assert.are.equal(0, widget.sleeping.time)
|
|
assert.are.equal(1, widget.discharging.time)
|
|
assert.are.equal(0, widget.charging.time)
|
|
|
|
widget:onCharging()
|
|
assert.is_true(widget.was_charging)
|
|
assert.is_false(widget.was_suspending)
|
|
MockTime:increase(1)
|
|
widget:accumulate()
|
|
-- Awake charging & discharging time should be reset.
|
|
assert.are.equal(0, widget.awake.time)
|
|
assert.are.equal(0, widget.sleeping.time)
|
|
assert.are.equal(0, widget.discharging.time)
|
|
assert.are.equal(1, widget.charging.time)
|
|
|
|
widget:onCharging()
|
|
assert.is_true(widget.was_charging)
|
|
assert.is_false(widget.was_suspending)
|
|
MockTime:increase(1)
|
|
widget:accumulate()
|
|
assert.are.equal(0, widget.awake.time)
|
|
assert.are.equal(0, widget.sleeping.time)
|
|
assert.are.equal(0, widget.discharging.time)
|
|
assert.are.equal(2, widget.charging.time)
|
|
end)
|
|
|
|
it("should not swap the state when several suspending events fired", function()
|
|
local widget = stat()
|
|
assert.is_false(widget.was_charging)
|
|
assert.is_false(widget.was_suspending)
|
|
widget:resetAll()
|
|
MockTime:increase(1)
|
|
widget:accumulate()
|
|
assert.are.equal(1, widget.awake.time)
|
|
assert.are.equal(0, widget.sleeping.time)
|
|
assert.are.equal(1, widget.discharging.time)
|
|
assert.are.equal(0, widget.charging.time)
|
|
|
|
widget:onSuspend()
|
|
assert.is_false(widget.was_charging)
|
|
assert.is_true(widget.was_suspending)
|
|
MockTime:increase(1)
|
|
widget:accumulate()
|
|
assert.are.equal(1, widget.awake.time)
|
|
assert.are.equal(1, widget.sleeping.time)
|
|
assert.are.equal(2, widget.discharging.time)
|
|
assert.are.equal(0, widget.charging.time)
|
|
|
|
widget:onSuspend()
|
|
assert.is_false(widget.was_charging)
|
|
assert.is_true(widget.was_suspending)
|
|
MockTime:increase(1)
|
|
widget:accumulate()
|
|
assert.are.equal(1, widget.awake.time)
|
|
assert.are.equal(2, widget.sleeping.time)
|
|
assert.are.equal(3, widget.discharging.time)
|
|
assert.are.equal(0, widget.charging.time)
|
|
|
|
widget:onSuspend()
|
|
assert.is_false(widget.was_charging)
|
|
assert.is_true(widget.was_suspending)
|
|
MockTime:increase(1)
|
|
widget:accumulate()
|
|
assert.are.equal(1, widget.awake.time)
|
|
assert.are.equal(3, widget.sleeping.time)
|
|
assert.are.equal(4, widget.discharging.time)
|
|
assert.are.equal(0, widget.charging.time)
|
|
end)
|
|
end)
|