aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/zwobble/mammoth
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2017-11-23 20:45:24 +0000
committerMichael Williamson <mike@zwobble.org>2017-11-23 20:45:24 +0000
commit7abf1e89a6d9846e2fb3bc8f04e4ca51fe06a511 (patch)
tree3ae0abc0c1b4919cc7bdc949183518cf2477a706 /src/test/java/org/zwobble/mammoth
parentc46102917dbd63f454f4782effbe239e63c67400 (diff)
Parse paragraph indents
Diffstat (limited to 'src/test/java/org/zwobble/mammoth')
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java6
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java99
2 files changed, 105 insertions, 0 deletions
diff --git a/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java b/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java
index f206640..a2b0d7c 100644
--- a/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java
+++ b/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java
@@ -96,6 +96,12 @@ public class DocumentElementMakers {
return new Paragraph(
arguments.get(STYLE, Optional.empty()),
arguments.get(NUMBERING, Optional.empty()),
+ new ParagraphIndent(
+ Optional.empty(),
+ Optional.empty(),
+ Optional.empty(),
+ Optional.empty()
+ ),
arguments.get(CHILDREN, list())
);
}
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 27f7502..772fdd3 100644
--- a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java
+++ b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java
@@ -101,6 +101,85 @@ public class BodyXmlTests {
list("Paragraph style with ID Heading1 was referenced but not defined in the document")));
}
+ @Nested
+ public class ParagraphIndentTests {
+ @Test
+ public void whenWStartIsSetThenStartIndentIsReadFromWStart() {
+ XmlElement paragraphXml = paragraphWithIndent(map("w:start", "720", "w:left", "40"));
+ assertThat(
+ readSuccess(bodyReader(), paragraphXml),
+ hasIndent(hasIndentStart(Optional.of("720")))
+ );
+ }
+
+ @Test
+ public void whenWStartIsNotSetThenStartIndentIsReadFromWLeft() {
+ XmlElement paragraphXml = paragraphWithIndent(map("w:left", "720"));
+ assertThat(
+ readSuccess(bodyReader(), paragraphXml),
+ hasIndent(hasIndentStart(Optional.of("720")))
+ );
+ }
+
+ @Test
+ public void whenWEndIsSetThenEndIndentIsReadFromWEnd() {
+ XmlElement paragraphXml = paragraphWithIndent(map("w:end", "720", "w:right", "40"));
+ assertThat(
+ readSuccess(bodyReader(), paragraphXml),
+ hasIndent(hasIndentEnd(Optional.of("720")))
+ );
+ }
+
+ @Test
+ public void whenWEndIsNotSetThenEndIndentIsReadFromWRight() {
+ XmlElement paragraphXml = paragraphWithIndent(map("w:right", "720"));
+ assertThat(
+ readSuccess(bodyReader(), paragraphXml),
+ hasIndent(hasIndentEnd(Optional.of("720")))
+ );
+ }
+
+ @Test
+ public void paragraphHasIndentFirstLineReadFromParagraphPropertiesIfPresent() {
+ XmlElement paragraphXml = paragraphWithIndent(map("w:firstLine", "720"));
+ assertThat(
+ readSuccess(bodyReader(), paragraphXml),
+ hasIndent(hasIndentFirstLine(Optional.of("720")))
+ );
+ }
+
+ @Test
+ public void paragraphHasIndentHangingReadFromParagraphPropertiesIfPresent() {
+ XmlElement paragraphXml = paragraphWithIndent(map("w:hanging", "720"));
+ assertThat(
+ readSuccess(bodyReader(), paragraphXml),
+ hasIndent(hasIndentHanging(Optional.of("720")))
+ );
+ }
+
+ @Test
+ public void whenIndentAttributesArentSetThenIndentsAreNotSet() {
+ XmlElement paragraphXml = paragraphWithIndent(map());
+ assertThat(
+ readSuccess(bodyReader(), paragraphXml),
+ hasIndent(allOf(
+ hasIndentStart(Optional.empty()),
+ hasIndentEnd(Optional.empty()),
+ hasIndentFirstLine(Optional.empty()),
+ hasIndentHanging(Optional.empty())
+ ))
+ );
+ }
+
+ private XmlElement paragraphWithIndent(Map<String, String> attributes) {
+ return paragraphXml(list(
+ element("w:pPr", list(
+ element("w:ind", attributes)
+ ))
+ ));
+ }
+ }
+
@Test
public void paragraphHasNoNumberingIfItHasNoNumberingProperties() {
XmlElement element = paragraphXml();
@@ -1319,6 +1398,26 @@ public class BodyXmlTests {
return hasProperty("numbering", deepEquals(expected));
}
+ private Matcher<? super DocumentElement> hasIndent(Matcher<ParagraphIndent> expected) {
+ return hasProperty("indent", expected);
+ }
+
+ private Matcher<ParagraphIndent> hasIndentStart(Optional<String> value) {
+ return hasProperty("start", equalTo(value));
+ }
+
+ private Matcher<ParagraphIndent> hasIndentEnd(Optional<String> value) {
+ return hasProperty("end", equalTo(value));
+ }
+
+ private Matcher<ParagraphIndent> hasIndentFirstLine(Optional<String> value) {
+ return hasProperty("firstLine", equalTo(value));
+ }
+
+ private Matcher<ParagraphIndent> hasIndentHanging(Optional<String> value) {
+ return hasProperty("hanging", equalTo(value));
+ }
+
private static Text text(String value) {
return new Text(value);
}