dde-dock/tests/window/ut_mainwindow.cpp
2023-02-16 15:08:28 +08:00

221 lines
5.8 KiB
C++

// Copyright (C) 2018 ~ 2020 Uniontech Technology Co., Ltd.
// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#include <QObject>
#include <QThread>
#include <QTest>
#include <QSignalSpy>
#include <gtest/gtest.h>
#define private public
#include "mainwindow.h"
#undef private
using namespace ::testing;
class Test_MainWindow : public ::testing::Test
{
};
TEST_F(Test_MainWindow, onDbusNameOwnerChanged)
{
MainWindow window;
window.onDbusNameOwnerChanged("org.kde.StatusNotifierWatcher", "old", "new");
}
TEST_F(Test_MainWindow, compositeChanged)
{
MainWindow window;
window.compositeChanged();
ASSERT_TRUE(true);
}
TEST_F(Test_MainWindow, moveEvent)
{
MainWindow window;
QMouseEvent moveEvent(QEvent::MouseMove, QPointF(0, 0), Qt::LeftButton, Qt::LeftButton, Qt::ControlModifier);
window.mouseMoveEvent(&moveEvent);
ASSERT_TRUE(true);
}
TEST_F(Test_MainWindow, mousePressEvent)
{
// 显示菜单会阻塞住
// MainWindow window;
// QMouseEvent mousePressEvent(QEvent::MouseButtonPress, QPointF(0, 0), Qt::RightButton, Qt::RightButton, Qt::ControlModifier);
// window.mousePressEvent(&mousePressEvent);
ASSERT_TRUE(true);
}
TEST_F(Test_MainWindow, launch)
{
MainWindow window;
qApp->setProperty("CANSHOW", false);
window.launch();
qApp->setProperty("CANSHOW", true);
window.launch();
window.callShow();
ASSERT_TRUE(true);
}
TEST_F(Test_MainWindow, RegisterDdeSession)
{
MainWindow window;
window.RegisterDdeSession();
qputenv("DDE_SESSION_PROCESS_COOKIE_ID", "111");
window.RegisterDdeSession();
ASSERT_TRUE(true);
}
TEST_F(Test_MainWindow, adjustShadowMask)
{
MainWindow *window = new MainWindow;
window->RegisterDdeSession();
window->m_launched = true;
window->adjustShadowMask();
// window->onDbusNameOwnerChanged(SNI_WATCHER_SERVICE, "old", "new");
delete window;
}
TEST_F(Test_MainWindow, event_test)
{
MainWindow *window = new MainWindow;
QMouseEvent event4(QEvent::MouseMove, QPointF(0, 0), Qt::RightButton, Qt::RightButton, Qt::ControlModifier);
window->mouseMoveEvent(&event4);
QResizeEvent event5((QSize()), QSize());
window->resizeEvent(&event5);
QMimeData *data = new QMimeData;
data->setText("test");
QDragEnterEvent event9(QPoint(), Qt::DropAction::CopyAction, data, Qt::LeftButton, Qt::NoModifier);
window->dragEnterEvent(&event9);
QKeyEvent event11(QEvent::Type::KeyPress, Qt::Key_Escape, Qt::ControlModifier);
window->keyPressEvent(&event11);
QEnterEvent event12(QPointF(0.0, 0.0), QPointF(0.0, 0.0), QPointF(0.0, 0.0));
window->enterEvent(&event12);
data->deleteLater();
delete window;
}
TEST_F(Test_MainWindow, coverage_test)
{
MainWindow *window = new MainWindow;
window->resizeDockIcon();
window->adjustShadowMask();
window->resetDragWindow();
window->onMainWindowSizeChanged(QPoint(10, 10));
window->touchRequestResizeDock();
window->sendNotifications();
window->m_multiScreenWorker->m_hideMode = HideMode::SmartHide;
window->m_multiScreenWorker->m_hideState = HideState::Hide;
// window->callShow();
// window->m_multiScreenWorker->m_hideState = HideState::Show;
// window->callShow();
// window->m_multiScreenWorker->m_hideMode = HideMode::KeepShowing;
// window->callShow();
// window->m_multiScreenWorker->m_hideMode = HideMode::KeepHidden;
// window->callShow();
delete window;
}
TEST_F(Test_MainWindow, dragWidget_test)
{
DragWidget w;
ASSERT_FALSE(w.m_dragStatus);
QTest::mousePress(&w, Qt::LeftButton);
ASSERT_TRUE(w.m_dragStatus);
QMouseEvent event(QEvent::MouseMove, QPointF(0, 0), Qt::LeftButton, Qt::LeftButton, Qt::ControlModifier);
w.mouseMoveEvent(&event);
QTest::mouseRelease(&w, Qt::LeftButton);
ASSERT_FALSE(w.m_dragStatus);
ASSERT_EQ(w.objectName(), "DragWidget");
w.onTouchMove(1.0, 1.0);
QEvent enterEvent(QEvent::Enter);
w.enterEvent(&enterEvent);
QEvent leaveEvent(QEvent::Leave);
w.leaveEvent(&leaveEvent);
}
TEST_F(Test_MainWindow, test4)
{
MainWindow *window = new MainWindow;
MultiScreenWorker *worker = window->m_multiScreenWorker;
worker->reInitDisplayData();
worker->setStates(MultiScreenWorker::AutoHide, true);
worker->onAutoHideChanged(true);
QTest::qWait(510);
worker->dockRectWithoutScale("", Position::Top, HideMode::KeepShowing, DisplayMode::Fashion);
worker->dockRectWithoutScale("", Position::Top, HideMode::KeepHidden, DisplayMode::Fashion);
worker->dockRectWithoutScale("", Position::Top, HideMode::SmartHide, DisplayMode::Fashion);
worker->onWindowSizeChanged(1);
worker->onRequestUpdateMonitorInfo();
worker->setStates(MultiScreenWorker::LauncherDisplay, false);
worker->onRequestDelayShowDock();
worker->updateParentGeometry(QRect(), Position::Top);
worker->updateParentGeometry(QRect(), Position::Bottom);
worker->updateParentGeometry(QRect(), Position::Left);
worker->updateParentGeometry(QRect(), Position::Right);
worker->m_position = Position::Top;
worker->onRequestNotifyWindowManager();
worker->m_position = Position::Bottom;
worker->onRequestNotifyWindowManager();
worker->m_position = Position::Left;
worker->onRequestNotifyWindowManager();
worker->m_position = Position::Right;
worker->onRequestNotifyWindowManager();
worker->m_hideMode = HideMode::SmartHide;
worker->onExtralRegionMonitorChanged(0, 0, worker->m_registerKey);
worker->m_hideMode = HideMode::KeepHidden;
worker->onExtralRegionMonitorChanged(0, 0, worker->m_registerKey);
worker->m_hideMode = HideMode::KeepShowing;
worker->onExtralRegionMonitorChanged(0, 0, worker->m_registerKey);
ASSERT_TRUE(true);
delete window;
}