2
0
mirror of https://github.com/koreader/koreader synced 2024-10-31 21:20:20 +00:00
koreader/spec/unit/readertoc_spec.lua
poire-z d8d0def122
Floating punctuation: change default to disabled (#4101)
It was enabled by default, but it's mostly only needed for CJK users.
Furthermore, when floating punctuation is enabled, some rendering
issues exist (text right alignment, variable margins...) that
only CJK developpers could really fix. So, best to disable it and
avoid these rendering issues for most users.

Also: fix CoverBrowser crash when "Delete cache database"
followed by "Prune cache of removed books".
2018-07-24 21:01:45 +02:00

102 lines
3.9 KiB
Lua

describe("Readertoc module", function()
local DocumentRegistry, ReaderUI, DEBUG
local readerui, toc, toc_max_depth, title
setup(function()
require("commonrequire")
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),
}
-- reset book to first page
readerui.rolling:onGotoPage(0)
toc = readerui.toc
end)
it("should get max toc depth", function()
toc_max_depth = toc:getMaxDepth()
assert.are.same(2, toc_max_depth)
end)
it("should get toc title from page", function()
title = toc:getTocTitleByPage(49)
DEBUG("toc", toc.toc)
assert(title == "SCENE V. A hall in Capulet's house.")
title = toc:getTocTitleByPage(143)
assert(title == "SCENE I. Friar Laurence's cell.")
end)
describe("getTocTicks API", function()
local ticks_level_0 = nil
it("should get ticks of level 0", function()
ticks_level_0 = toc:getTocTicks(0)
--DEBUG("ticks", ticks_level_0)
assert.are.same(28, #ticks_level_0)
end)
local ticks_level_1 = nil
it("should get ticks of level 1", function()
ticks_level_1 = toc:getTocTicks(1)
assert.are.same(7, #ticks_level_1)
end)
local ticks_level_2 = nil
it("should get ticks of level 2", function()
ticks_level_2 = toc:getTocTicks(2)
assert.are.same(26, #ticks_level_2)
end)
local ticks_level_m1 = nil
it("should get ticks of level -1", function()
ticks_level_m1 = toc:getTocTicks(-1)
assert.are.same(26, #ticks_level_m1)
end)
it("should get the same ticks of level -1 and level 2", function()
if toc_max_depth == 2 then
assert.are.same(ticks_level_2, ticks_level_m1)
end
end)
end)
it("should get page of next chapter", function()
assert.truthy(toc:getNextChapter(10, 0) > 10)
assert.truthy(toc:getNextChapter(100, 0) > 100)
assert.are.same(nil, toc:getNextChapter(200, 0))
end)
it("should get page of previous chapter", function()
assert.truthy(toc:getPreviousChapter(10, 0) < 10)
assert.truthy(toc:getPreviousChapter(100, 0) < 100)
assert.truthy(toc:getPreviousChapter(200, 0) < 200)
end)
it("should get page left of chapter", function()
assert.truthy(toc:getChapterPagesLeft(10, 0) > 10)
assert.truthy(toc:getChapterPagesLeft(92, 0) > 10)
assert.are.same(nil, toc:getChapterPagesLeft(200, 0))
end)
it("should get page done of chapter", function()
assert.truthy(toc:getChapterPagesDone(12, 0) < 5)
assert.truthy(toc:getChapterPagesDone(95, 0) < 5)
assert.truthy(toc:getChapterPagesDone(204, 0) > 10)
end)
describe("collasible TOC", function()
it("should collapse the secondary toc nodes by default", function()
toc:onShowToc()
assert.are.same(7, #toc.collapsed_toc)
end)
it("should not expand toc nodes that have no child nodes", function()
toc:expandToc(2)
assert.are.same(7, #toc.collapsed_toc)
end)
it("should expand toc nodes that have child nodes", function()
toc:expandToc(3)
assert.are.same(13, #toc.collapsed_toc)
toc:expandToc(18)
assert.are.same(18, #toc.collapsed_toc)
end)
it("should collapse toc nodes that have been expanded", function()
toc:collapseToc(3)
assert.are.same(12, #toc.collapsed_toc)
toc:collapseToc(18)
assert.are.same(7, #toc.collapsed_toc)
end)
end)
end)