mirror of
https://github.com/koreader/koreader
synced 2024-11-13 19:11:25 +00:00
4dc116ed6a
It's not clear to me where the value is set as expected when running all tests linearly because it doesn't seem to be ReaderFooter.
152 lines
5.1 KiB
Lua
152 lines
5.1 KiB
Lua
describe("Readerview module", function()
|
|
local DocumentRegistry, Blitbuffer, ReaderUI, UIManager, Event
|
|
|
|
setup(function()
|
|
require("commonrequire")
|
|
package.unloadAll()
|
|
require("document/canvascontext"):init(require("device"))
|
|
DocumentRegistry = require("document/documentregistry")
|
|
Blitbuffer = require("ffi/blitbuffer")
|
|
ReaderUI = require("apps/reader/readerui")
|
|
UIManager = require("ui/uimanager")
|
|
Event = require("ui/event")
|
|
end)
|
|
|
|
it("should stop hinting on document close event", function()
|
|
local sample_epub = "spec/front/unit/data/leaves.epub"
|
|
local readerui = ReaderUI:new{
|
|
document = DocumentRegistry:openDocument(sample_epub),
|
|
}
|
|
for i = #UIManager._task_queue, 1, -1 do
|
|
local task = UIManager._task_queue[i]
|
|
if task.action == readerui.view.emitHintPageEvent then
|
|
error("UIManager's task queue should be emtpy.")
|
|
end
|
|
end
|
|
|
|
local bb = Blitbuffer.new(1000, 1000)
|
|
readerui.view:drawSinglePage(bb, 0, 0)
|
|
|
|
local found = false
|
|
for i = #UIManager._task_queue, 1, -1 do
|
|
local task = UIManager._task_queue[i]
|
|
if task.action == readerui.view.emitHintPageEvent then
|
|
found = true
|
|
end
|
|
end
|
|
assert.is.truthy(found)
|
|
|
|
readerui:onClose()
|
|
|
|
assert.is.falsy(readerui.view.hinting)
|
|
for i = #UIManager._task_queue, 1, -1 do
|
|
local task = UIManager._task_queue[i]
|
|
if task.action == readerui.view.emitHintPageEvent then
|
|
error("UIManager's task queue should be emtpy.")
|
|
end
|
|
end
|
|
end)
|
|
|
|
it("should return and restore view context in page mode", function()
|
|
-- we don't want a footer for this test
|
|
G_reader_settings:saveSetting("reader_footer_mode", 0)
|
|
local sample_pdf = "spec/front/unit/data/2col.pdf"
|
|
local readerui = ReaderUI:new{
|
|
document = DocumentRegistry:openDocument(sample_pdf),
|
|
}
|
|
readerui:handleEvent(Event:new("SetScrollMode", false))
|
|
readerui.zooming:setZoomMode("page")
|
|
local view = readerui.view
|
|
local ctx = view:getViewContext()
|
|
local zoom = ctx[1].zoom
|
|
ctx[1].zoom = nil
|
|
local saved_ctx = {
|
|
{
|
|
page = 1,
|
|
pos = 0,
|
|
gamma = 1,
|
|
offset = {
|
|
x = 17, y = 0,
|
|
h = 0, w = 0,
|
|
},
|
|
rotation = 0,
|
|
},
|
|
-- visible_area
|
|
{
|
|
x = 0, y = 0,
|
|
h = 800, w = 566,
|
|
},
|
|
-- page_area
|
|
{
|
|
x = 0, y = 0,
|
|
h = 800, w = 566,
|
|
},
|
|
}
|
|
assert.are.same(saved_ctx, ctx)
|
|
assert.is.near(0.95011876484561, zoom, 0.0001)
|
|
|
|
assert.is.same(view.state.page, 1)
|
|
assert.is.same(view.visible_area.x, 0)
|
|
assert.is.same(view.visible_area.y, 0)
|
|
saved_ctx[1].page = 2
|
|
saved_ctx[1].zoom = zoom
|
|
saved_ctx[2].y = 10
|
|
view:restoreViewContext(saved_ctx)
|
|
assert.is.same(view.state.page, 2)
|
|
assert.is.same(view.visible_area.x, 0)
|
|
assert.is.same(view.visible_area.y, 10)
|
|
G_reader_settings:delSetting("reader_footer_mode")
|
|
end)
|
|
|
|
it("should return and restore view context in scroll mode", function()
|
|
-- we don't want a footer for this test
|
|
G_reader_settings:saveSetting("reader_footer_mode", 0)
|
|
local sample_pdf = "spec/front/unit/data/2col.pdf"
|
|
local readerui = ReaderUI:new{
|
|
document = DocumentRegistry:openDocument(sample_pdf),
|
|
}
|
|
readerui:handleEvent(Event:new("SetScrollMode", true))
|
|
readerui.zooming:setZoomMode("page")
|
|
local view = readerui.view
|
|
local ctx = view:getViewContext()
|
|
local zoom = ctx[1].zoom
|
|
ctx[1].zoom = nil
|
|
local saved_ctx = {
|
|
{
|
|
gamma = 1,
|
|
offset = {x = 17, y = 0},
|
|
page = 1,
|
|
page_area = {
|
|
h = 800,
|
|
w = 566,
|
|
x = 0,
|
|
y = 0,
|
|
},
|
|
rotation = 0,
|
|
visible_area = {
|
|
h = 800,
|
|
w = 566,
|
|
x = 0,
|
|
y = 0,
|
|
},
|
|
},
|
|
}
|
|
|
|
assert.are.same(saved_ctx, ctx)
|
|
assert.is.near(0.95011876484561, zoom, 0.0001)
|
|
|
|
assert.is.same(view.state.page, 1)
|
|
assert.is.same(view.visible_area.x, 0)
|
|
assert.is.same(view.visible_area.y, 0)
|
|
saved_ctx[1].page = 2
|
|
saved_ctx[1].zoom = zoom
|
|
saved_ctx[1].visible_area.y = 10
|
|
view:restoreViewContext(saved_ctx)
|
|
assert.is.same(#view.page_states, 1)
|
|
assert.is.same(view.page_states[1].page, 2)
|
|
assert.is.same(view.page_states[1].visible_area.x, 0)
|
|
assert.is.same(view.page_states[1].visible_area.y, 10)
|
|
G_reader_settings:delSetting("reader_footer_mode")
|
|
end)
|
|
end)
|