mirror of
https://github.com/crystalidea/qt6windows7.git
synced 2025-07-04 16:25:27 +08:00
qt 6.5.1 original
This commit is contained in:
52
tests/auto/cmake/tst_qaddpreroutine/CMakeLists.txt
Normal file
52
tests/auto/cmake/tst_qaddpreroutine/CMakeLists.txt
Normal file
@ -0,0 +1,52 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## tst_qaddpreroutine Test:
|
||||
#####################################################################
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
if(DEFINED CMAKE_Core_MODULE_MAJOR_VERSION)
|
||||
set(project_version "${CMAKE_Core_MODULE_MAJOR_VERSION}.\
|
||||
${CMAKE_Core_MODULE_MINOR_VERSION}.${CMAKE_Core_MODULE_PATCH_VERSION}"
|
||||
)
|
||||
else()
|
||||
set(project_version "6.0.0")
|
||||
endif()
|
||||
|
||||
project(tst_qaddpreroutine
|
||||
LANGUAGES CXX
|
||||
VERSION "${project_version}"
|
||||
)
|
||||
|
||||
find_package(Qt6 COMPONENTS Core BuildInternals CONFIG REQUIRED)
|
||||
qt_prepare_standalone_project()
|
||||
|
||||
find_package(Qt6 COMPONENTS Gui Test CONFIG REQUIRED)
|
||||
|
||||
qt_internal_add_plugin(QTBUG_90341ThemePlugin
|
||||
NO_UNITY_BUILD
|
||||
OUTPUT_NAME QTBUG_90341
|
||||
OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
|
||||
CLASS_NAME ThemePlugin
|
||||
PLUGIN_TYPE platformthemes
|
||||
DEFAULT_IF TRUE
|
||||
SOURCES
|
||||
plugin.cpp
|
||||
SKIP_INSTALL
|
||||
LIBRARIES
|
||||
Qt::Core
|
||||
Qt::Gui
|
||||
Qt::GuiPrivate
|
||||
)
|
||||
|
||||
qt_internal_add_test(tst_qaddpreroutine
|
||||
SOURCES
|
||||
tst_qaddpreroutine.cpp
|
||||
LIBRARIES
|
||||
Qt::Gui
|
||||
)
|
||||
|
||||
|
||||
target_compile_definitions(tst_qaddpreroutine
|
||||
PRIVATE QT_QPA_PLATFORM_PLUGIN_PATH=\"${CMAKE_BINARY_DIR}\")
|
45
tests/auto/cmake/tst_qaddpreroutine/plugin.cpp
Normal file
45
tests/auto/cmake/tst_qaddpreroutine/plugin.cpp
Normal file
@ -0,0 +1,45 @@
|
||||
// Copyright (C) 2021 zccrs <zccrs@live.com>, JiDe Zhang <zhangjide@uniontech.com>.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <qpa/qplatformthemeplugin.h>
|
||||
#include <qpa/qplatformtheme.h>
|
||||
#include <QCoreApplication>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
// The "test_function_call_count" property will be used in the "tst_qaddpreroutine.cpp".
|
||||
// This plugin is part of the test case. It is used to call qAddPreRoutine through
|
||||
// Q_COREAPP_STARTUP_FUNCTION on the plugin loading. Please treat it as a whole
|
||||
// with "tst_qaddpreroutine.cpp".
|
||||
static void test()
|
||||
{
|
||||
Q_ASSERT(qApp != nullptr);
|
||||
int call_count = qApp->property("test_function_call_count").toInt();
|
||||
// Record the number of times A is called, in this example, it should be called only once.
|
||||
qApp->setProperty("test_function_call_count", call_count + 1);
|
||||
}
|
||||
Q_COREAPP_STARTUP_FUNCTION(test)
|
||||
|
||||
class ThemePlugin : public QPlatformThemePlugin
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PLUGIN_METADATA(IID QPlatformThemeFactoryInterface_iid FILE "plugin.json")
|
||||
|
||||
public:
|
||||
QPlatformTheme *create(const QString &key, const QStringList ¶ms) override;
|
||||
};
|
||||
|
||||
QPlatformTheme *ThemePlugin::create(const QString &key, const QStringList ¶ms)
|
||||
{
|
||||
Q_UNUSED(key)
|
||||
Q_UNUSED(params);
|
||||
|
||||
// Used to verify whether this plugin was successfully loaded.
|
||||
qputenv("QTBUG_90341_ThemePlugin", "1");
|
||||
|
||||
return new QPlatformTheme();
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#include "plugin.moc"
|
3
tests/auto/cmake/tst_qaddpreroutine/plugin.json
Normal file
3
tests/auto/cmake/tst_qaddpreroutine/plugin.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"Keys": ["QTBUG_90341"]
|
||||
}
|
44
tests/auto/cmake/tst_qaddpreroutine/tst_qaddpreroutine.cpp
Normal file
44
tests/auto/cmake/tst_qaddpreroutine/tst_qaddpreroutine.cpp
Normal file
@ -0,0 +1,44 @@
|
||||
// Copyright (C) 2021 zccrs <zccrs@live.com>, JiDe Zhang <zhangjide@uniontech.com>.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <QTest>
|
||||
#include <QGuiApplication>
|
||||
|
||||
class tst_qAddPreRoutine : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
static void initMain()
|
||||
{
|
||||
// The purpose of this use case is indeed to test "qAddPreRoutine", but
|
||||
// as you can see, there is nowhere to call "qAddPreRoutine". Please see
|
||||
// the following two lines of code, which set the "QT_QPA_PLATFORM_PLUGIN_PATH"
|
||||
// and "QT_QPA_PLATFORMTHEME" environment variables that a new platform
|
||||
// theme plugin will be loaded, and the Q_COREAPP_STARTUP_FUNCTION macro
|
||||
// is used in this plugin, which will cause "qAddPreRoutine" to be called
|
||||
// indirectly in the Q*Application class when load the platform theme plugin.
|
||||
// See the "plugin.cpp" file.
|
||||
#ifndef Q_OS_ANDROID // The plug-in is in the apk package, no need to specify its directory
|
||||
qputenv("QT_QPA_PLATFORM_PLUGIN_PATH", QT_QPA_PLATFORM_PLUGIN_PATH);
|
||||
#endif
|
||||
qputenv("QT_QPA_PLATFORMTHEME", "QTBUG_90341");
|
||||
}
|
||||
|
||||
private slots:
|
||||
void tst_QTBUG_90341()
|
||||
{
|
||||
#ifdef Q_OS_ANDROID
|
||||
QSKIP("Android can't load the platform theme plugin this test needs, see QTBUG-92893");
|
||||
#endif
|
||||
QVERIFY2(qEnvironmentVariableIsSet("QTBUG_90341_ThemePlugin"),
|
||||
"The \"QTBUG_90341\" theme plugin not loaded.");
|
||||
// This "test_function_call_count" property is assigned in the "QTBUG_90341" plugin.
|
||||
// See the "plugin.cpp" file.
|
||||
QCOMPARE(qApp->property("test_function_call_count").toInt(), 1);
|
||||
}
|
||||
};
|
||||
|
||||
QTEST_MAIN(tst_qAddPreRoutine)
|
||||
|
||||
#include "tst_qaddpreroutine.moc"
|
Reference in New Issue
Block a user