diff --git a/tests/mainshelltest.cpp b/tests/mainshelltest.cpp index 766f017a6..448ec456a 100644 --- a/tests/mainshelltest.cpp +++ b/tests/mainshelltest.cpp @@ -69,6 +69,8 @@ private slots: void testShell_data(); void testShell(); + void testFileRemembersPagePosition_data(); + void testFileRemembersPagePosition(); void testUnique2FilesError(); private: @@ -373,6 +375,73 @@ void ClosePrintDialogHelper::closePrintDialog() foundDialog = true; } +void MainShellTest::testFileRemembersPagePosition_data() +{ + QTest::addColumn("mode"); + + QTest::newRow("normal") << 1; + QTest::newRow("unique") << 2; + QTest::newRow("tabs") << 3; +} + +void MainShellTest::testFileRemembersPagePosition() +{ + QFETCH(int, mode); + + const QStringList paths = QStringList(KDESRCDIR "data/contents.epub"); + QString serializedOptions; + if (mode == 1 || mode == 3) + serializedOptions = ShellUtils::serializeOptions(false, false, false, false, QString()); + else + serializedOptions = ShellUtils::serializeOptions(false, false, true, false, QString()); + + Okular::Settings::self()->setShellOpenFileInTabs(mode == 3); + + Okular::Status status = Okular::main(paths, serializedOptions); + QCOMPARE(status, Okular::Success); + Shell *s = findShell(); + QVERIFY(s); + Okular::Part *part = s->findChild(); + QVERIFY(part); + QCOMPARE(part->url().url(), QString("file://%1").arg(paths[0])); + QCOMPARE(partDocument(part)->currentPage(), 0u); + partDocument(part)->setViewportPage(3); + QCOMPARE(partDocument(part)->currentPage(), 3u); + s->closeUrl(); + QCOMPARE(part->url().url(), QString()); + + if (mode == 1) + { + delete s; + status = Okular::main(paths, serializedOptions); + QCOMPARE(status, Okular::Success); + } + else + { + QProcess p; + QString command = "okular " + paths[0] ; + if (mode == 2) + command += " -unique"; + p.start(command); + p.waitForStarted(); + QCOMPARE(p.state(), QProcess::Running); + + // It is attaching to us, so will eventually stop + for (int i = 0; p.state() != QProcess::NotRunning && i < 20; ++i) { + QTest::qWait(100); + } + QCOMPARE(p.state(), QProcess::NotRunning); + QCOMPARE(p.exitStatus(), QProcess::NormalExit); + QCOMPARE(p.exitCode(), 0); + } + s = findShell(); + QVERIFY(s); + part = s->findChild(); + QVERIFY(part); + QCOMPARE(part->url().url(), QString("file://%1").arg(paths[0])); + QCOMPARE(partDocument(part)->currentPage(), 3u); +} + void MainShellTest::testUnique2FilesError() { QStringList paths;