diff options
Diffstat (limited to 'desktop/qa/desktop_app/test_desktop_app.cxx')
-rw-r--r-- | desktop/qa/desktop_app/test_desktop_app.cxx | 56 |
1 files changed, 38 insertions, 18 deletions
diff --git a/desktop/qa/desktop_app/test_desktop_app.cxx b/desktop/qa/desktop_app/test_desktop_app.cxx index c800b2c1486a..9d8225e05812 100644 --- a/desktop/qa/desktop_app/test_desktop_app.cxx +++ b/desktop/qa/desktop_app/test_desktop_app.cxx @@ -47,6 +47,7 @@ public: class TestSupplier : public desktop::CommandLineArgs::Supplier { public: + TestSupplier(std::initializer_list<OUString> args) : m_args(args) {} virtual ~TestSupplier() {} virtual boost::optional< OUString > getCwdUrl() override { return boost::optional< OUString >(); } virtual bool next(OUString * argument) override { @@ -59,7 +60,6 @@ public: return false; } } - TestSupplier& operator << (const OUString& arg) { m_args.push_back(arg); return *this; } private: std::vector< OUString > m_args; std::vector< OUString >::size_type m_index = 0; @@ -73,23 +73,43 @@ void Test::testTdf100837() { // Without this we're crashing because callees are using getProcessServiceFactory ::comphelper::setProcessServiceFactory(xSM); - TestSupplier supplier; - supplier << "--view" << "foo" << "ms-word:ofe|u|bar1" << "ms-word:ofv|u|bar2" << "ms-word:nft|u|bar3" << "baz"; - desktop::CommandLineArgs args(supplier); - auto vViewList = args.GetViewList(); - auto vForceOpenList = args.GetForceOpenList(); - auto vForceNewList = args.GetForceNewList(); - // 3 documents go to View list: foo; bar2; baz - CPPUNIT_ASSERT_EQUAL(decltype(vViewList.size())(3), vViewList.size()); - CPPUNIT_ASSERT_EQUAL(OUString("foo"), vViewList[0]); - CPPUNIT_ASSERT_EQUAL(OUString("bar2"), vViewList[1]); - CPPUNIT_ASSERT_EQUAL(OUString("baz"), vViewList[2]); - // 1 document goes to ForceOpen list: bar1 - CPPUNIT_ASSERT_EQUAL(decltype(vForceOpenList.size())(1), vForceOpenList.size()); - CPPUNIT_ASSERT_EQUAL(OUString("bar1"), vForceOpenList[0]); - // 1 document goes to ForceNew list: bar3 - CPPUNIT_ASSERT_EQUAL(decltype(vForceNewList.size())(1), vForceNewList.size()); - CPPUNIT_ASSERT_EQUAL(OUString("bar3"), vForceNewList[0]); + { + // 1. Test default behaviour: Office URIs define open mode + TestSupplier supplier{ "foo", "ms-word:ofe|u|bar1", "ms-word:ofv|u|bar2", "ms-word:nft|u|bar3", "baz" }; + desktop::CommandLineArgs args(supplier); + auto vOpenList = args.GetOpenList(); + auto vForceOpenList = args.GetForceOpenList(); + auto vViewList = args.GetViewList(); + auto vForceNewList = args.GetForceNewList(); + // 2 documents go to Open list: foo; baz + CPPUNIT_ASSERT_EQUAL(decltype(vOpenList.size())(2), vOpenList.size()); + CPPUNIT_ASSERT_EQUAL(OUString("foo"), vOpenList[0]); + CPPUNIT_ASSERT_EQUAL(OUString("baz"), vOpenList[1]); + // 1 document goes to ForceOpen list: bar1 + CPPUNIT_ASSERT_EQUAL(decltype(vForceOpenList.size())(1), vForceOpenList.size()); + CPPUNIT_ASSERT_EQUAL(OUString("bar1"), vForceOpenList[0]); + // 1 document goes to View list: bar2 + CPPUNIT_ASSERT_EQUAL(decltype(vViewList.size())(1), vViewList.size()); + CPPUNIT_ASSERT_EQUAL(OUString("bar2"), vViewList[0]); + // 1 document goes to ForceNew list: bar3 + CPPUNIT_ASSERT_EQUAL(decltype(vForceNewList.size())(1), vForceNewList.size()); + CPPUNIT_ASSERT_EQUAL(OUString("bar3"), vForceNewList[0]); + } + + { + // 2. Test explicit open mode arguments. Office URI commands should have no effect + TestSupplier supplier{ "--view", "ms-word:ofe|u|foo", "-o", "ms-word:ofv|u|bar", "ms-word:nft|u|baz" }; + desktop::CommandLineArgs args(supplier); + auto vViewList = args.GetViewList(); + auto vForceOpenList = args.GetForceOpenList(); + // 1 document goes to View list: foo + CPPUNIT_ASSERT_EQUAL(decltype(vViewList.size())(1), vViewList.size()); + CPPUNIT_ASSERT_EQUAL(OUString("foo"), vViewList[0]); + // 2 documents go to ForceOpen list: bar, baz + CPPUNIT_ASSERT_EQUAL(decltype(vForceOpenList.size())(2), vForceOpenList.size()); + CPPUNIT_ASSERT_EQUAL(OUString("bar"), vForceOpenList[0]); + CPPUNIT_ASSERT_EQUAL(OUString("baz"), vForceOpenList[1]); + } } CPPUNIT_TEST_SUITE_REGISTRATION(Test); |