You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
koreader/spec/unit/readerpaging_spec.lua

144 lines
4.7 KiB
Lua

describe("Readerpaging module", function()
local sample_pdf = "spec/front/unit/data/sample.pdf"
local sample_djvu = "spec/front/unit/data/djvu3spec.djvu"
local UIManager, Event, DocumentRegistry, ReaderUI, Screen
setup(function()
require("commonrequire")
UIManager = require("ui/uimanager")
stub(UIManager, "getNthTopWidget")
UIManager.getNthTopWidget.returns({})
Event = require("ui/event")
DocumentRegistry = require("document/documentregistry")
ReaderUI = require("apps/reader/readerui")
Screen = require("device").screen
local purgeDir = require("ffi/util").purgeDir
local DocSettings = require("docsettings")
purgeDir(DocSettings:getSidecarDir(sample_pdf))
os.remove(DocSettings:getHistoryPath(sample_pdf))
end)
describe("Page mode on a PDF", function()
before_each(function()
local readerui = ReaderUI:new{
dimen = Screen:getSize(),
document = DocumentRegistry:openDocument(sample_pdf),
}
UIManager:show(readerui)
end)
after_each(function()
local readerui = ReaderUI.instance
if readerui then
readerui:closeDocument()
readerui:onClose()
end
end)
it("should emit EndOfBook event at the end", function()
local readerui = ReaderUI.instance
local paging = readerui.paging
local s = spy.on(readerui.status, "onEndOfBook")
UIManager:nextTick(function()
UIManager:quit()
end)
UIManager:run()
readerui:handleEvent(Event:new("SetScrollMode", false))
readerui.zooming:setZoomMode("pageheight")
paging:onGotoPage(readerui.document:getPageCount())
paging:onGotoViewRel(1)
assert.spy(s).was_called()
end)
end)
describe("Scroll mode on a PDF", function()
setup(function()
local purgeDir = require("ffi/util").purgeDir
local DocSettings = require("docsettings")
purgeDir(DocSettings:getSidecarDir(sample_pdf))
os.remove(DocSettings:getHistoryPath(sample_pdf))
end)
before_each(function()
local readerui = ReaderUI:new{
dimen = Screen:getSize(),
document = DocumentRegistry:openDocument(sample_pdf),
}
UIManager:show(readerui)
end)
after_each(function()
local readerui = ReaderUI.instance
if readerui then
readerui:closeDocument()
readerui:onClose()
end
end)
it("should emit EndOfBook event at the end", function()
local readerui = ReaderUI.instance
local paging = readerui.paging
local s = spy.on(readerui.status, "onEndOfBook")
UIManager:nextTick(function()
UIManager:quit()
end)
UIManager:run()
paging.page_positions = {}
readerui:handleEvent(Event:new("SetScrollMode", true))
paging:onGotoPage(readerui.document:getPageCount())
readerui.zooming:setZoomMode("pageheight")
paging:onGotoViewRel(1)
paging:onGotoViewRel(1)
assert.spy(s).was_called()
end)
end)
describe("Scroll mode on a DjVu", function()
setup(function()
local purgeDir = require("ffi/util").purgeDir
local DocSettings = require("docsettings")
purgeDir(DocSettings:getSidecarDir(sample_djvu))
os.remove(DocSettings:getHistoryPath(sample_djvu))
end)
before_each(function()
local readerui = ReaderUI:new{
dimen = Screen:getSize(),
document = DocumentRegistry:openDocument(sample_djvu),
}
UIManager:show(readerui)
end)
after_each(function()
local readerui = ReaderUI.instance
if readerui then
readerui:closeDocument()
readerui:onClose()
end
end)
it("should scroll backward on the first page without crash", function()
local readerui = ReaderUI.instance
local paging = readerui.paging
paging:onScrollPanRel(-100)
end)
it("should scroll forward on the last page without crash", function()
local readerui = ReaderUI.instance
local paging = readerui.paging
paging:onGotoPage(readerui.document:getPageCount())
paging:onScrollPanRel(120)
paging:onScrollPanRel(-1)
paging:onScrollPanRel(120)
end)
end)
end)