fix all the tests

pull/1951/head
Qingping Hou 8 years ago
parent a049eddcbc
commit c22a3747d8

@ -1 +1 @@
Subproject commit 3ca13f3f2cb1f3267ce5c7fa309c29a345387f12 Subproject commit b5c82144e253844849ab66e55bdff363d4991c66

@ -132,7 +132,8 @@ function ReaderBookmark:onToggleBookmark()
pn_or_xp = self.ui.document:getXPointer() pn_or_xp = self.ui.document:getXPointer()
end end
self:toggleBookmark(pn_or_xp) self:toggleBookmark(pn_or_xp)
self.view.dogear_visible = not self.view.dogear_visible self.ui:handleEvent(Event:new("SetDogearVisibility",
not self.view.dogear_visible))
UIManager:setDirty(self.view.dialog, "ui") UIManager:setDirty(self.view.dialog, "ui")
return true return true
end end

@ -255,7 +255,6 @@ function ReaderHighlight:onHoldPan(_, ges)
return true return true
end end
local page_area = self.view:getScreenPageArea(self.hold_pos.page) local page_area = self.view:getScreenPageArea(self.hold_pos.page)
DEBUG("current page area", page_area)
if ges.pos:notIntersectWith(page_area) then if ges.pos:notIntersectWith(page_area) then
DEBUG("not inside page area", ges, page_area) DEBUG("not inside page area", ges, page_area)
return true return true

