summaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-11-30 14:20:42 +0000
committerMichael Williamson <mike@zwobble.org>2024-11-30 14:20:42 +0000
commit57a988d26011f58ee2cc9e9bb9f9bbd7c8de32be (patch)
treef49d1dbaffe74c0471e972f123bba64de41aa7b3 /src/test/java
parenta2d7d044d9add9f0c381fdd8821902e08b46e1ad (diff)
Read complex field checkboxes, always unchecked
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java55
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/docx/DocumentMatchers.java5
2 files changed, 60 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 3cfb161..c859be4 100644
--- a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java
+++ b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java
@@ -573,6 +573,61 @@ public class BodyXmlTests {
}
}
+ @Nested
+ public class CheckboxTests {
+ @Test
+ public void complexFieldCheckboxWithoutSeparateIsRead() {
+ XmlElement element = element("w:p", list(
+ element("w:r", list(
+ element("w:fldChar", map("w:fldCharType", "begin"))
+ )),
+ element("w:instrText", list(
+ textXml(" FORMCHECKBOX ")
+ )),
+ element("w:r", list(
+ element("w:fldChar", map("w:fldCharType", "end"))
+ ))
+ ));
+
+ DocumentElement paragraph = readSuccess(bodyReader(), element);
+
+ assertThat(paragraph, isParagraph(hasChildren(
+ isEmptyRun(),
+ isRun(hasChildren(
+ isCheckbox()
+ ))
+ )));
+ }
+
+ @Test
+ public void complexFieldCheckboxWithSeparateIsRead() {
+ XmlElement element = element("w:p", list(
+ element("w:r", list(
+ element("w:fldChar", map("w:fldCharType", "begin"))
+ )),
+ element("w:instrText", list(
+ textXml(" FORMCHECKBOX ")
+ )),
+ element("w:r", list(
+ element("w:fldChar", map("w:fldCharType", "separate"))
+ )),
+ element("w:r", list(
+ element("w:fldChar", map("w:fldCharType", "end"))
+ ))
+ ));
+
+ DocumentElement paragraph = readSuccess(bodyReader(), element);
+
+ assertThat(paragraph, isParagraph(hasChildren(
+ isEmptyRun(),
+ isEmptyRun(),
+ isRun(hasChildren(
+ isCheckbox()
+ ))
+ )));
+ }
+ }
+
@Test
public void runHasNoStyleIfItHasNoProperties() {
XmlElement element = runXml(list());
diff --git a/src/test/java/org/zwobble/mammoth/tests/docx/DocumentMatchers.java b/src/test/java/org/zwobble/mammoth/tests/docx/DocumentMatchers.java
index 4f3628e..fae84b2 100644
--- a/src/test/java/org/zwobble/mammoth/tests/docx/DocumentMatchers.java
+++ b/src/test/java/org/zwobble/mammoth/tests/docx/DocumentMatchers.java
@@ -91,6 +91,11 @@ public class DocumentMatchers {
return cast(Hyperlink.class, allOf(matchers));
}
+ @SafeVarargs
+ static Matcher<DocumentElement> isCheckbox(Matcher<? super Checkbox>... matchers) {
+ return cast(Checkbox.class, allOf(matchers));
+ }
+
static Matcher<Hyperlink> hasHref(String href) {
return hasProperty("href", equalTo(Optional.of(href)));
}