diff options
author | Ashod Nakashian <ashod.nakashian@collabora.co.uk> | 2016-04-23 09:21:00 -0400 |
---|---|---|
committer | Ashod Nakashian <ashnakash@gmail.com> | 2016-05-08 15:45:00 +0000 |
commit | ace0b3bdec391aa170fe95c16a1a5d4a07d052df (patch) | |
tree | dcd37afd68214e0b6972add9a75d5c7a205bc39e /desktop | |
parent | 7c775c157693b076b014104b3548d202e0267895 (diff) |
Test desktop notification compression
Reviewed-on: https://gerrit.libreoffice.org/24314
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Tested-by: Ashod Nakashian <ashnakash@gmail.com>
(cherry picked from commit bb52a54aa49cbb75820f8ddbfc8e9e94b63281cd)
Change-Id: Ibb9a62bb5e1500a068c24346d6d433012a1bc7dd
Reviewed-on: https://gerrit.libreoffice.org/24378
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>
Diffstat (limited to 'desktop')
-rw-r--r-- | desktop/qa/desktop_lib/test_desktop_lib.cxx | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/desktop/qa/desktop_lib/test_desktop_lib.cxx b/desktop/qa/desktop_lib/test_desktop_lib.cxx index 5ad6c0df8275..46dde9ff6d99 100644 --- a/desktop/qa/desktop_lib/test_desktop_lib.cxx +++ b/desktop/qa/desktop_lib/test_desktop_lib.cxx @@ -90,6 +90,7 @@ public: void testContextMenuCalc(); void testContextMenuWriter(); void testContextMenuImpress(); + void testNotificationCompression(); CPPUNIT_TEST_SUITE(DesktopLOKTest); CPPUNIT_TEST(testGetStyles); @@ -115,6 +116,7 @@ public: CPPUNIT_TEST(testContextMenuCalc); CPPUNIT_TEST(testContextMenuWriter); CPPUNIT_TEST(testContextMenuImpress); + CPPUNIT_TEST(testNotificationCompression); CPPUNIT_TEST_SUITE_END(); uno::Reference<lang::XComponent> mxComponent; @@ -1263,6 +1265,58 @@ void DesktopLOKTest::testContextMenuImpress() comphelper::LibreOfficeKit::setActive(false); } +static void callbackCompressionTest(const int type, const char* payload, void* data) +{ + std::vector<std::tuple<int, std::string>>* notifs = reinterpret_cast<std::vector<std::tuple<int, std::string>>*>(data); + notifs->emplace_back(type, std::string(payload ? payload : "(nil)")); +} + +void DesktopLOKTest::testNotificationCompression() +{ + std::vector<std::tuple<int, std::string>> notifs; + std::unique_ptr<CallbackFlushHandler> handler(new CallbackFlushHandler(callbackCompressionTest, ¬ifs)); + + handler->queue(LOK_CALLBACK_INVALIDATE_VISIBLE_CURSOR, ""); // 0 + handler->queue(LOK_CALLBACK_TEXT_SELECTION, "15 25 15 10"); // 1 + handler->queue(LOK_CALLBACK_INVALIDATE_VISIBLE_CURSOR, ""); // Should be dropped. + handler->queue(LOK_CALLBACK_INVALIDATE_TILES, "15 25 15 10"); // 2 + handler->queue(LOK_CALLBACK_TEXT_SELECTION, "15 25 15 10"); // Should be dropped. + handler->queue(LOK_CALLBACK_TEXT_SELECTION, ""); // 3 + handler->queue(LOK_CALLBACK_STATE_CHANGED, ""); // 4 + handler->queue(LOK_CALLBACK_STATE_CHANGED, ".uno:Bold"); // 5 + handler->queue(LOK_CALLBACK_STATE_CHANGED, ""); // 6 + handler->queue(LOK_CALLBACK_INVALIDATE_TILES, "15 25 15 10"); // 7 + handler->queue(LOK_CALLBACK_INVALIDATE_TILES, "15 25 15 10"); // Should be dropped. + + Scheduler::ProcessEventsToIdle(); + + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(8), notifs.size()); + + CPPUNIT_ASSERT_EQUAL((int)LOK_CALLBACK_INVALIDATE_VISIBLE_CURSOR, (int)std::get<0>(notifs[0])); + CPPUNIT_ASSERT_EQUAL(std::string(""), std::get<1>(notifs[0])); + + CPPUNIT_ASSERT_EQUAL((int)LOK_CALLBACK_TEXT_SELECTION, (int)std::get<0>(notifs[1])); + CPPUNIT_ASSERT_EQUAL(std::string("15 25 15 10"), std::get<1>(notifs[1])); + + CPPUNIT_ASSERT_EQUAL((int)LOK_CALLBACK_INVALIDATE_TILES, (int)std::get<0>(notifs[2])); + CPPUNIT_ASSERT_EQUAL(std::string("15 25 15 10"), std::get<1>(notifs[2])); + + CPPUNIT_ASSERT_EQUAL((int)LOK_CALLBACK_TEXT_SELECTION, (int)std::get<0>(notifs[3])); + CPPUNIT_ASSERT_EQUAL(std::string(""), std::get<1>(notifs[3])); + + CPPUNIT_ASSERT_EQUAL((int)LOK_CALLBACK_STATE_CHANGED, (int)std::get<0>(notifs[4])); + CPPUNIT_ASSERT_EQUAL(std::string(""), std::get<1>(notifs[4])); + + CPPUNIT_ASSERT_EQUAL((int)LOK_CALLBACK_STATE_CHANGED, (int)std::get<0>(notifs[5])); + CPPUNIT_ASSERT_EQUAL(std::string(".uno:Bold"), std::get<1>(notifs[5])); + + CPPUNIT_ASSERT_EQUAL((int)LOK_CALLBACK_STATE_CHANGED, (int)std::get<0>(notifs[6])); + CPPUNIT_ASSERT_EQUAL(std::string(""), std::get<1>(notifs[6])); + + CPPUNIT_ASSERT_EQUAL((int)LOK_CALLBACK_INVALIDATE_TILES, (int)std::get<0>(notifs[7])); + CPPUNIT_ASSERT_EQUAL(std::string("15 25 15 10"), std::get<1>(notifs[7])); +} + CPPUNIT_TEST_SUITE_REGISTRATION(DesktopLOKTest); CPPUNIT_PLUGIN_IMPLEMENT(); |