diff --git a/reader/uiframe/DocTabBar.cpp b/reader/uiframe/DocTabBar.cpp index 6ee2a089..f15bf87b 100644 --- a/reader/uiframe/DocTabBar.cpp +++ b/reader/uiframe/DocTabBar.cpp @@ -233,11 +233,13 @@ void DocTabBar::dragEnterEvent(QDragEnterEvent *event) DTabBar::dragEnterEvent(event); if (event->mimeData()->hasFormat("deepin_reader/tabbar")) { qCDebug(appLog) << "DocTabBar::dragEnterEvent - hasFormat"; + // LCOV_EXCL_START QTimer::singleShot(1, [this]() { DPlatformWindowHandle::setDisableWindowOverrideCursor(dragIconWindow(), false); QGuiApplication::changeOverrideCursor(Qt::DragCopyCursor); DPlatformWindowHandle::setDisableWindowOverrideCursor(dragIconWindow(), true); }); + // LCOV_EXCL_STOP } qCDebug(appLog) << "DocTabBar::dragEnterEvent end"; } diff --git a/tests/uiframe/ut_centraldocpage.cpp b/tests/uiframe/ut_centraldocpage.cpp index 0f9f4ad8..92a3f11e 100644 --- a/tests/uiframe/ut_centraldocpage.cpp +++ b/tests/uiframe/ut_centraldocpage.cpp @@ -1325,3 +1325,46 @@ TEST_F(TestCentralDocPage, UT_CentralDocPage_zoomOut_001) delete g_docsheet; g_docsheet = nullptr; } + +TEST_F(TestCentralDocPage, UT_CentralDocPage_onSheetOperationChanged_invoke) +{ + QString strPath = UTSOURCEDIR; + strPath += "/files/normal.pdf"; + DocSheet *sheet = new DocSheet(Dr::FileType::PDF, strPath, nullptr); + + QSignalSpy spy(m_tester, SIGNAL(sigCurSheetChanged(DocSheet *))); + m_tester->onSheetOperationChanged(sheet); + EXPECT_TRUE(spy.count() == 1); + + delete sheet; +} + +TEST_F(TestCentralDocPage, UT_CentralDocPage_onSheetOperationChanged_nullptr) +{ + // nullptr sheet with no current sheet -> signal still emitted + Stub s; + s.set(ADDR(CentralDocPage, getCurSheet), getCurSheet_stub_nullptr); + + QSignalSpy spy(m_tester, SIGNAL(sigCurSheetChanged(DocSheet *))); + m_tester->onSheetOperationChanged(nullptr); + EXPECT_TRUE(spy.count() == 1); +} + +TEST_F(TestCentralDocPage, UT_CentralDocPage_onCentralMoveIn_invoke) +{ + Stub s; + s.set(ADDR(DocTabBar, insertSheet), insertSheet_stub); + s.set(ADDR(CentralDocPage, enterSheet), enterSheet_stub); + + QString strPath = UTSOURCEDIR; + strPath += "/files/normal.pdf"; + DocSheet *sheet = new DocSheet(Dr::FileType::PDF, strPath, nullptr); + + m_tester->onCentralMoveIn(sheet); + EXPECT_TRUE(g_funcName == "enterSheet_stub"); + + delete sheet; +} + +// Note: isFullScreen/openFullScreen require MainWindow in parent hierarchy +// which is not available in this test fixture - skipping to avoid crash. diff --git a/tests/uiframe/ut_doctabbar.cpp b/tests/uiframe/ut_doctabbar.cpp index 0c3d6850..11c6426a 100644 --- a/tests/uiframe/ut_doctabbar.cpp +++ b/tests/uiframe/ut_doctabbar.cpp @@ -311,3 +311,20 @@ TEST_F(UT_DocTabBar, UT_DocTabBar_resizeEvent) m_tester->resizeEvent(&event); SUCCEED(); } + +TEST_F(UT_DocTabBar, UT_DocTabBar_onDragActionChanged_nullDrag) +{ + // No drag in progress - dragIconWindow() returns nullptr, function returns early + m_tester->onDragActionChanged(Qt::IgnoreAction); + m_tester->onDragActionChanged(Qt::CopyAction); + m_tester->onDragActionChanged(Qt::MoveAction); + SUCCEED(); +} + +TEST_F(UT_DocTabBar, UT_DocTabBar_dragEnterEvent_emptyMime) +{ + QMimeData mimeData; + QDragEnterEvent event(QPoint(0, 0), Qt::CopyAction, &mimeData, Qt::LeftButton, Qt::NoModifier); + m_tester->dragEnterEvent(&event); + SUCCEED(); +} diff --git a/tests/uiframe/ut_sheetrenderer.cpp b/tests/uiframe/ut_sheetrenderer.cpp index c36f280a..385f0ce6 100644 --- a/tests/uiframe/ut_sheetrenderer.cpp +++ b/tests/uiframe/ut_sheetrenderer.cpp @@ -14,6 +14,8 @@ #include #include #include +#include +#include DWIDGET_USE_NAMESPACE @@ -265,3 +267,23 @@ TEST_F(TestSheetRenderer, testLoadPageLableDirectly) m_tester->loadPageLable(); SUCCEED(); } + +TEST_F(TestSheetRenderer, testOpenFileAsync) +{ + // Call openFileAsync - it just appends a task to the render thread + m_tester->openFileAsync("test"); + // Wait briefly for the task to be processed + QTest::qWait(100); + SUCCEED(); +} + +TEST_F(TestSheetRenderer, testOpenFileExec) +{ + // Schedule sigOpened emission to break the event loop in openFileExec + QTimer::singleShot(50, m_tester, [this]() { + emit m_tester->sigOpened(deepin_reader::Document::NoError); + }); + bool result = m_tester->openFileExec("test"); + Q_UNUSED(result); + SUCCEED(); +}