summaryrefslogtreecommitdiff
path: root/sw/qa/extras/mailmerge/mailmerge.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/qa/extras/mailmerge/mailmerge.cxx')
-rw-r--r--sw/qa/extras/mailmerge/mailmerge.cxx140
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: */