mirror of
https://github.com/crystalidea/qt6windows7.git
synced 2025-07-04 16:25:27 +08:00
qt 6.6.0 clean
This commit is contained in:
@ -26,6 +26,7 @@ private Q_SLOTS:
|
||||
|
||||
void conversionMaintainsState() const;
|
||||
|
||||
void functorWithoutContext();
|
||||
void functorWithContextInThread();
|
||||
void receiverInThread();
|
||||
void destroyedContextObject();
|
||||
@ -145,6 +146,47 @@ void tst_QPermission::conversionMaintainsState() const
|
||||
}
|
||||
}
|
||||
|
||||
template <typename Func,
|
||||
typename T = std::void_t<decltype(qApp->requestPermission(std::declval<DummyPermission>(),
|
||||
std::declval<Func>()))>
|
||||
>
|
||||
void wrapRequestPermission(const QPermission &p, Func &&f)
|
||||
{
|
||||
qApp->requestPermission(p, std::forward<Func>(f));
|
||||
}
|
||||
|
||||
template <typename Functor>
|
||||
using CompatibleTest = decltype(wrapRequestPermission(std::declval<QPermission>(), std::declval<Functor>()));
|
||||
|
||||
|
||||
// Compile test for context-less functor overloads
|
||||
void tst_QPermission::functorWithoutContext()
|
||||
{
|
||||
int argc = 0;
|
||||
char *argv = nullptr;
|
||||
QCoreApplication app(argc, &argv);
|
||||
|
||||
DummyPermission dummy;
|
||||
#ifdef Q_OS_DARWIN
|
||||
QTest::ignoreMessage(QtWarningMsg, QRegularExpression(".*Could not find permission plugin for DummyPermission.*"));
|
||||
#endif
|
||||
|
||||
qApp->requestPermission(dummy, [](const QPermission &permission){
|
||||
QVERIFY(permission.value<DummyPermission>());
|
||||
});
|
||||
wrapRequestPermission(dummy, [](const QPermission &permission){
|
||||
QVERIFY(permission.value<DummyPermission>());
|
||||
});
|
||||
|
||||
auto compatible = [](const QPermission &) {};
|
||||
using Compatible = decltype(compatible);
|
||||
auto incompatible = [](const QString &) {};
|
||||
using Incompatible = decltype(incompatible);
|
||||
|
||||
static_assert(qxp::is_detected_v<CompatibleTest, Compatible>);
|
||||
static_assert(!qxp::is_detected_v<CompatibleTest, Incompatible>);
|
||||
}
|
||||
|
||||
void tst_QPermission::functorWithContextInThread()
|
||||
{
|
||||
int argc = 0;
|
||||
@ -209,6 +251,11 @@ void tst_QPermission::receiverInThread()
|
||||
|
||||
qApp->requestPermission(dummy, &receiver, &Receiver::handlePermission);
|
||||
QTRY_COMPARE(receiver.permissionReceiverThread, &receiverThread);
|
||||
|
||||
// compile tests: none of these work and the error output isn't horrible
|
||||
// qApp->requestPermission(dummy, &receiver, "&tst_QPermission::receiverInThread");
|
||||
// qApp->requestPermission(dummy, &receiver, &tst_QPermission::receiverInThread);
|
||||
// qApp->requestPermission(dummy, &receiver, &QObject::destroyed);
|
||||
}
|
||||
|
||||
void tst_QPermission::destroyedContextObject()
|
||||
|
Reference in New Issue
Block a user