sw/qa/extras/ooxmlexport/data/TextEffects_InStyle.docx |binary sw/qa/extras/ooxmlexport/ooxmlw14export.cxx | 242 ++++++++++++++++- 2 files changed, 239 insertions(+), 3 deletions(-)
New commits: commit 5eee8861efdebe08265a994132989f676312066b Author: Tomaž Vajngerl <tomaz.vajng...@collabora.com> Date: Thu Mar 13 11:00:59 2014 +0100 ooxml: round-trip test of w14 elements contained in styles.xml Change-Id: I57a9f04240b75710a99b33818711e45816361a9f diff --git a/sw/qa/extras/ooxmlexport/data/TextEffects_InStyle.docx b/sw/qa/extras/ooxmlexport/data/TextEffects_InStyle.docx new file mode 100644 index 0000000..5be6d9c Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/TextEffects_InStyle.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlw14export.cxx b/sw/qa/extras/ooxmlexport/ooxmlw14export.cxx index 4e8ee1b..1c7761c 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlw14export.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlw14export.cxx @@ -273,11 +273,17 @@ DECLARE_OOXMLEXPORT_TEST(Test_TextEffects_StylisticSets_CntxtAlts, "TextEffects_ DECLARE_OOXMLEXPORT_TEST(Test_McIgnorable, "TextEffects_StylisticSets_CntxtAlts.docx") { - xmlDocPtr pXmlDoc = parseExport("word/document.xml"); - if (!pXmlDoc) + xmlDocPtr pXmlDocument = parseExport("word/document.xml"); + if (!pXmlDocument) + return; + + assertXPath(pXmlDocument, "/w:document", "Ignorable", "w14 wp14"); + + xmlDocPtr pXmlStyles = parseExport("word/styles.xml"); + if (!pXmlStyles) return; - assertXPath(pXmlDoc, "/w:document", "Ignorable", "w14 wp14"); + assertXPath(pXmlStyles, "/w:styles", "Ignorable", "w14"); } DECLARE_OOXMLEXPORT_TEST(Test_CompatSettingsForW14, "TextEffects_StylisticSets_CntxtAlts.docx") @@ -424,6 +430,236 @@ DECLARE_OOXMLEXPORT_TEST(Test_TextEffects_Groupshapes, "TextEffects_Groupshapes. assertXPath(pXmlDoc, (sPathStylisticSets+"/w14:styleSet").c_str(), "id", "1"); } +DECLARE_OOXMLEXPORT_TEST(Test_TextEffects_InStyleXml, "TextEffects_InStyle.docx") +{ + xmlDocPtr pXmlDoc = parseExport("word/styles.xml"); + if (!pXmlDoc) + return; + + std::string sPathToCharacterStyle = "/w:styles/w:style[3]"; + + assertXPath(pXmlDoc, (sPathToCharacterStyle).c_str(), "type", "character"); + assertXPath(pXmlDoc, (sPathToCharacterStyle).c_str(), "styleId", "TextEffectsStyleChar"); + assertXPath(pXmlDoc, (sPathToCharacterStyle).c_str(), "customStyle", "1"); + + { + std::string sPathToRun = sPathToCharacterStyle + "/w:rPr"; + + // Glow + std::string sPathGlow = sPathToRun + "/w14:glow"; + assertXPath(pXmlDoc, (sPathGlow).c_str(), "rad", "63500"); + assertXPath(pXmlDoc, (sPathGlow+"/w14:schemeClr").c_str(), "val", "accent2"); + assertXPath(pXmlDoc, (sPathGlow+"/w14:schemeClr/w14:alpha").c_str(), "val", "60000"); + assertXPath(pXmlDoc, (sPathGlow+"/w14:schemeClr/w14:satMod").c_str(), "val", "175000"); + + // Shadow + std::string sPathShadow = sPathToRun + "/w14:shadow"; + assertXPath(pXmlDoc, (sPathShadow).c_str(), "blurRad", "50800"); + assertXPath(pXmlDoc, (sPathShadow).c_str(), "dist", "38100"); + assertXPath(pXmlDoc, (sPathShadow).c_str(), "dir", "16200000"); + assertXPath(pXmlDoc, (sPathShadow).c_str(), "sx", "100000"); + assertXPath(pXmlDoc, (sPathShadow).c_str(), "sy", "100000"); + assertXPath(pXmlDoc, (sPathShadow).c_str(), "kx", "0"); + assertXPath(pXmlDoc, (sPathShadow).c_str(), "ky", "0"); + assertXPath(pXmlDoc, (sPathShadow).c_str(), "algn", "b"); + assertXPath(pXmlDoc, (sPathShadow+"/w14:srgbClr").c_str(), "val", "000000"); + assertXPath(pXmlDoc, (sPathShadow+"/w14:srgbClr/w14:alpha").c_str(), "val", "60000"); + + // Reflection + std::string sPathReflection = sPathToRun + "/w14:reflection"; + assertXPath(pXmlDoc, (sPathReflection).c_str(), "blurRad", "6350"); + assertXPath(pXmlDoc, (sPathReflection).c_str(), "stA", "50000"); + assertXPath(pXmlDoc, (sPathReflection).c_str(), "stPos", "0"); + assertXPath(pXmlDoc, (sPathReflection).c_str(), "endA", "300"); + assertXPath(pXmlDoc, (sPathReflection).c_str(), "endPos", "50000"); + assertXPath(pXmlDoc, (sPathReflection).c_str(), "dist", "29997"); + assertXPath(pXmlDoc, (sPathReflection).c_str(), "dir", "5400000"); + assertXPath(pXmlDoc, (sPathReflection).c_str(), "fadeDir", "5400000"); + assertXPath(pXmlDoc, (sPathReflection).c_str(), "sx", "100000"); + assertXPath(pXmlDoc, (sPathReflection).c_str(), "sy", "-100000"); + assertXPath(pXmlDoc, (sPathReflection).c_str(), "kx", "0"); + assertXPath(pXmlDoc, (sPathReflection).c_str(), "ky", "0"); + assertXPath(pXmlDoc, (sPathReflection).c_str(), "algn", "bl"); + + // TextOutline + std::string sPathTextOutline = sPathToRun + "/w14:textOutline"; + assertXPath(pXmlDoc, (sPathTextOutline).c_str(), "w", "25400"); + assertXPath(pXmlDoc, (sPathTextOutline).c_str(), "cap", "rnd"); + assertXPath(pXmlDoc, (sPathTextOutline).c_str(), "cmpd", "sng"); + assertXPath(pXmlDoc, (sPathTextOutline).c_str(), "algn", "ctr"); + assertXPath(pXmlDoc, (sPathTextOutline+"/w14:solidFill/w14:schemeClr").c_str(), "val", "accent1"); + assertXPath(pXmlDoc, (sPathTextOutline+"/w14:solidFill/w14:schemeClr/w14:alpha").c_str(), "val", "40000"); + assertXPath(pXmlDoc, (sPathTextOutline+"/w14:solidFill/w14:schemeClr/w14:lumMod").c_str(), "val", "75000"); + assertXPath(pXmlDoc, (sPathTextOutline+"/w14:prstDash").c_str(), "val", "solid"); + assertXPath(pXmlDoc, (sPathTextOutline+"/w14:bevel").c_str(), 1); + + // TextFill + std::string sPathTextFill = sPathToRun + "/w14:textFill"; + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:gsLst/w14:gs[1]").c_str(), "pos", "0"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:gsLst/w14:gs[1]/w14:schemeClr").c_str(), "val", "accent1"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:gsLst/w14:gs[1]/w14:schemeClr/w14:alpha").c_str(), "val", "10000"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:gsLst/w14:gs[1]/w14:schemeClr/w14:lumMod").c_str(), "val", "40000"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:gsLst/w14:gs[1]/w14:schemeClr/w14:lumOff").c_str(), "val", "60000"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:gsLst/w14:gs[2]").c_str(), "pos", "46000"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:gsLst/w14:gs[2]/w14:schemeClr").c_str(), "val", "accent1"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:gsLst/w14:gs[2]/w14:schemeClr/w14:lumMod").c_str(), "val", "95000"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:gsLst/w14:gs[2]/w14:schemeClr/w14:lumOff").c_str(), "val", "5000"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:gsLst/w14:gs[3]").c_str(), "pos", "100000"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:gsLst/w14:gs[3]/w14:schemeClr").c_str(), "val", "accent1"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:gsLst/w14:gs[3]/w14:schemeClr/w14:lumMod").c_str(), "val", "60000"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:path").c_str(), "path", "circle"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:path/w14:fillToRect").c_str(), "b", "-30000"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:path/w14:fillToRect").c_str(), "r", "50000"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:path/w14:fillToRect").c_str(), "t", "130000"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:path/w14:fillToRect").c_str(), "l", "50000"); + + // Props3D + std::string sPathProps3D = sPathToRun + "/w14:props3d"; + assertXPath(pXmlDoc, (sPathProps3D).c_str(), "extrusionH", "57150"); + assertXPath(pXmlDoc, (sPathProps3D).c_str(), "contourW", "12700"); + assertXPath(pXmlDoc, (sPathProps3D).c_str(), "prstMaterial", "metal"); + assertXPath(pXmlDoc, (sPathProps3D+"/w14:bevelT").c_str(), "w", "38100"); + assertXPath(pXmlDoc, (sPathProps3D+"/w14:bevelT").c_str(), "h", "38100"); + assertXPath(pXmlDoc, (sPathProps3D+"/w14:bevelT").c_str(), "prst", "angle"); + assertXPath(pXmlDoc, (sPathProps3D+"/w14:bevelB").c_str(), "w", "69850"); + assertXPath(pXmlDoc, (sPathProps3D+"/w14:bevelB").c_str(), "h", "69850"); + assertXPath(pXmlDoc, (sPathProps3D+"/w14:bevelB").c_str(), "prst", "divot"); + assertXPath(pXmlDoc, (sPathProps3D+"/w14:extrusionClr/w14:schemeClr").c_str(), "val", "accent1"); + assertXPath(pXmlDoc, (sPathProps3D+"/w14:extrusionClr/w14:schemeClr/w14:lumMod").c_str(), "val", "20000"); + assertXPath(pXmlDoc, (sPathProps3D+"/w14:extrusionClr/w14:schemeClr/w14:lumOff").c_str(), "val", "80000"); + assertXPath(pXmlDoc, (sPathProps3D+"/w14:contourClr/w14:schemeClr").c_str(), "val", "accent1"); + assertXPath(pXmlDoc, (sPathProps3D+"/w14:contourClr/w14:schemeClr/w14:lumMod").c_str(), "val", "75000"); + + // Ligatures + std::string sPathLigatures = sPathToRun + "/w14:ligatures"; + assertXPath(pXmlDoc, (sPathLigatures).c_str(), "val", "standard"); + + // NumForm + std::string sPathNumForm = sPathToRun + "/w14:numForm"; + assertXPath(pXmlDoc, (sPathNumForm).c_str(), "val", "lining"); + + // NumSpacing + std::string sPathNumSpacing = sPathToRun + "/w14:numSpacing"; + assertXPath(pXmlDoc, (sPathNumSpacing).c_str(), "val", "proportional"); + + // StylisticSets + std::string sPathStylisticSets = sPathToRun + "/w14:stylisticSets"; + assertXPath(pXmlDoc, (sPathStylisticSets+"/w14:styleSet").c_str(), "id", "1"); + } + + std::string sPathToParagraphStyle = "/w:styles/w:style[9]"; + + assertXPath(pXmlDoc, (sPathToParagraphStyle).c_str(), "type", "paragraph"); + assertXPath(pXmlDoc, (sPathToParagraphStyle).c_str(), "styleId", "TextEffectsStyle"); + assertXPath(pXmlDoc, (sPathToParagraphStyle).c_str(), "customStyle", "1"); + + { + std::string sPathToRun = sPathToParagraphStyle + "/w:rPr"; + + // Glow + std::string sPathGlow = sPathToRun + "/w14:glow"; + assertXPath(pXmlDoc, (sPathGlow).c_str(), "rad", "63500"); + assertXPath(pXmlDoc, (sPathGlow+"/w14:schemeClr").c_str(), "val", "accent2"); + assertXPath(pXmlDoc, (sPathGlow+"/w14:schemeClr/w14:alpha").c_str(), "val", "60000"); + assertXPath(pXmlDoc, (sPathGlow+"/w14:schemeClr/w14:satMod").c_str(), "val", "175000"); + + // Shadow + std::string sPathShadow = sPathToRun + "/w14:shadow"; + assertXPath(pXmlDoc, (sPathShadow).c_str(), "blurRad", "50800"); + assertXPath(pXmlDoc, (sPathShadow).c_str(), "dist", "38100"); + assertXPath(pXmlDoc, (sPathShadow).c_str(), "dir", "16200000"); + assertXPath(pXmlDoc, (sPathShadow).c_str(), "sx", "100000"); + assertXPath(pXmlDoc, (sPathShadow).c_str(), "sy", "100000"); + assertXPath(pXmlDoc, (sPathShadow).c_str(), "kx", "0"); + assertXPath(pXmlDoc, (sPathShadow).c_str(), "ky", "0"); + assertXPath(pXmlDoc, (sPathShadow).c_str(), "algn", "b"); + assertXPath(pXmlDoc, (sPathShadow+"/w14:srgbClr").c_str(), "val", "000000"); + assertXPath(pXmlDoc, (sPathShadow+"/w14:srgbClr/w14:alpha").c_str(), "val", "60000"); + + // Reflection + std::string sPathReflection = sPathToRun + "/w14:reflection"; + assertXPath(pXmlDoc, (sPathReflection).c_str(), "blurRad", "6350"); + assertXPath(pXmlDoc, (sPathReflection).c_str(), "stA", "50000"); + assertXPath(pXmlDoc, (sPathReflection).c_str(), "stPos", "0"); + assertXPath(pXmlDoc, (sPathReflection).c_str(), "endA", "300"); + assertXPath(pXmlDoc, (sPathReflection).c_str(), "endPos", "50000"); + assertXPath(pXmlDoc, (sPathReflection).c_str(), "dist", "29997"); + assertXPath(pXmlDoc, (sPathReflection).c_str(), "dir", "5400000"); + assertXPath(pXmlDoc, (sPathReflection).c_str(), "fadeDir", "5400000"); + assertXPath(pXmlDoc, (sPathReflection).c_str(), "sx", "100000"); + assertXPath(pXmlDoc, (sPathReflection).c_str(), "sy", "-100000"); + assertXPath(pXmlDoc, (sPathReflection).c_str(), "kx", "0"); + assertXPath(pXmlDoc, (sPathReflection).c_str(), "ky", "0"); + assertXPath(pXmlDoc, (sPathReflection).c_str(), "algn", "bl"); + + // TextOutline + std::string sPathTextOutline = sPathToRun + "/w14:textOutline"; + assertXPath(pXmlDoc, (sPathTextOutline).c_str(), "w", "25400"); + assertXPath(pXmlDoc, (sPathTextOutline).c_str(), "cap", "rnd"); + assertXPath(pXmlDoc, (sPathTextOutline).c_str(), "cmpd", "sng"); + assertXPath(pXmlDoc, (sPathTextOutline).c_str(), "algn", "ctr"); + assertXPath(pXmlDoc, (sPathTextOutline+"/w14:solidFill/w14:schemeClr").c_str(), "val", "accent1"); + assertXPath(pXmlDoc, (sPathTextOutline+"/w14:solidFill/w14:schemeClr/w14:alpha").c_str(), "val", "40000"); + assertXPath(pXmlDoc, (sPathTextOutline+"/w14:solidFill/w14:schemeClr/w14:lumMod").c_str(), "val", "75000"); + assertXPath(pXmlDoc, (sPathTextOutline+"/w14:prstDash").c_str(), "val", "solid"); + assertXPath(pXmlDoc, (sPathTextOutline+"/w14:bevel").c_str(), 1); + + // TextFill + std::string sPathTextFill = sPathToRun + "/w14:textFill"; + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:gsLst/w14:gs[1]").c_str(), "pos", "0"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:gsLst/w14:gs[1]/w14:schemeClr").c_str(), "val", "accent1"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:gsLst/w14:gs[1]/w14:schemeClr/w14:alpha").c_str(), "val", "10000"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:gsLst/w14:gs[1]/w14:schemeClr/w14:lumMod").c_str(), "val", "40000"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:gsLst/w14:gs[1]/w14:schemeClr/w14:lumOff").c_str(), "val", "60000"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:gsLst/w14:gs[2]").c_str(), "pos", "46000"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:gsLst/w14:gs[2]/w14:schemeClr").c_str(), "val", "accent1"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:gsLst/w14:gs[2]/w14:schemeClr/w14:lumMod").c_str(), "val", "95000"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:gsLst/w14:gs[2]/w14:schemeClr/w14:lumOff").c_str(), "val", "5000"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:gsLst/w14:gs[3]").c_str(), "pos", "100000"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:gsLst/w14:gs[3]/w14:schemeClr").c_str(), "val", "accent1"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:gsLst/w14:gs[3]/w14:schemeClr/w14:lumMod").c_str(), "val", "60000"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:path").c_str(), "path", "circle"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:path/w14:fillToRect").c_str(), "b", "-30000"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:path/w14:fillToRect").c_str(), "r", "50000"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:path/w14:fillToRect").c_str(), "t", "130000"); + assertXPath(pXmlDoc, (sPathTextFill+"/w14:gradFill/w14:path/w14:fillToRect").c_str(), "l", "50000"); + + // Props3D + std::string sPathProps3D = sPathToRun + "/w14:props3d"; + assertXPath(pXmlDoc, (sPathProps3D).c_str(), "extrusionH", "57150"); + assertXPath(pXmlDoc, (sPathProps3D).c_str(), "contourW", "12700"); + assertXPath(pXmlDoc, (sPathProps3D).c_str(), "prstMaterial", "metal"); + assertXPath(pXmlDoc, (sPathProps3D+"/w14:bevelT").c_str(), "w", "38100"); + assertXPath(pXmlDoc, (sPathProps3D+"/w14:bevelT").c_str(), "h", "38100"); + assertXPath(pXmlDoc, (sPathProps3D+"/w14:bevelT").c_str(), "prst", "angle"); + assertXPath(pXmlDoc, (sPathProps3D+"/w14:bevelB").c_str(), "w", "69850"); + assertXPath(pXmlDoc, (sPathProps3D+"/w14:bevelB").c_str(), "h", "69850"); + assertXPath(pXmlDoc, (sPathProps3D+"/w14:bevelB").c_str(), "prst", "divot"); + assertXPath(pXmlDoc, (sPathProps3D+"/w14:extrusionClr/w14:schemeClr").c_str(), "val", "accent1"); + assertXPath(pXmlDoc, (sPathProps3D+"/w14:extrusionClr/w14:schemeClr/w14:lumMod").c_str(), "val", "20000"); + assertXPath(pXmlDoc, (sPathProps3D+"/w14:extrusionClr/w14:schemeClr/w14:lumOff").c_str(), "val", "80000"); + assertXPath(pXmlDoc, (sPathProps3D+"/w14:contourClr/w14:schemeClr").c_str(), "val", "accent1"); + assertXPath(pXmlDoc, (sPathProps3D+"/w14:contourClr/w14:schemeClr/w14:lumMod").c_str(), "val", "75000"); + + // Ligatures + std::string sPathLigatures = sPathToRun + "/w14:ligatures"; + assertXPath(pXmlDoc, (sPathLigatures).c_str(), "val", "standard"); + + // NumForm + std::string sPathNumForm = sPathToRun + "/w14:numForm"; + assertXPath(pXmlDoc, (sPathNumForm).c_str(), "val", "lining"); + + // NumSpacing + std::string sPathNumSpacing = sPathToRun + "/w14:numSpacing"; + assertXPath(pXmlDoc, (sPathNumSpacing).c_str(), "val", "proportional"); + + // StylisticSets + std::string sPathStylisticSets = sPathToRun + "/w14:stylisticSets"; + assertXPath(pXmlDoc, (sPathStylisticSets+"/w14:styleSet").c_str(), "id", "1"); + } +} + + #endif CPPUNIT_PLUGIN_IMPLEMENT();
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits