summaryrefslogtreecommitdiff
path: root/src/test/java/org
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2025-06-08 10:02:56 +0100
committerMichael Williamson <mike@zwobble.org>2025-06-08 10:02:56 +0100
commit7fa2cbcfafd1acf12d288a578ee52dc893d2b874 (patch)
tree139f9f21ab70e089f5294128a79550feb7fbf7f3 /src/test/java/org
parent5d5660e3f75b4d3b4e4fee1b7929a0ba2fb8bd16 (diff)
Handle SDTs representing checkboxes wrapped in other elements
Diffstat (limited to 'src/test/java/org')
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java91
1 files changed, 91 insertions, 0 deletions
diff --git a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java
index 7ab1ec0..a4b3bdd 100644
--- a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java
+++ b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java
@@ -765,6 +765,97 @@ public class BodyXmlTests {
assertThat(result, isCheckbox(true));
}
+ @Test
+ public void whenStructuredDocumentTagCheckboxHasSdtContentThenCheckboxReplacesSingleCharacter() {
+ XmlElement element = element("w:tbl", list(
+ wTr(
+ element("w:sdt", list(
+ element("w:sdtPr", list(
+ element("wordml:checkbox", list(
+ element("wordml:checked", map("wordml:val", "1"))
+ ))
+ )),
+ element("w:sdtContent", list(
+ element("w:tc", list(
+ element("w:p", list(
+ element("w:r", list(
+ element("w:t", list(
+ textXml("☐")
+ ))
+ ))
+ ))
+ ))
+ ))
+ ))
+ )
+ ));
+
+ DocumentElement result = readSuccess(bodyReader(), element);
+
+ assertThat(result, deepEquals(table(list(
+ tableRow(list(
+ tableCell(
+ withChildren(
+ paragraph(withChildren(
+ run(withChildren(
+ checkbox(true)
+ ))
+ ))
+ )
+ )
+ ))
+ ))));
+ }
+
+ @Test
+ public void whenStructuredDocumentTagCheckboxHasSdtContentThenDeletedContentIsIgnored() {
+ XmlElement element = element("w:tbl", list(
+ wTr(
+ element("w:sdt", list(
+ element("w:sdtPr", list(
+ element("wordml:checkbox", list(
+ element("wordml:checked", map("wordml:val", "1"))
+ ))
+ )),
+ element("w:sdtContent", list(
+ element("w:tc", list(
+ element("w:p", list(
+ element("w:r", list(
+ element("w:t", list(
+ textXml("☐")
+ ))
+ )),
+ element("w:del", list(
+ element("w:r", list(
+ element("w:t", list(
+ textXml("☐")
+ ))
+ ))
+ ))
+ ))
+ ))
+ ))
+ ))
+ )
+ ));
+
+ DocumentElement result = readSuccess(bodyReader(), element);
+
+ assertThat(result, deepEquals(table(list(
+ tableRow(list(
+ tableCell(
+ withChildren(
+ paragraph(withChildren(
+ run(withChildren(
+ checkbox(true)
+ ))
+ ))
+ )
+ )
+ ))
+ ))));
+ }
+
private XmlElement complexFieldCheckboxParagraph(List<XmlNode> ffDataChildren) {
return element("w:p", list(
element("w:r", list(