diff options
| author | Michael Williamson <mike@zwobble.org> | 2024-11-30 14:28:47 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2024-11-30 14:28:47 +0000 |
| commit | 9272cde24f670d832d30e389a8ad517e58660164 (patch) | |
| tree | 444073f381f478a29d0a1f01cf13fe9d069adba2 /src/test/java | |
| parent | 57a988d26011f58ee2cc9e9bb9f9bbd7c8de32be (diff) | |
Read default for complex field checkboxes
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java | 74 | ||||
| -rw-r--r-- | src/test/java/org/zwobble/mammoth/tests/docx/DocumentMatchers.java | 9 |
2 files changed, 80 insertions, 3 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 c859be4..0336bf3 100644 --- a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java @@ -626,6 +626,80 @@ public class BodyXmlTests { )) ))); } + + @Test + public void complexFieldCheckboxWithoutDefaultNorCheckedIsUnchecked() { + XmlElement element = complexFieldCheckboxParagraph(list( + element("w:checkBox") + )); + + DocumentElement paragraph = readSuccess(bodyReader(), element); + + assertThat(paragraph, isParagraph(hasChildren( + isEmptyRun(), + isEmptyRun(), + isRun(hasChildren( + isCheckbox(false) + )) + ))); + } + + @Test + public void complexFieldCheckboxWithDefault0AndWithoutCheckedIsUnchecked() { + XmlElement element = complexFieldCheckboxParagraph(list( + element("w:checkBox", list( + element("w:default", map("w:val", "0")) + )) + )); + + DocumentElement paragraph = readSuccess(bodyReader(), element); + + assertThat(paragraph, isParagraph(hasChildren( + isEmptyRun(), + isEmptyRun(), + isRun(hasChildren( + isCheckbox(false) + )) + ))); + } + + @Test + public void complexFieldCheckboxWithDefault1AndWithoutCheckedIsChecked() { + XmlElement element = complexFieldCheckboxParagraph(list( + element("w:checkBox", list( + element("w:default", map("w:val", "1")) + )) + )); + + DocumentElement paragraph = readSuccess(bodyReader(), element); + + assertThat(paragraph, isParagraph(hasChildren( + isEmptyRun(), + isEmptyRun(), + isRun(hasChildren( + isCheckbox(true) + )) + ))); + } + + private XmlElement complexFieldCheckboxParagraph(List<XmlNode> ffDataChildren) { + return element("w:p", list( + element("w:r", list( + element("w:fldChar", map("w:fldCharType", "begin"), list( + element("w:ffData", ffDataChildren) + )) + )), + 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")) + )) + )); + } } @Test 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 fae84b2..67e15f0 100644 --- a/src/test/java/org/zwobble/mammoth/tests/docx/DocumentMatchers.java +++ b/src/test/java/org/zwobble/mammoth/tests/docx/DocumentMatchers.java @@ -91,9 +91,12 @@ 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<DocumentElement> isCheckbox() { + return instanceOf(Checkbox.class); + } + + static Matcher<DocumentElement> isCheckbox(boolean checked) { + return new DeepReflectionMatcher<>(new Checkbox(checked)); } static Matcher<Hyperlink> hasHref(String href) { |