@ -8,7 +8,7 @@ local UIManager = require("ui/uimanager")
local Screen = require("device").screen local Screen = require("device").screen
local Geom = require("ui/geometry") local Geom = require("ui/geometry")
local Event = require("ui/event") local Event = require("ui/event")
local DEBUG = require("dbg") local dbg = require("dbg")
local Blitbuffer = require("ffi/blitbuffer") local Blitbuffer = require("ffi/blitbuffer")
local _ = require("gettext") local _ = require("gettext")
@ -118,7 +118,7 @@ function ReaderView:resetLayout()
end end
function ReaderView:paintTo(bb, x, y) function ReaderView:paintTo(bb, x, y)
DEBUG("painting", self.visible_area, "to", x, y) dbg("painting", self.visible_area, "to", x, y)
if self.page_scroll then if self.page_scroll then
self:drawPageBackground(bb, x, y) self:drawPageBackground(bb, x, y)
else else
@ -142,7 +142,7 @@ function ReaderView:paintTo(bb, x, y)
-- dim last read area -- dim last read area
if self.dim_area.w ~= 0 and self.dim_area.h ~= 0 then if self.dim_area.w ~= 0 and self.dim_area.h ~= 0 then
--DEBUG("dim area", self.dim_area) --dbg("dim area", self.dim_area)
if self.page_overlap_style == "dim" then if self.page_overlap_style == "dim" then
bb:dimRect( bb:dimRect(
self.dim_area.x, self.dim_area.y, self.dim_area.x, self.dim_area.y,
@ -189,7 +189,7 @@ function ReaderView:screenToPageTransform(pos)
else else
pos.page = self.ui.document:getCurrentPage() pos.page = self.ui.document:getCurrentPage()
-- local last_y = self.ui.document:getCurrentPos() -- local last_y = self.ui.document:getCurrentPos()
DEBUG("document has no pages at", pos) dbg("document has no pages at", pos)
return pos return pos
end end
end end
@ -519,14 +519,14 @@ function ReaderView:recalculate()
end end
function ReaderView:PanningUpdate(dx, dy) function ReaderView:PanningUpdate(dx, dy)
DEBUG("pan by", dx, dy) dbg("pan by", dx, dy)
local old = self.visible_area:copy() local old = self.visible_area:copy()
self.visible_area:offsetWithin(self.page_area, dx, dy) self.visible_area:offsetWithin(self.page_area, dx, dy)
if self.visible_area ~= old then if self.visible_area ~= old then
-- flag a repaint -- flag a repaint
UIManager:setDirty(self.dialog, "partial") UIManager:setDirty(self.dialog, "partial")
DEBUG("on pan: page_area", self.page_area) dbg("on pan: page_area", self.page_area)
DEBUG("on pan: visible_area", self.visible_area) dbg("on pan: visible_area", self.visible_area)
self.ui:handleEvent( self.ui:handleEvent(
Event:new("ViewRecalculate", self.visible_area, self.page_area)) Event:new("ViewRecalculate", self.visible_area, self.page_area))
end end
@ -534,7 +534,7 @@ function ReaderView:PanningUpdate(dx, dy)
end end
function ReaderView:PanningStart(x, y) function ReaderView:PanningStart(x, y)
DEBUG("panning start", x, y) dbg("panning start", x, y)
if not self.panning_visible_area then if not self.panning_visible_area then
self.panning_visible_area = self.visible_area:copy() self.panning_visible_area = self.visible_area:copy()
end end
@ -611,7 +611,7 @@ function ReaderView:onSetDimensions(dimensions)
end end
function ReaderView:onRestoreDimensions(dimensions) function ReaderView:onRestoreDimensions(dimensions)
--DEBUG("restore dimen", dimensions) --dbg("restore dimen", dimensions)
self:resetLayout() self:resetLayout()
self.dimen = dimensions self.dimen = dimensions
-- recalculate view -- recalculate view

@ -98,7 +98,7 @@ function Cache:insert(key, object)
-- make sure that one key only exists once: delete existing -- make sure that one key only exists once: delete existing
self:drop(key) self:drop(key)
-- guarantee that we have enough memory in cache -- guarantee that we have enough memory in cache
if(object.size > self.max_memsize) then if (object.size > self.max_memsize) then
DEBUG("too much memory claimed for", key) DEBUG("too much memory claimed for", key)
return return
end end

@ -202,7 +202,7 @@ function CreDocument:getScreenBoxesFromPositions(pos0, pos1)
local line_boxes = {} local line_boxes = {}
if pos0 and pos1 then if pos0 and pos1 then
local word_boxes = self._document:getWordBoxesFromPositions(pos0, pos1) local word_boxes = self._document:getWordBoxesFromPositions(pos0, pos1)
--DEBUG("word boxes", word_boxes) -- DEBUG("word boxes", word_boxes)
for i = 1, #word_boxes do for i = 1, #word_boxes do
local line_box = word_boxes[i] local line_box = word_boxes[i]
table.insert(line_boxes, Geom:new{ table.insert(line_boxes, Geom:new{
@ -433,7 +433,8 @@ end
function CreDocument:findText(pattern, origin, reverse, caseInsensitive) function CreDocument:findText(pattern, origin, reverse, caseInsensitive)
DEBUG("CreDocument: find text", pattern, origin, reverse, caseInsensitive) DEBUG("CreDocument: find text", pattern, origin, reverse, caseInsensitive)
return self._document:findText(pattern, origin, reverse, caseInsensitive and 1 or 0) return self._document:findText(
pattern, origin, reverse, caseInsensitive and 1 or 0)
end end
function CreDocument:register(registry) function CreDocument:register(registry)

@ -257,10 +257,13 @@ function Document:getFullPageHash(pageno, zoom, rotation, gamma, render_mode)
end end
function Document:renderPage(pageno, rect, zoom, rotation, gamma, render_mode) function Document:renderPage(pageno, rect, zoom, rotation, gamma, render_mode)
local hash_excerpt
local hash = self:getFullPageHash(pageno, zoom, rotation, gamma, render_mode) local hash = self:getFullPageHash(pageno, zoom, rotation, gamma, render_mode)
local hash_excerpt = hash.."|"..tostring(rect) local tile = Cache:check(hash, TileCacheItem)
if not tile then
local tile = Cache:check(hash, TileCacheItem) or Cache:check(hash_excerpt) hash_excerpt = hash.."|"..tostring(rect)
tile = Cache:check(hash_excerpt)
end
if tile then return tile end if tile then return tile end
local page_size = self:getPageDimensions(pageno, zoom, rotation) local page_size = self:getPageDimensions(pageno, zoom, rotation)

@ -321,6 +321,7 @@ OPTIONS:
test_path="${test_path}/$2" test_path="${test_path}/$2"
fi fi
busted --lua=./luajit ${opts} \ busted --lua=./luajit ${opts} \
--no-auto-insulate \
--lazy \ --lazy \
-o ./spec/$1/unit/verbose_print \ -o ./spec/$1/unit/verbose_print \
--exclude-tags=notest ${test_path} --exclude-tags=notest ${test_path}

@ -179,7 +179,7 @@ end
function ReaderStatistics:getCurrentStat() function ReaderStatistics:getCurrentStat()
local dates = {} local dates = {}
for k, v in pairs(self.data.performance_in_pages) do for k, v in pairs(self.data.performance_in_pages) do
dates[os.date("%Y-%m-%d", k)] = "" dates[os.date("%Y-%m-%d", k)] = true
end end
local total_days = util.tableSize(dates) local total_days = util.tableSize(dates)

@ -38,5 +38,6 @@ describe("PDF reflowing benchmark", function()
logDuration("pdf_reflowing.log", pageno, dur) logDuration("pdf_reflowing.log", pageno, dur)
end end
doc:close() doc:close()
doc.configurable.text_wrap = 0
end) end)

@ -1,15 +1,21 @@
require("commonrequire")
local DocumentRegistry = require("document/documentregistry")
local Cache = require("cache")
local DEBUG = require("dbg")
describe("Cache module", function() describe("Cache module", function()
local sample_pdf = "spec/front/unit/data/sample.pdf" local DocumentRegistry, Cache, DEBUG
local doc = DocumentRegistry:openDocument(sample_pdf) local doc
local max_page = 1
setup(function()
require("commonrequire")
DocumentRegistry = require("document/documentregistry")
Cache = require("cache")
DEBUG = require("dbg")
local sample_pdf = "spec/front/unit/data/sample.pdf"
doc = DocumentRegistry:openDocument(sample_pdf)
end)
it("should clear cache", function() it("should clear cache", function()
Cache:clear() Cache:clear()
end) end)
local max_page = 1
it("should serialize blitbuffer", function() it("should serialize blitbuffer", function()
for pageno = 1, math.min(max_page, doc.info.number_of_pages) do for pageno = 1, math.min(max_page, doc.info.number_of_pages) do
doc:renderPage(pageno, nil, 1, 0, 1.0, 0) doc:renderPage(pageno, nil, 1, 0, 1.0, 0)
@ -17,12 +23,14 @@ describe("Cache module", function()
end end
Cache:clear() Cache:clear()
end) end)
it("should deserialize blitbuffer", function() it("should deserialize blitbuffer", function()
for pageno = 1, math.min(max_page, doc.info.number_of_pages) do for pageno = 1, math.min(max_page, doc.info.number_of_pages) do
doc:hintPage(pageno, 1, 0, 1.0, 0) doc:hintPage(pageno, 1, 0, 1.0, 0)
end end
Cache:clear() Cache:clear()
end) end)
it("should serialize koptcontext", function() it("should serialize koptcontext", function()
doc.configurable.text_wrap = 1 doc.configurable.text_wrap = 1
for pageno = 1, math.min(max_page, doc.info.number_of_pages) do for pageno = 1, math.min(max_page, doc.info.number_of_pages) do
@ -31,7 +39,9 @@ describe("Cache module", function()
Cache:serialize() Cache:serialize()
end end
Cache:clear() Cache:clear()
doc.configurable.text_wrap = 0
end) end)
it("should deserialize koptcontext", function() it("should deserialize koptcontext", function()
for pageno = 1, math.min(max_page, doc.info.number_of_pages) do for pageno = 1, math.min(max_page, doc.info.number_of_pages) do
doc:renderPage(pageno, nil, 1, 0, 1.0, 0) doc:renderPage(pageno, nil, 1, 0, 1.0, 0)

@ -11,6 +11,7 @@ describe("Dbg module", function()
dbg:turnOn() dbg:turnOn()
assert.is_not.same(old_call, getmetatable(dbg).__call) assert.is_not.same(old_call, getmetatable(dbg).__call)
assert.is_not.same(old_guard, dbg.guard) assert.is_not.same(old_guard, dbg.guard)
dbg:turnOff()
end) end)
it("should call pre_gard callback", function() it("should call pre_gard callback", function()
@ -26,6 +27,7 @@ describe("Dbg module", function()
dbg:guard(foo, 'bar', function() called = true end) dbg:guard(foo, 'bar', function() called = true end)
foo:bar() foo:bar()
assert.is.truthy(called) assert.is.truthy(called)
dbg:turnOff()
end) end)
it("should call post_gard callback", function() it("should call post_gard callback", function()
@ -41,6 +43,7 @@ describe("Dbg module", function()
dbg:guard(foo, 'bar', nil, function() called = true end) dbg:guard(foo, 'bar', nil, function() called = true end)
foo:bar() foo:bar()
assert.is.truthy(called) assert.is.truthy(called)
dbg:turnOff()
end) end)
it("should return all values returned by the guarded function", function() it("should return all values returned by the guarded function", function()
@ -61,5 +64,6 @@ describe("Dbg module", function()
assert.is.falsy(called) assert.is.falsy(called)
re = {foo:bar()} re = {foo:bar()}
assert.is.same(re, {1, 2, 3}) assert.is.same(re, {1, 2, 3})
dbg:turnOff()
end) end)
end) end)

@ -1,10 +1,14 @@
require("commonrequire")
local DocumentRegistry = require("document/documentregistry")
describe("PDF document module", function() describe("PDF document module", function()
local sample_pdf = "spec/front/unit/data/tall.pdf" local DocumentRegistry
setup(function()
require("commonrequire")
DocumentRegistry = require("document/documentregistry")
end)
local doc local doc
it("should open document", function() it("should open document", function()
local sample_pdf = "spec/front/unit/data/tall.pdf"
doc = DocumentRegistry:openDocument(sample_pdf) doc = DocumentRegistry:openDocument(sample_pdf)
assert.truthy(doc) assert.truthy(doc)
end) end)
@ -44,9 +48,16 @@ describe("PDF document module", function()
end) end)
describe("EPUB document module", function() describe("EPUB document module", function()
local sample_epub = "spec/front/unit/data/leaves.epub" local DocumentRegistry
setup(function()
require("commonrequire")
DocumentRegistry = require("document/documentregistry")
end)
local doc local doc
it("should open document", function() it("should open document", function()
local sample_epub = "spec/front/unit/data/leaves.epub"
doc = DocumentRegistry:openDocument(sample_epub) doc = DocumentRegistry:openDocument(sample_epub)
assert.truthy(doc) assert.truthy(doc)
end) end)

@ -1,7 +1,10 @@
require("commonrequire")
local ImageWidget = require("ui/widget/imagewidget")
describe("ImageWidget module", function() describe("ImageWidget module", function()
local ImageWidget
setup(function()
require("commonrequire")
ImageWidget = require("ui/widget/imagewidget")
end)
it("should render without error", function() it("should render without error", function()
local imgw = ImageWidget:new{ local imgw = ImageWidget:new{
file = "resources/icons/appbar.chevron.up.png" file = "resources/icons/appbar.chevron.up.png"

@ -1,11 +1,12 @@
require("commonrequire")
local DocumentRegistry = require("document/documentregistry")
local Koptinterface = require("document/koptinterface")
local Cache = require("cache")
local DEBUG = require("dbg")
DEBUG:turnOn()
describe("Koptinterface module", function() describe("Koptinterface module", function()
local DocumentRegistry, Koptinterface, Cache
setup(function()
require("commonrequire")
DocumentRegistry = require("document/documentregistry")
Koptinterface = require("document/koptinterface")
Cache = require("cache")
end)
local sample_pdf = "spec/front/unit/data/tall.pdf" local sample_pdf = "spec/front/unit/data/tall.pdf"
local doc local doc
@ -55,6 +56,7 @@ describe("Koptinterface module", function()
doc.configurable.text_wrap = 1 doc.configurable.text_wrap = 1
local kc = Koptinterface:getCachedContext(doc, 1) local kc = Koptinterface:getCachedContext(doc, 1)
assert.truthy(kc) assert.truthy(kc)
doc.configurable.text_wrap = 0
end) end)
it("should hint reflowed page in background", function() it("should hint reflowed page in background", function()
@ -63,6 +65,7 @@ describe("Koptinterface module", function()
-- and wait for reflowing to complete -- and wait for reflowing to complete
local kc = Koptinterface:getCachedContext(doc, 1) local kc = Koptinterface:getCachedContext(doc, 1)
assert.truthy(kc) assert.truthy(kc)
doc.configurable.text_wrap = 0
end) end)
it("should get native text boxes", function() it("should get native text boxes", function()
@ -78,6 +81,6 @@ describe("Koptinterface module", function()
local boxes = Koptinterface:getReflowedTextBoxes(doc, 1) local boxes = Koptinterface:getReflowedTextBoxes(doc, 1)
local lines_in_reflowed_page = #boxes local lines_in_reflowed_page = #boxes
assert.truthy(lines_in_reflowed_page > 60) assert.truthy(lines_in_reflowed_page > 60)
doc.configurable.text_wrap = 0
end) end)
end) end)

@ -1,5 +1,5 @@
describe("ReaderBookmark module", function() describe("ReaderBookmark module", function()
local DocumentRegistry, ReaderUI, UIManager, Screen, Geom, DEBUG, DocSettings local DocumentRegistry, ReaderUI, UIManager, Screen, Geom, dbg, DocSettings
local sample_epub, sample_pdf local sample_epub, sample_pdf
setup(function() setup(function()
@ -10,7 +10,7 @@ describe("ReaderBookmark module", function()
UIManager = require("ui/uimanager") UIManager = require("ui/uimanager")
Screen = require("device").screen Screen = require("device").screen
Geom = require("ui/geometry") Geom = require("ui/geometry")
DEBUG = require("dbg") dbg = require("dbg")
sample_epub = "spec/front/unit/data/juliet.epub" sample_epub = "spec/front/unit/data/juliet.epub"
sample_pdf = "spec/front/unit/data/sample.pdf" sample_pdf = "spec/front/unit/data/sample.pdf"
@ -22,6 +22,7 @@ describe("ReaderBookmark module", function()
readerui.highlight:onHoldRelease() readerui.highlight:onHoldRelease()
assert.truthy(readerui.highlight.highlight_dialog) assert.truthy(readerui.highlight.highlight_dialog)
readerui.highlight:onHighlight() readerui.highlight:onHighlight()
-- TODO: replace scheduleIn with nextTick
UIManager:scheduleIn(1, function() UIManager:scheduleIn(1, function()
UIManager:close(readerui.highlight.highlight_dialog) UIManager:close(readerui.highlight.highlight_dialog)
UIManager:close(readerui) UIManager:close(readerui)
@ -70,14 +71,16 @@ describe("ReaderBookmark module", function()
{ notes = 'foo', page = 1, pos0 = 0, pos1 = 2, })) { notes = 'foo', page = 1, pos0 = 0, pos1 = 2, }))
end) end)
it("should show dogear after togglering non-bookmarked page", function() it("should show dogear after togglering non-bookmarked page", function()
assert.falsy(readerui.view.dogear_visible)
toggler_dogear(readerui) toggler_dogear(readerui)
Screen:shot("screenshots/reader_bookmark_dogear_epub.png") Screen:shot("screenshots/reader_bookmark_dogear_epub.png")
assert.truthy(readerui.view.dogear_visible) assert.truthy(readerui.view.dogear_visible)
end) end)
it("should not show dogear after togglering bookmarked page", function() it("should not show dogear after togglering bookmarked page", function()
assert.truthy(readerui.view.dogear_visible)
toggler_dogear(readerui) toggler_dogear(readerui)
Screen:shot("screenshots/reader_bookmark_nodogear_epub.png") Screen:shot("screenshots/reader_bookmark_nodogear_epub.png")
assert.truthy(not readerui.view.dogear_visible) assert.falsy(readerui.view.dogear_visible)
end) end)
it("should sort bookmarks with descending page numbers", function() it("should sort bookmarks with descending page numbers", function()
local pages = {1, 20, 5, 30, 10, 40, 15, 25, 35, 45} local pages = {1, 20, 5, 30, 10, 40, 15, 25, 35, 45}
@ -92,6 +95,7 @@ describe("ReaderBookmark module", function()
end) end)
it("should keep descending page numbers after removing bookmarks", function() it("should keep descending page numbers after removing bookmarks", function()
local pages = {1, 30, 10, 40, 20} local pages = {1, 30, 10, 40, 20}
readerui.bookmark.bookmarks = {}
for _, page in ipairs(pages) do for _, page in ipairs(pages) do
readerui.rolling:onGotoPage(page) readerui.rolling:onGotoPage(page)
toggler_dogear(readerui) toggler_dogear(readerui)
@ -102,7 +106,9 @@ describe("ReaderBookmark module", function()
assert.are.same(5, #readerui.bookmark.bookmarks) assert.are.same(5, #readerui.bookmark.bookmarks)
end) end)
it("should add bookmark by highlighting", function() it("should add bookmark by highlighting", function()
highlight_text(readerui, Geom:new{ x = 260, y = 60 }, Geom:new{ x = 260, y = 90 }) highlight_text(readerui,
Geom:new{ x = 260, y = 60 },
Geom:new{ x = 260, y = 90 })
readerui.bookmark:onShowBookmark() readerui.bookmark:onShowBookmark()
show_bookmark_menu(readerui) show_bookmark_menu(readerui)
Screen:shot("screenshots/reader_bookmark_6marks_epub.png") Screen:shot("screenshots/reader_bookmark_6marks_epub.png")
@ -111,14 +117,16 @@ describe("ReaderBookmark module", function()
it("should get previous bookmark for certain page", function() it("should get previous bookmark for certain page", function()
local xpointer = readerui.document:getXPointer() local xpointer = readerui.document:getXPointer()
local bm_xpointer = readerui.bookmark:getPreviousBookmarkedPage(xpointer) local bm_xpointer = readerui.bookmark:getPreviousBookmarkedPage(xpointer)
assert.are.same(5, readerui.document:getPageFromXPointer(bm_xpointer)) assert.are.same(6, #readerui.bookmark.bookmarks)
assert.are.same(1, readerui.document:getPageFromXPointer(bm_xpointer))
end) end)
it("should get next bookmark for certain page", function() it("should get next bookmark for certain page", function()
local xpointer = readerui.document:getXPointer() local xpointer = readerui.document:getXPointer()
local bm_xpointer = readerui.bookmark:getNextBookmarkedPage(xpointer) local bm_xpointer = readerui.bookmark:getNextBookmarkedPage(xpointer)
assert.are.same(15, readerui.document:getPageFromXPointer(bm_xpointer)) assert.are.same(20, readerui.document:getPageFromXPointer(bm_xpointer))
end) end)
end) end)
describe("bookmark for PDF document", function() describe("bookmark for PDF document", function()
local readerui local readerui
setup(function() setup(function()

@ -1,16 +1,20 @@
require("commonrequire")
local DocumentRegistry = require("document/documentregistry")
local ReaderUI = require("apps/reader/readerui")
local lfs = require("libs/libkoreader-lfs")
local UIManager = require("ui/uimanager")
local Screen = require("device").screen
local Event = require("ui/event")
local DEBUG = require("dbg")
describe("Readerdictionary module", function() describe("Readerdictionary module", function()
local sample_epub = "spec/front/unit/data/leaves.epub" local DocumentRegistry, ReaderUI, lfs, UIManager, Screen, Event, DEBUG
setup(function()
require("commonrequire")
DocumentRegistry = require("document/documentregistry")
ReaderUI = require("apps/reader/readerui")
lfs = require("libs/libkoreader-lfs")
UIManager = require("ui/uimanager")
Screen = require("device").screen
Event = require("ui/event")
DEBUG = require("dbg")
end)
local readerui, rolling, dictionary local readerui, rolling, dictionary
setup(function() setup(function()
local sample_epub = "spec/front/unit/data/leaves.epub"
readerui = ReaderUI:new{ readerui = ReaderUI:new{
document = DocumentRegistry:openDocument(sample_epub), document = DocumentRegistry:openDocument(sample_epub),
} }

@ -1,13 +1,18 @@
require("commonrequire")
local DocumentRegistry = require("document/documentregistry")
local ReaderUI = require("apps/reader/readerui")
local DocSettings = require("docsettings")
local UIManager = require("ui/uimanager")
local DEBUG = require("dbg")
local purgeDir = require("ffi/util").purgeDir
local Screen = require("device").screen
describe("Readerfooter module", function() describe("Readerfooter module", function()
local DocumentRegistry, ReaderUI, DocSettings, UIManager, DEBUG
local purgeDir, Screen
setup(function()
require("commonrequire")
DocumentRegistry = require("document/documentregistry")
ReaderUI = require("apps/reader/readerui")
DocSettings = require("docsettings")
UIManager = require("ui/uimanager")
DEBUG = require("dbg")
purgeDir = require("ffi/util").purgeDir
Screen = require("device").screen
end)
before_each(function() before_each(function()
G_reader_settings:saveSetting("footer", { G_reader_settings:saveSetting("footer", {
disabled = false, disabled = false,
@ -37,7 +42,7 @@ describe("Readerfooter module", function()
footer:updateFooter() footer:updateFooter()
timeinfo = footer:getTimeInfo() timeinfo = footer:getTimeInfo()
-- stats has not been initialized here, so we get na TB and TC -- stats has not been initialized here, so we get na TB and TC
assert.are.same('B:0% | '..timeinfo..' | 1 / 202 | => 0 | R:0% | TB: na | TC: na', assert.are.same('B:0% | '..timeinfo..' | 1 / 204 | => 1 | R:0% | TB: na | TC: na',
footer.progress_text.text) footer.progress_text.text)
end) end)
@ -137,8 +142,8 @@ describe("Readerfooter module", function()
assert.are.same(365, footer.text_width) assert.are.same(365, footer.text_width)
footer:onPageUpdate(100) footer:onPageUpdate(100)
assert.are.same(183, footer.progress_bar.width) assert.are.same(191, footer.progress_bar.width)
assert.are.same(397, footer.text_width) assert.are.same(389, footer.text_width)
end) end)
it("should support chapter markers", function() it("should support chapter markers", function()
@ -152,10 +157,10 @@ describe("Readerfooter module", function()
local footer = readerui.view.footer local footer = readerui.view.footer
footer:onPageUpdate(1) footer:onPageUpdate(1)
assert.are.same({ assert.are.same({
2, 4, 7, 8, 24, 31, 38, 45, 55, 56, 59, 71, 77, 92, 97, 100, 113, 3, 6, 9, 10, 26, 33, 40, 47, 57, 58, 61, 73, 79, 94, 99, 102, 115,
121, 131, 134, 148, 156, 160, 163, 166, 175, 180, 182 123, 133, 136, 151, 159, 163, 167, 170, 179, 184, 186,
}, footer.progress_bar.ticks) }, footer.progress_bar.ticks)
assert.are.same(202, footer.progress_bar.last) assert.are.same(204, footer.progress_bar.last)
end) end)
it("should schedule/unschedule auto refresh time task", function() it("should schedule/unschedule auto refresh time task", function()

@ -1,15 +1,15 @@
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() describe("Readerhighlight module", function()
local DocumentRegistry, ReaderUI, UIManager, Screen, Geom, dbg
setup(function()
require("commonrequire")
DocumentRegistry = require("document/documentregistry")
ReaderUI = require("apps/reader/readerui")
UIManager = require("ui/uimanager")
Screen = require("device").screen
Geom = require("ui/geometry")
dbg = require("dbg")
end)
local function highlight_single_word(readerui, pos0) local function highlight_single_word(readerui, pos0)
readerui.highlight:onHold(nil, { pos = pos0 }) readerui.highlight:onHold(nil, { pos = pos0 })
readerui.highlight:onHoldRelease() readerui.highlight:onHoldRelease()
@ -41,24 +41,30 @@ describe("Readerhighlight module", function()
UIManager:close(readerui.highlight.highlight_dialog) UIManager:close(readerui.highlight.highlight_dialog)
readerui.highlight:onTap(nil, { pos = pos2 }) readerui.highlight:onTap(nil, { pos = pos2 })
assert.truthy(readerui.highlight.edit_highlight_dialog) assert.truthy(readerui.highlight.edit_highlight_dialog)
UIManager:scheduleIn(2, function() UIManager:nextTick(function()
UIManager:close(readerui.highlight.edit_highlight_dialog) UIManager:close(readerui.highlight.edit_highlight_dialog)
UIManager:close(readerui) UIManager:close(readerui)
end) end)
UIManager:run() UIManager:run()
end end
describe("highlight for EPUB documents", function() describe("highlight for EPUB documents", function()
local page = 10 local page = 10
local readerui local readerui
setup(function() setup(function()
local sample_epub = "spec/front/unit/data/juliet.epub"
readerui = ReaderUI:new{ readerui = ReaderUI:new{
document = DocumentRegistry:openDocument(sample_epub), document = DocumentRegistry:openDocument(sample_epub),
} }
end) end)
before_each(function() before_each(function()
UIManager:quit() UIManager:quit()
UIManager:show(readerui)
readerui.rolling:onGotoPage(page) readerui.rolling:onGotoPage(page)
UIManager:show(readerui)
-- HACK: Mock UIManager:run x and y for readerui.dimen
-- TODO: refactor readerview's dimen handling so we can get rid of
-- this workaround
readerui:paintTo(Screen.bb, 0, 0)
end) end)
after_each(function() after_each(function()
readerui.highlight:clear() readerui.highlight:clear()
@ -69,18 +75,25 @@ describe("Readerhighlight module", function()
assert.truthy(readerui.view.highlight.saved[page]) assert.truthy(readerui.view.highlight.saved[page])
end) end)
it("should highlight text", function() it("should highlight text", function()
highlight_text(readerui, Geom:new{ x = 260, y = 60 }, Geom:new{ x = 260, y = 90 }) highlight_text(readerui,
Geom:new{ x = 260, y = 60 },
Geom:new{ x = 260, y = 90 })
Screen:shot("screenshots/reader_highlight_text_epub.png") Screen:shot("screenshots/reader_highlight_text_epub.png")
assert.truthy(readerui.view.highlight.saved[page]) assert.truthy(readerui.view.highlight.saved[page])
end) end)
it("should response on tap gesture", function() 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 }) tap_highlight_text(readerui,
Geom:new{ x = 62, y = 374 },
Geom:new{ x = 484, y = 374 },
Geom:new{ x = 331, y = 374 })
Screen:shot("screenshots/reader_tap_highlight_text_epub.png") Screen:shot("screenshots/reader_tap_highlight_text_epub.png")
end) end)
end) end)
describe("highlight for PDF documents", function() describe("highlight for PDF documents", function()
local readerui local readerui
setup(function() setup(function()
local sample_pdf = "spec/front/unit/data/sample.pdf"
readerui = ReaderUI:new{ readerui = ReaderUI:new{
document = DocumentRegistry:openDocument(sample_pdf), document = DocumentRegistry:openDocument(sample_pdf),
} }
@ -103,7 +116,10 @@ describe("Readerhighlight module", function()
Screen:shot("screenshots/reader_highlight_text_pdf.png") Screen:shot("screenshots/reader_highlight_text_pdf.png")
end) end)
it("should response on tap gesture", function() 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 }) 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") Screen:shot("screenshots/reader_tap_highlight_text_pdf.png")
end) end)
end) end)
@ -138,6 +154,7 @@ describe("Readerhighlight module", function()
end) end)
after_each(function() after_each(function()
readerui.highlight:clear() readerui.highlight:clear()
readerui.document.configurable.text_wrap = 0
end) end)
it("should highlight single word", function() it("should highlight single word", function()
highlight_single_word(readerui, Geom:new{ x = 260, y = 70 }) highlight_single_word(readerui, Geom:new{ x = 260, y = 70 })

@ -91,6 +91,8 @@ describe("ReaderLink module", function()
local readerui = ReaderUI:new{ local readerui = ReaderUI:new{
document = DocumentRegistry:openDocument(sample_pdf), document = DocumentRegistry:openDocument(sample_pdf),
} }
readerui.paging:onGotoPage(1)
assert.is.same(1, readerui.paging.current_page)
readerui.view:onSetScrollMode(true) readerui.view:onSetScrollMode(true)
assert.is.same(true, readerui.view.page_scroll) assert.is.same(true, readerui.view.page_scroll)
readerui.paging:onTapForward() readerui.paging:onTapForward()

@ -28,6 +28,11 @@ describe("Readerpaging module", function()
describe("Scroll mode", function() describe("Scroll mode", function()
setup(function() setup(function()
local purgeDir = require("ffi/util").purgeDir
local DocSettings = require("docsettings")
purgeDir(DocSettings:getSidecarDir(sample_pdf))
os.remove(DocSettings:getHistoryPath(sample_pdf))
readerui = require("apps/reader/readerui"):new{ readerui = require("apps/reader/readerui"):new{
document = require("document/documentregistry"):openDocument(sample_pdf), document = require("document/documentregistry"):openDocument(sample_pdf),
} }

@ -1,15 +1,21 @@
require("commonrequire")
local DocumentRegistry = require("document/documentregistry")
local ReaderUI = require("apps/reader/readerui")
local Event = require("ui/event")
local DEBUG = require("dbg")
describe("Readerrolling module", function() describe("Readerrolling module", function()
local sample_epub = "spec/front/unit/data/juliet.epub" local DocumentRegistry, ReaderUI, Event, DEBUG
local readerui = ReaderUI:new{ local readerui, rolling
document = DocumentRegistry:openDocument(sample_epub),
} setup(function()
local rolling = readerui.rolling require("commonrequire")
DocumentRegistry = require("document/documentregistry")
ReaderUI = require("apps/reader/readerui")
Event = require("ui/event")
DEBUG = require("dbg")
local sample_epub = "spec/front/unit/data/juliet.epub"
readerui = ReaderUI:new{
document = DocumentRegistry:openDocument(sample_epub),
}
rolling = readerui.rolling
end)
describe("test in portrait screen mode", function() describe("test in portrait screen mode", function()
it("should goto portrait screen mode", function() it("should goto portrait screen mode", function()
readerui:handleEvent(Event:new("ChangeScreenMode", "portrait")) readerui:handleEvent(Event:new("ChangeScreenMode", "portrait"))

@ -1,12 +1,15 @@
require("commonrequire") describe("Readersearch module", function()
local DocumentRegistry = require("document/documentregistry") local sample_epub = "spec/front/unit/data/juliet.epub"
local ReaderUI = require("apps/reader/readerui") local sample_pdf = "spec/front/unit/data/sample.pdf"
local DEBUG = require("dbg") local DocumentRegistry, ReaderUI, dbg
local sample_epub = "spec/front/unit/data/juliet.epub" setup(function()
local sample_pdf = "spec/front/unit/data/sample.pdf" require("commonrequire")
DocumentRegistry = require("document/documentregistry")
ReaderUI = require("apps/reader/readerui")
dbg = require("dbg")
end)
describe("Readersearch module", function()
describe("search API for EPUB documents", function() describe("search API for EPUB documents", function()
local doc, search, rolling local doc, search, rolling
setup(function() setup(function()
@ -26,7 +29,7 @@ describe("Readersearch module", function()
if words then if words then
for _, word in ipairs(words) do for _, word in ipairs(words) do
local pageno = doc:getPageFromXPointer(word.start) local pageno = doc:getPageFromXPointer(word.start)
--DEBUG("found at pageno", pageno) --dbg("found at pageno", pageno)
assert.truthy(pageno <= i) assert.truthy(pageno <= i)
end end
end end
@ -41,7 +44,7 @@ describe("Readersearch module", function()
if words then if words then
for _, word in ipairs(words) do for _, word in ipairs(words) do
local pageno = doc:getPageFromXPointer(word.start) local pageno = doc:getPageFromXPointer(word.start)
--DEBUG("found at pageno", pageno) --dbg("found at pageno", pageno)
assert.truthy(pageno >= i) assert.truthy(pageno >= i)
end end
end end
@ -53,7 +56,7 @@ describe("Readersearch module", function()
local words = search:searchFromStart("Verona") local words = search:searchFromStart("Verona")
assert.truthy(words) assert.truthy(words)
local pageno = doc:getPageFromXPointer(words[1].start) local pageno = doc:getPageFromXPointer(words[1].start)
assert.are.equal(7, pageno) assert.are.equal(9, pageno)
end end
for i = 1, 5, 1 do for i = 1, 5, 1 do
rolling:onGotoPage(i) rolling:onGotoPage(i)
@ -67,7 +70,7 @@ describe("Readersearch module", function()
local words = search:searchFromEnd("Verona") local words = search:searchFromEnd("Verona")
assert.truthy(words) assert.truthy(words)
local pageno = doc:getPageFromXPointer(words[1].start) local pageno = doc:getPageFromXPointer(words[1].start)
assert.are.equal(199, pageno) assert.are.equal(203, pageno)
end end
for i = 230, 235, 1 do for i = 230, 235, 1 do
rolling:onGotoPage(i) rolling:onGotoPage(i)
@ -82,7 +85,7 @@ describe("Readersearch module", function()
while words do while words do
count = count + #words count = count + #words
for _, word in ipairs(words) do for _, word in ipairs(words) do
--DEBUG("found word", word.start) --dbg("found word", word.start)
end end
doc:gotoXPointer(words[1].start) doc:gotoXPointer(words[1].start)
words = search:searchNext("Verona", 0) words = search:searchNext("Verona", 0)
@ -135,7 +138,7 @@ describe("Readersearch module", function()
paging:onGotoPage(i) paging:onGotoPage(i)
local words = search:searchFromCurrent("test", 1) local words = search:searchFromCurrent("test", 1)
if words then if words then
DEBUG("search backward: found at page", words.page) dbg("search backward: found at page", words.page)
assert.truthy(words.page <= i) assert.truthy(words.page <= i)
end end
end end
@ -147,7 +150,7 @@ describe("Readersearch module", function()
paging:onGotoPage(i) paging:onGotoPage(i)
local words = search:searchFromCurrent("test", 0) local words = search:searchFromCurrent("test", 0)
if words then if words then
DEBUG("search forward: found at page", words.page) dbg("search forward: found at page", words.page)
assert.truthy(words.page >= i) assert.truthy(words.page >= i)
end end
end end
@ -184,7 +187,7 @@ describe("Readersearch module", function()
local words = search:searchFromCurrent("test", 0) local words = search:searchFromCurrent("test", 0)
while words do while words do
count = count + #words count = count + #words
--DEBUG("found words", #words, words.page) --dbg("found words", #words, words.page)
paging:onGotoPage(words.page) paging:onGotoPage(words.page)
words = search:searchNext("test", 0) words = search:searchNext("test", 0)
end end

@ -1,15 +1,20 @@
require("commonrequire")
local DocumentRegistry = require("document/documentregistry")
local ReaderUI = require("apps/reader/readerui")
local DEBUG = require("dbg")
describe("Readertoc module", function() describe("Readertoc module", function()
local sample_epub = "spec/front/unit/data/juliet.epub" local DocumentRegistry, ReaderUI, DEBUG
local readerui = ReaderUI:new{ local readerui, toc, toc_max_depth
document = DocumentRegistry:openDocument(sample_epub),
} setup(function()
local toc = readerui.toc require("commonrequire")
local toc_max_depth = nil DocumentRegistry = require("document/documentregistry")
ReaderUI = require("apps/reader/readerui")
DEBUG = require("dbg")
local sample_epub = "spec/front/unit/data/juliet.epub"
readerui = ReaderUI:new{
document = DocumentRegistry:openDocument(sample_epub),
}
toc = readerui.toc
end)
it("should get max toc depth", function() it("should get max toc depth", function()
toc_max_depth = toc:getMaxDepth() toc_max_depth = toc:getMaxDepth()
assert.are.same(2, toc_max_depth) assert.are.same(2, toc_max_depth)
@ -50,24 +55,24 @@ describe("Readertoc module", function()
end) end)
end) end)
it("should get page of next chapter", function() it("should get page of next chapter", function()
assert.are.same(24, toc:getNextChapter(10, 0)) assert.are.same(26, toc:getNextChapter(10, 0))
assert.are.same(113, toc:getNextChapter(100, 0)) assert.are.same(102, toc:getNextChapter(100, 0))
assert.are.same(nil, toc:getNextChapter(200, 0)) assert.are.same(nil, toc:getNextChapter(200, 0))
end) end)
it("should get page of previous chapter", function() it("should get page of previous chapter", function()
assert.are.same(8, toc:getPreviousChapter(10, 0)) assert.are.same(9, toc:getPreviousChapter(10, 0))
assert.are.same(97, toc:getPreviousChapter(100, 0)) assert.are.same(99, toc:getPreviousChapter(100, 0))
assert.are.same(182, toc:getPreviousChapter(200, 0)) assert.are.same(186, toc:getPreviousChapter(200, 0))
end) end)
it("should get page left of chapter", function() it("should get page left of chapter", function()
assert.are.same(13, toc:getChapterPagesLeft(10, 0)) assert.are.same(15, toc:getChapterPagesLeft(10, 0))
assert.are.same(12, toc:getChapterPagesLeft(100, 0)) assert.are.same(12, toc:getChapterPagesLeft(102, 0))
assert.are.same(nil, toc:getChapterPagesLeft(200, 0)) assert.are.same(nil, toc:getChapterPagesLeft(200, 0))
end) end)
it("should get page done of chapter", function() it("should get page done of chapter", function()
assert.are.same(2, toc:getChapterPagesDone(10, 0)) assert.are.same(2, toc:getChapterPagesDone(12, 0))
assert.are.same(0, toc:getChapterPagesDone(100, 0)) assert.are.same(0, toc:getChapterPagesDone(99, 0))
assert.are.same(18, toc:getChapterPagesDone(200, 0)) assert.are.same(18, toc:getChapterPagesDone(204, 0))
end) end)
describe("collasible TOC", function() describe("collasible TOC", function()
it("should collapse the secondary toc nodes by default", function() it("should collapse the secondary toc nodes by default", function()

Loading…
Cancel
Save