diff options
Diffstat (limited to 'sw/qa/extras/layout')
-rw-r--r-- | sw/qa/extras/layout/data/user-field-type-language.fodt | 21 | ||||
-rw-r--r-- | sw/qa/extras/layout/layout.cxx | 24 |
2 files changed, 45 insertions, 0 deletions
diff --git a/sw/qa/extras/layout/data/user-field-type-language.fodt b/sw/qa/extras/layout/data/user-field-type-language.fodt new file mode 100644 index 000000000000..f741add7ddd7 --- /dev/null +++ b/sw/qa/extras/layout/data/user-field-type-language.fodt @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text"> + <office:styles> + <style:default-style style:family="paragraph"> + <style:text-properties fo:language="en" fo:country="GB"/> + </style:default-style> + </office:styles> + <office:automatic-styles> + <number:number-style style:name="N10004" number:language="en" number:country="GB"> + <number:number number:decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + </office:automatic-styles> + <office:body> + <office:text text:use-soft-page-breaks="true"> + <text:user-field-decls> + <text:user-field-decl office:value-type="float" office:value="1234.56" text:name="user-field-decl-name-example"/> + </text:user-field-decls> + <text:p>Before <text:user-field-get style:data-style-name="N10004" text:name="user-field-decl-name-example">1,234.56</text:user-field-get> after.</text:p> + </office:text> + </office:body> +</office:document> diff --git a/sw/qa/extras/layout/layout.cxx b/sw/qa/extras/layout/layout.cxx index 9a73e2025147..7167647ac93b 100644 --- a/sw/qa/extras/layout/layout.cxx +++ b/sw/qa/extras/layout/layout.cxx @@ -9,6 +9,8 @@ #include <swmodeltestbase.hxx> #include <test/mtfxmldump.hxx> +#include <comphelper/scopeguard.hxx> +#include <unotools/syslocaleoptions.hxx> static char const DATA_DIRECTORY[] = "/sw/qa/extras/layout/data/"; @@ -19,11 +21,13 @@ public: void testTdf116830(); void testTdf116925(); void testTdf117028(); + void testUserFieldTypeLanguage(); CPPUNIT_TEST_SUITE(SwLayoutWriter); CPPUNIT_TEST(testTdf116830); CPPUNIT_TEST(testTdf116925); CPPUNIT_TEST(testTdf117028); + CPPUNIT_TEST(testUserFieldTypeLanguage); CPPUNIT_TEST_SUITE_END(); private: @@ -108,6 +112,26 @@ void SwLayoutWriter::testTdf117028() assertXPathContent(pXmlDoc, "//textarray/text", "Hello"); } +void SwLayoutWriter::testUserFieldTypeLanguage() +{ + // Set the system locale to German, the document will be English. + SvtSysLocaleOptions aOptions; + aOptions.SetLocaleConfigString("de-DE"); + aOptions.Commit(); + comphelper::ScopeGuard g([&aOptions] { + aOptions.SetLocaleConfigString(OUString()); + aOptions.Commit(); + }); + + SwDoc* pDoc = createDoc("user-field-type-language.fodt"); + SwViewShell* pViewShell = pDoc->getIDocumentLayoutAccess().GetCurrentViewShell(); + pViewShell->UpdateFields(); + xmlDocPtr pXmlDoc = parseLayoutDump(); + // This was "123,456.00", via a buggy 1234.56 -> 1234,56 -> 123456 -> + // 123,456.00 transform chain. + assertXPath(pXmlDoc, "/root/page/body/txt/Special[@nType='POR_FLD']", "rText", "1,234.56"); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SwLayoutWriter); CPPUNIT_PLUGIN_IMPLEMENT(); |