File indexing completed on 2024-03-24 04:46:44
0001 #include <libsnore/snore.h> 0002 #include <libsnore/snore_p.h> 0003 #include <libsnore/utils.h> 0004 #include <libsnore/snoreconstants.h> 0005 0006 #include <QTextDocument> 0007 0008 #include <QtTest> 0009 0010 using namespace Snore; 0011 0012 class DisplayTest : public QObject 0013 { 0014 Q_OBJECT 0015 public: 0016 DisplayTest(): 0017 app(QStringLiteral("Test"), Icon::defaultIcon()) 0018 { 0019 SnoreCore &instance = SnoreCore::instance(); 0020 instance.loadPlugins(SnorePlugin::Backend); 0021 instance.setSettingsValue(Snore::Constants::SettingsKeys::Timeout, 10); 0022 SnoreCore::instance().registerApplication(app); 0023 } 0024 0025 Application app; 0026 0027 private Q_SLOTS: 0028 void displayTest(); 0029 void displayTestPlain(); 0030 0031 private: 0032 void testString(const QStringList &messages) 0033 { 0034 SnoreCore &snore = SnoreCore::instance(); 0035 #if 0 0036 qDebug() << snore.pluginNames(SnorePlugin::Backend); 0037 QStringList backends({QStringLiteral("Snore")}); 0038 #else 0039 QStringList backends = snore.pluginNames(SnorePlugin::Backend); 0040 #endif 0041 auto notify = [&backends, &snore, &messages, this](Notification n) { 0042 qDebug() << n << "closed"; 0043 qDebug() << backends.size(); 0044 if (backends.empty()) { 0045 return; 0046 } 0047 QString old = snore.primaryNotificationBackend(); 0048 while (!backends.empty() && snore.primaryNotificationBackend() == old) { 0049 QString p = backends.takeLast(); 0050 snore.setSettingsValue(Snore::Constants::SettingsKeys::PrimaryBackend, p); 0051 SnoreCorePrivate::instance()->syncSettings(); 0052 if (snore.primaryNotificationBackend() == p) { 0053 for (const auto &message : messages) { 0054 snore.broadcastNotification(Notification(app, app.defaultAlert(), QStringLiteral("Title"), message, app.icon())); 0055 } 0056 } 0057 } 0058 }; 0059 auto con = connect(&snore, &SnoreCore::notificationClosed, notify); 0060 notify(Notification()); 0061 while (!backends.empty()) { 0062 QTest::qWait(100); 0063 } 0064 QTest::qWait(10000); 0065 disconnect(con); 0066 } 0067 }; 0068 0069 void DisplayTest::displayTest() 0070 { 0071 app.hints().setValue("use-markup", true); 0072 testString({QStringLiteral("<b>TestΩ</b>💩😀"), 0073 QString::fromUtf8("😀<b>💩TestΩ</b>💩😀")}); 0074 } 0075 0076 void DisplayTest::displayTestPlain() 0077 { 0078 app.hints().setValue("use-markup", false); 0079 testString({QString::fromWCharArray(L"Test\u03A9\U0001F4A9\U0001F600"), 0080 QString::fromUtf8("TestΩ💩😀")}); 0081 } 0082 0083 QTEST_MAIN(DisplayTest) 0084 0085 #include "display_test.moc"