mirror of
https://github.com/koreader/koreader
synced 2024-10-31 21:20:20 +00:00
157 lines
6.8 KiB
Lua
157 lines
6.8 KiB
Lua
|
require("commonrequire")
|
||
|
local DocumentRegistry = require("document/documentregistry")
|
||
|
local ReaderUI = require("apps/reader/readerui")
|
||
|
local UIManager = require("ui/uimanager")
|
||
|
local Screen = require("device").screen
|
||
|
local Geom = require("ui/geometry")
|
||
|
local DEBUG = require("dbg")
|
||
|
|
||
|
local sample_epub = "spec/front/unit/data/juliet.epub"
|
||
|
local sample_pdf = "spec/front/unit/data/sample.pdf"
|
||
|
|
||
|
describe("Readerhighlight module", function()
|
||
|
local function highlight_single_word(readerui, pos0)
|
||
|
readerui.highlight:onHold(nil, { pos = pos0 })
|
||
|
readerui.highlight:onHoldRelease()
|
||
|
readerui.highlight:onHighlight()
|
||
|
UIManager:scheduleIn(1, function()
|
||
|
UIManager:close(readerui.dictionary.dict_window)
|
||
|
UIManager:close(readerui)
|
||
|
end)
|
||
|
UIManager:run()
|
||
|
end
|
||
|
local function highlight_text(readerui, pos0, pos1)
|
||
|
readerui.highlight:onHold(nil, { pos = pos0 })
|
||
|
readerui.highlight:onHoldPan(nil, { pos = pos1 })
|
||
|
readerui.highlight:onHoldRelease()
|
||
|
assert.truthy(readerui.highlight.highlight_dialog)
|
||
|
readerui.highlight:onHighlight()
|
||
|
UIManager:scheduleIn(1, function()
|
||
|
UIManager:close(readerui.highlight.highlight_dialog)
|
||
|
UIManager:close(readerui)
|
||
|
end)
|
||
|
UIManager:run()
|
||
|
end
|
||
|
local function tap_highlight_text(readerui, pos0, pos1, pos2)
|
||
|
readerui.highlight:onHold(nil, { pos = pos0 })
|
||
|
readerui.highlight:onHoldPan(nil, { pos = pos1 })
|
||
|
readerui.highlight:onHoldRelease()
|
||
|
readerui.highlight:onHighlight()
|
||
|
readerui.highlight:clear()
|
||
|
UIManager:close(readerui.highlight.highlight_dialog)
|
||
|
readerui.highlight:onTap(nil, { pos = pos2 })
|
||
|
assert.truthy(readerui.highlight.edit_highlight_dialog)
|
||
|
UIManager:scheduleIn(2, function()
|
||
|
UIManager:close(readerui.highlight.edit_highlight_dialog)
|
||
|
UIManager:close(readerui)
|
||
|
end)
|
||
|
UIManager:run()
|
||
|
end
|
||
|
describe("highlight for EPUB documents", function()
|
||
|
local page = 10
|
||
|
local readerui
|
||
|
setup(function()
|
||
|
readerui = ReaderUI:new{
|
||
|
document = DocumentRegistry:openDocument(sample_epub),
|
||
|
}
|
||
|
end)
|
||
|
before_each(function()
|
||
|
UIManager:quit()
|
||
|
UIManager:show(readerui)
|
||
|
readerui.rolling:gotoPage(page)
|
||
|
end)
|
||
|
after_each(function()
|
||
|
readerui.highlight:clear()
|
||
|
end)
|
||
|
it("should highlight single word", function()
|
||
|
highlight_single_word(readerui, Geom:new{ x = 260, y = 80 })
|
||
|
Screen:shot("screenshots/reader_highlight_single_word_epub.png")
|
||
|
assert.truthy(readerui.view.highlight.saved[page])
|
||
|
end)
|
||
|
it("should highlight text", function()
|
||
|
highlight_text(readerui, Geom:new{ x = 260, y = 60 }, Geom:new{ x = 260, y = 90 })
|
||
|
Screen:shot("screenshots/reader_highlight_text_epub.png")
|
||
|
assert.truthy(readerui.view.highlight.saved[page])
|
||
|
end)
|
||
|
it("should response on tap gesture", function()
|
||
|
tap_highlight_text(readerui, Geom:new{ x = 260, y = 60 }, Geom:new{ x = 260, y = 90 }, Geom:new{ x = 260, y = 80 })
|
||
|
Screen:shot("screenshots/reader_tap_highlight_text_epub.png")
|
||
|
end)
|
||
|
end)
|
||
|
describe("highlight for PDF documents", function()
|
||
|
local readerui
|
||
|
setup(function()
|
||
|
readerui = ReaderUI:new{
|
||
|
document = DocumentRegistry:openDocument(sample_pdf),
|
||
|
}
|
||
|
end)
|
||
|
describe("for scanned page with text layer", function()
|
||
|
before_each(function()
|
||
|
UIManager:quit()
|
||
|
UIManager:show(readerui)
|
||
|
readerui.paging:gotoPage(10)
|
||
|
end)
|
||
|
after_each(function()
|
||
|
readerui.highlight:clear()
|
||
|
end)
|
||
|
it("should highlight single word", function()
|
||
|
highlight_single_word(readerui, Geom:new{ x = 260, y = 70 })
|
||
|
Screen:shot("screenshots/reader_highlight_single_word_pdf.png")
|
||
|
end)
|
||
|
it("should highlight text", function()
|
||
|
highlight_text(readerui, Geom:new{ x = 260, y = 70 }, Geom:new{ x = 260, y = 150 })
|
||
|
Screen:shot("screenshots/reader_highlight_text_pdf.png")
|
||
|
end)
|
||
|
it("should response on tap gesture", function()
|
||
|
tap_highlight_text(readerui, Geom:new{ x = 260, y = 70 }, Geom:new{ x = 260, y = 150 }, Geom:new{ x = 280, y = 110 })
|
||
|
Screen:shot("screenshots/reader_tap_highlight_text_pdf.png")
|
||
|
end)
|
||
|
end)
|
||
|
describe("for scanned page without text layer", function()
|
||
|
before_each(function()
|
||
|
UIManager:quit()
|
||
|
UIManager:show(readerui)
|
||
|
readerui.paging:gotoPage(28)
|
||
|
end)
|
||
|
after_each(function()
|
||
|
readerui.highlight:clear()
|
||
|
end)
|
||
|
it("should highlight single word", function()
|
||
|
highlight_single_word(readerui, Geom:new{ x = 260, y = 70 })
|
||
|
Screen:shot("screenshots/reader_highlight_single_word_pdf_scanned.png")
|
||
|
end)
|
||
|
it("should highlight text", function()
|
||
|
highlight_text(readerui, Geom:new{ x = 260, y = 70 }, Geom:new{ x = 260, y = 150 })
|
||
|
Screen:shot("screenshots/reader_highlight_text_pdf_scanned.png")
|
||
|
end)
|
||
|
it("should response on tap gesture", function()
|
||
|
tap_highlight_text(readerui, Geom:new{ x = 260, y = 70 }, Geom:new{ x = 260, y = 150 }, Geom:new{ x = 280, y = 110 })
|
||
|
Screen:shot("screenshots/reader_tap_highlight_text_pdf_scanned.png")
|
||
|
end)
|
||
|
end)
|
||
|
describe("for reflowed page", function()
|
||
|
before_each(function()
|
||
|
UIManager:quit()
|
||
|
readerui.document.configurable.text_wrap = 1
|
||
|
UIManager:show(readerui)
|
||
|
readerui.paging:gotoPage(31)
|
||
|
end)
|
||
|
after_each(function()
|
||
|
readerui.highlight:clear()
|
||
|
end)
|
||
|
it("should highlight single word", function()
|
||
|
highlight_single_word(readerui, Geom:new{ x = 260, y = 70 })
|
||
|
Screen:shot("screenshots/reader_highlight_single_word_pdf_reflowed.png")
|
||
|
end)
|
||
|
it("should highlight text", function()
|
||
|
highlight_text(readerui, Geom:new{ x = 260, y = 70 }, Geom:new{ x = 260, y = 150 })
|
||
|
Screen:shot("screenshots/reader_highlight_text_pdf_reflowed.png")
|
||
|
end)
|
||
|
it("should response on tap gesture", function()
|
||
|
tap_highlight_text(readerui, Geom:new{ x = 260, y = 70 }, Geom:new{ x = 260, y = 150 }, Geom:new{ x = 280, y = 110 })
|
||
|
Screen:shot("screenshots/reader_tap_highlight_text_pdf_reflowed.png")
|
||
|
end)
|
||
|
end)
|
||
|
end)
|
||
|
end)
|