diff options
Diffstat (limited to 'sw/qa/extras/mailmerge/mailmerge.cxx')
-rw-r--r-- | sw/qa/extras/mailmerge/mailmerge.cxx | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/sw/qa/extras/mailmerge/mailmerge.cxx b/sw/qa/extras/mailmerge/mailmerge.cxx index d961216fb8a8..ca1f3ec47b0e 100644 --- a/sw/qa/extras/mailmerge/mailmerge.cxx +++ b/sw/qa/extras/mailmerge/mailmerge.cxx @@ -677,5 +677,145 @@ DECLARE_FILE_MAILMERGE_TEST(testTdf102010, "empty.odt", "10-testing-addresses.od loadMailMergeDocument( 1 ); } +namespace +{ +constexpr char const* const EmptyValuesLegacyData[][8] + = { { "Heading", "Title: ", "First Name: firstname1", "Last Name: lastname1", + "Title: First Name: firstname1", "First Name: firstname1 Last Name: lastname1", + "Title: First Name: firstname1 Last Name: lastname1", "Trailing text" }, + { "Heading", "Title: title2", "First Name: ", "Last Name: lastname2", + "Title: title2 First Name: ", "First Name: Last Name: lastname2", + "Title: title2 First Name: Last Name: lastname2", "Trailing text" }, + { "Heading", "Title: title3", "First Name: firstname3", "Last Name: ", + "Title: title3 First Name: firstname3", "First Name: firstname3 Last Name: ", + "Title: title3 First Name: firstname3 Last Name: ", "Trailing text" }, + { "Heading", "Title: ", "First Name: ", "Last Name: lastname4", + "Title: First Name: ", "First Name: Last Name: lastname4", + "Title: First Name: Last Name: lastname4", "Trailing text" }, + { "Heading", "Title: title5", "First Name: ", "Last Name: ", "Title: title5 First Name: ", + "First Name: Last Name: ", "Title: title5 First Name: Last Name: ", "Trailing text" } }; +constexpr char const* const EmptyValuesNewData[][8] + = { { "Heading", "First Name: firstname1", "Last Name: lastname1", + "Title: First Name: firstname1", "First Name: firstname1 Last Name: lastname1", + "Title: First Name: firstname1 Last Name: lastname1", "Trailing text" }, + { "Heading", "Title: title2", "Last Name: lastname2", + "Title: title2 First Name: ", "First Name: Last Name: lastname2", + "Title: title2 First Name: Last Name: lastname2", "Trailing text" }, + { "Heading", "Title: title3", "First Name: firstname3", + "Title: title3 First Name: firstname3", "First Name: firstname3 Last Name: ", + "Title: title3 First Name: firstname3 Last Name: ", "Trailing text" }, + { "Heading", "Last Name: lastname4", "First Name: Last Name: lastname4", + "Title: First Name: Last Name: lastname4", "Trailing text" }, + { "Heading", "Title: title5", "Title: title5 First Name: ", + "Title: title5 First Name: Last Name: ", "Trailing text" } }; +} + +// The following four tests (testEmptyValuesLegacyODT, testEmptyValuesNewODT, (testEmptyValuesLegacyFODT, testEmptyValuesNewFODT) +// check that for native documents without "EmptyDbFieldHidesPara" compatibility option, all paragraphs are exported visible, +// while for documents with the option enabled, the paragraphs with all Database fields having empty values are hidden. + +DECLARE_FILE_MAILMERGE_TEST(testEmptyValuesLegacyODT, "tdf35798-legacy.odt", "5-with-blanks.ods", + "names") +{ + executeMailMerge(); + for (int doc = 0; doc < 5; ++doc) + { + loadMailMergeDocument(doc); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + CPPUNIT_ASSERT(pTextDoc); + SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc(); + pDoc->RemoveInvisibleContent(); + CPPUNIT_ASSERT_EQUAL(1, getPages()); + for (int i = 0; i < 8; ++i) + { + auto xPara = getParagraph(i+1); + SAL_WARN("sw.qa", "Testing doc " + OUString::number(doc) + " paragraph " + + OUString::number(i + 1)); + CPPUNIT_ASSERT_EQUAL(OUString::createFromAscii(EmptyValuesLegacyData[doc][i]), + xPara->getString()); + } + CPPUNIT_ASSERT_EQUAL(8, getParagraphs()); + } +} + +DECLARE_FILE_MAILMERGE_TEST(testEmptyValuesNewODT, "tdf35798-new.odt", "5-with-blanks.ods", + "names") +{ + executeMailMerge(); + for (int doc = 0; doc < 5; ++doc) + { + loadMailMergeDocument(doc); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + CPPUNIT_ASSERT(pTextDoc); + SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc(); + pDoc->RemoveInvisibleContent(); + CPPUNIT_ASSERT_EQUAL(1, getPages()); + int i; + for (i = 0; i < 8; ++i) + { + const char* pExpected = EmptyValuesNewData[doc][i]; + if (!pExpected) + break; + auto xPara = getParagraph(i + 1); + SAL_WARN("sw.qa", "Testing doc " + OUString::number(doc) + " paragraph " + + OUString::number(i + 1)); + CPPUNIT_ASSERT_EQUAL(OUString::createFromAscii(pExpected), + xPara->getString()); + } + CPPUNIT_ASSERT_EQUAL(i, getParagraphs()); + } +} + +DECLARE_FILE_MAILMERGE_TEST(testEmptyValuesLegacyFODT, "tdf35798-legacy.fodt", "5-with-blanks.ods", + "names") +{ + executeMailMerge(); + for (int doc = 0; doc < 5; ++doc) + { + loadMailMergeDocument(doc); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + CPPUNIT_ASSERT(pTextDoc); + SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc(); + pDoc->RemoveInvisibleContent(); + CPPUNIT_ASSERT_EQUAL(1, getPages()); + for (int i = 0; i < 8; ++i) + { + auto xPara = getParagraph(i + 1); + SAL_WARN("sw.qa", "Testing doc " + OUString::number(doc) + " paragraph " + + OUString::number(i + 1)); + CPPUNIT_ASSERT_EQUAL(OUString::createFromAscii(EmptyValuesLegacyData[doc][i]), + xPara->getString()); + } + CPPUNIT_ASSERT_EQUAL(8, getParagraphs()); + } +} + +DECLARE_FILE_MAILMERGE_TEST(testEmptyValuesNewFODT, "tdf35798-new.fodt", "5-with-blanks.ods", + "names") +{ + executeMailMerge(); + for (int doc = 0; doc < 5; ++doc) + { + loadMailMergeDocument(doc); + SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get()); + CPPUNIT_ASSERT(pTextDoc); + SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc(); + pDoc->RemoveInvisibleContent(); + CPPUNIT_ASSERT_EQUAL(1, getPages()); + int i; + for (i = 0; i < 8; ++i) + { + const char* pExpected = EmptyValuesNewData[doc][i]; + if (!pExpected) + break; + auto xPara = getParagraph(i + 1); + SAL_WARN("sw.qa", "Testing doc " + OUString::number(doc) + " paragraph " + + OUString::number(i + 1)); + CPPUNIT_ASSERT_EQUAL(OUString::createFromAscii(pExpected), xPara->getString()); + } + CPPUNIT_ASSERT_EQUAL(i, getParagraphs()); + } +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |