From d0ca04c48dd6779a5c73dc76da1909043cbecc2e Mon Sep 17 00:00:00 2001 From: Benoit Pierre Date: Thu, 9 May 2024 01:52:18 +0200 Subject: [PATCH] tests/readerlink: reorganize Group tests by file type (EPUB or PDF). --- spec/unit/readerlink_spec.lua | 352 +++++++++++++++++----------------- 1 file changed, 180 insertions(+), 172 deletions(-) diff --git a/spec/unit/readerlink_spec.lua b/spec/unit/readerlink_spec.lua index f181c9d13..d520e9475 100644 --- a/spec/unit/readerlink_spec.lua +++ b/spec/unit/readerlink_spec.lua @@ -14,185 +14,193 @@ describe("ReaderLink module", function() sample_pdf = "spec/front/unit/data/paper.pdf" end) - it("should jump to links in epub #nocov", function() - local readerui = ReaderUI:new{ - dimen = Screen:getSize(), - document = DocumentRegistry:openDocument(sample_epub), - } - readerui.rolling:onGotoPage(5) - readerui.link:onTap(nil, {pos = {x = 320, y = 190}}) - assert.is.same(37, readerui.rolling.current_page) - readerui:closeDocument() - readerui:onClose() - end) + describe("with epub", function() - it("should jump to links in pdf page mode", function() - UIManager:quit() - UIManager._exit_code = nil - local readerui = ReaderUI:new{ - dimen = Screen:getSize(), - document = DocumentRegistry:openDocument(sample_pdf), - } - readerui:handleEvent(Event:new("SetScrollMode", false)) - readerui:handleEvent(Event:new("SetZoomMode", "page")) - readerui.paging:onGotoPage(1) - readerui.link:onTap(nil, {pos = {x = 363, y = 565}}) - UIManager:run() - assert.is.same(22, readerui.paging.current_page) - readerui:closeDocument() - readerui:onClose() - end) + it("should jump to links #nocov", function() + local readerui = ReaderUI:new{ + dimen = Screen:getSize(), + document = DocumentRegistry:openDocument(sample_epub), + } + readerui.rolling:onGotoPage(5) + readerui.link:onTap(nil, {pos = {x = 320, y = 190}}) + assert.is.same(37, readerui.rolling.current_page) + readerui:closeDocument() + readerui:onClose() + end) - it("should jump to links in pdf scroll mode", function() - UIManager:quit() - UIManager._exit_code = nil - local readerui = ReaderUI:new{ - dimen = Screen:getSize(), - document = DocumentRegistry:openDocument(sample_pdf), - } - readerui:handleEvent(Event:new("SetScrollMode", true)) - readerui:handleEvent(Event:new("SetZoomMode", "page")) - readerui.paging:onGotoPage(1) - assert.is.same(1, readerui.paging.current_page) - readerui.link:onTap(nil, {pos = {x = 228, y = 534}}) - UIManager:run() - -- its really hard to get the exact page number in scroll mode - -- page positions may have unexpected impact on page number - assert.truthy(readerui.paging.current_page == 21 - or readerui.paging.current_page == 20) - readerui:closeDocument() - readerui:onClose() - end) + it("should be able to go back after link jump #nocov", function() + local readerui = ReaderUI:new{ + dimen = Screen:getSize(), + document = DocumentRegistry:openDocument(sample_epub), + } + readerui.rolling:onGotoPage(5) + readerui.link:onTap(nil, {pos = {x = 320, y = 190}}) + assert.is.same(37, readerui.rolling.current_page) + readerui.link:onGoBackLink() + assert.is.same(5, readerui.rolling.current_page) + readerui:closeDocument() + readerui:onClose() + end) - it("should be able to go back after link jump in epub #nocov", function() - local readerui = ReaderUI:new{ - dimen = Screen:getSize(), - document = DocumentRegistry:openDocument(sample_epub), - } - readerui.rolling:onGotoPage(5) - readerui.link:onTap(nil, {pos = {x = 320, y = 190}}) - assert.is.same(37, readerui.rolling.current_page) - readerui.link:onGoBackLink() - assert.is.same(5, readerui.rolling.current_page) - readerui:closeDocument() - readerui:onClose() end) - it("should be able to go back after link jump in pdf page mode", function() - UIManager:quit() - UIManager._exit_code = nil - local readerui = ReaderUI:new{ - dimen = Screen:getSize(), - document = DocumentRegistry:openDocument(sample_pdf), - } - readerui:handleEvent(Event:new("SetScrollMode", false)) - readerui:handleEvent(Event:new("SetZoomMode", "page")) - readerui.paging:onGotoPage(1) - readerui.link:onTap(nil, {pos = {x = 363, y = 565}}) - UIManager:run() - assert.is.same(22, readerui.paging.current_page) - readerui.link:onGoBackLink() - assert.is.same(1, readerui.paging.current_page) - readerui:closeDocument() - readerui:onClose() - end) + describe("with pdf", function() - it("should be able to go back after link jump in pdf scroll mode", function() - UIManager:quit() - UIManager._exit_code = nil - local readerui = ReaderUI:new{ - dimen = Screen:getSize(), - document = DocumentRegistry:openDocument(sample_pdf), - } - readerui:handleEvent(Event:new("SetScrollMode", true)) - readerui:handleEvent(Event:new("SetZoomMode", "page")) - readerui.paging:onGotoPage(1) - assert.is.same(1, readerui.paging.current_page) - readerui.link:onTap(nil, {pos = {x = 228, y = 534}}) - UIManager:run() - assert.truthy(readerui.paging.current_page == 21 - or readerui.paging.current_page == 20) - readerui.link:onGoBackLink() - assert.is.same(1, readerui.paging.current_page) - readerui:closeDocument() - readerui:onClose() - end) + it("should jump to links in page mode", function() + UIManager:quit() + UIManager._exit_code = nil + local readerui = ReaderUI:new{ + dimen = Screen:getSize(), + document = DocumentRegistry:openDocument(sample_pdf), + } + readerui:handleEvent(Event:new("SetScrollMode", false)) + readerui:handleEvent(Event:new("SetZoomMode", "page")) + readerui.paging:onGotoPage(1) + readerui.link:onTap(nil, {pos = {x = 363, y = 565}}) + UIManager:run() + assert.is.same(22, readerui.paging.current_page) + readerui:closeDocument() + readerui:onClose() + end) - it("should be able to go back to the same position after link jump in pdf scroll mode", function() - UIManager:quit() - UIManager._exit_code = nil - local expected_page_states = { - { - gamma = 1, - offset = {x = 17, y = 0}, - page = 3, - page_area = { - x = 0, y = 0, - h = 800, w = 566, - }, - rotation = 0, - visible_area = { - x = 0, y = 694, - h = 106, w = 566, - }, - zoom = 0.95032191328269044472, - }, - { - gamma = 1, - offset = {x = 17, y = 0}, - page = 4, - page_area = { - h = 800, w = 566, - x = 0, y = 0, - }, - rotation = 0, - visible_area = { - h = 686, w = 566, - x = 0, y = 0, + it("should jump to links in scroll mode", function() + UIManager:quit() + UIManager._exit_code = nil + local readerui = ReaderUI:new{ + dimen = Screen:getSize(), + document = DocumentRegistry:openDocument(sample_pdf), + } + readerui:handleEvent(Event:new("SetScrollMode", true)) + readerui:handleEvent(Event:new("SetZoomMode", "page")) + readerui.paging:onGotoPage(1) + assert.is.same(1, readerui.paging.current_page) + readerui.link:onTap(nil, {pos = {x = 228, y = 534}}) + UIManager:run() + -- its really hard to get the exact page number in scroll mode + -- page positions may have unexpected impact on page number + assert.truthy(readerui.paging.current_page == 21 + or readerui.paging.current_page == 20) + readerui:closeDocument() + readerui:onClose() + end) + + it("should be able to go back after link jump in page mode", function() + UIManager:quit() + UIManager._exit_code = nil + local readerui = ReaderUI:new{ + dimen = Screen:getSize(), + document = DocumentRegistry:openDocument(sample_pdf), + } + readerui:handleEvent(Event:new("SetScrollMode", false)) + readerui:handleEvent(Event:new("SetZoomMode", "page")) + readerui.paging:onGotoPage(1) + readerui.link:onTap(nil, {pos = {x = 363, y = 565}}) + UIManager:run() + assert.is.same(22, readerui.paging.current_page) + readerui.link:onGoBackLink() + assert.is.same(1, readerui.paging.current_page) + readerui:closeDocument() + readerui:onClose() + end) + + it("should be able to go back after link jump in scroll mode", function() + UIManager:quit() + UIManager._exit_code = nil + local readerui = ReaderUI:new{ + dimen = Screen:getSize(), + document = DocumentRegistry:openDocument(sample_pdf), + } + readerui:handleEvent(Event:new("SetScrollMode", true)) + readerui:handleEvent(Event:new("SetZoomMode", "page")) + readerui.paging:onGotoPage(1) + assert.is.same(1, readerui.paging.current_page) + readerui.link:onTap(nil, {pos = {x = 228, y = 534}}) + UIManager:run() + assert.truthy(readerui.paging.current_page == 21 + or readerui.paging.current_page == 20) + readerui.link:onGoBackLink() + assert.is.same(1, readerui.paging.current_page) + readerui:closeDocument() + readerui:onClose() + end) + + it("should be able to go back to the same position after link jump in scroll mode", function() + UIManager:quit() + UIManager._exit_code = nil + local expected_page_states = { + { + gamma = 1, + offset = {x = 17, y = 0}, + page = 3, + page_area = { + x = 0, y = 0, + h = 800, w = 566, + }, + rotation = 0, + visible_area = { + x = 0, y = 694, + h = 106, w = 566, + }, + zoom = 0.95032191328269044472, + }, + { + gamma = 1, + offset = {x = 17, y = 0}, + page = 4, + page_area = { + h = 800, w = 566, + x = 0, y = 0, + }, + rotation = 0, + visible_area = { + h = 686, w = 566, + x = 0, y = 0, + }, + zoom = 0.95032191328269044472, }, - zoom = 0.95032191328269044472, - }, - } - -- disable footer - G_reader_settings:saveSetting("reader_footer_mode", 0) - require("docsettings"):open(sample_pdf):purge() - local readerui = ReaderUI:new{ - dimen = Screen:getSize(), - document = DocumentRegistry:openDocument(sample_pdf), - } - readerui:handleEvent(Event:new("SetZoomMode", "page")) - assert.is.falsy(readerui.view.footer_visible) - readerui.paging:onGotoPage(1) - assert.is.same(1, readerui.paging.current_page) - readerui.view:onSetScrollMode(true) - assert.is.same(true, readerui.view.page_scroll) - assert.is.same(1, readerui.paging.current_page) - - readerui.paging:onGotoViewRel(1) - assert.is.same(2, readerui.paging.current_page) - - readerui.paging:onGotoViewRel(-1) - assert.is.same(1, readerui.paging.current_page) - - readerui.paging:onGotoViewRel(1) - readerui.paging:onGotoViewRel(1) - assert.is.same(3, readerui.paging.current_page) - - readerui.paging:onGotoViewRel(-1) - assert.is.same(2, readerui.paging.current_page) - - readerui.paging:onGotoViewRel(1) - readerui.paging:onGotoViewRel(1) - assert.is.same(4, readerui.paging.current_page) - assert.are.same(expected_page_states, readerui.view.page_states) - - readerui.link:onTap(nil, {pos = {x = 164, y = 366}}) - UIManager:run() - assert.is.same(22, readerui.paging.current_page) - readerui.link:onGoBackLink() - assert.is.same(3, readerui.paging.current_page) - assert.are.same(expected_page_states, readerui.view.page_states) - readerui:closeDocument() - readerui:onClose() + } + -- disable footer + G_reader_settings:saveSetting("reader_footer_mode", 0) + require("docsettings"):open(sample_pdf):purge() + local readerui = ReaderUI:new{ + dimen = Screen:getSize(), + document = DocumentRegistry:openDocument(sample_pdf), + } + readerui:handleEvent(Event:new("SetZoomMode", "page")) + assert.is.falsy(readerui.view.footer_visible) + readerui.paging:onGotoPage(1) + assert.is.same(1, readerui.paging.current_page) + readerui.view:onSetScrollMode(true) + assert.is.same(true, readerui.view.page_scroll) + assert.is.same(1, readerui.paging.current_page) + + readerui.paging:onGotoViewRel(1) + assert.is.same(2, readerui.paging.current_page) + + readerui.paging:onGotoViewRel(-1) + assert.is.same(1, readerui.paging.current_page) + + readerui.paging:onGotoViewRel(1) + readerui.paging:onGotoViewRel(1) + assert.is.same(3, readerui.paging.current_page) + + readerui.paging:onGotoViewRel(-1) + assert.is.same(2, readerui.paging.current_page) + + readerui.paging:onGotoViewRel(1) + readerui.paging:onGotoViewRel(1) + assert.is.same(4, readerui.paging.current_page) + assert.are.same(expected_page_states, readerui.view.page_states) + + readerui.link:onTap(nil, {pos = {x = 164, y = 366}}) + UIManager:run() + assert.is.same(22, readerui.paging.current_page) + readerui.link:onGoBackLink() + assert.is.same(3, readerui.paging.current_page) + assert.are.same(expected_page_states, readerui.view.page_states) + readerui:closeDocument() + readerui:onClose() + end) + end) end)