diff options
| author | Michael Williamson <mike@zwobble.org> | 2021-01-09 17:25:55 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2021-01-09 17:25:55 +0000 |
| commit | 437a3029d872ec5f2113aa6e074567de7fd2d61f (patch) | |
| tree | 1ab117b3ca019f6232d842113e45f5097107d419 /src/test/java/org/zwobble | |
| parent | e65a011e679931377af77793fc36b671766c4118 (diff) | |
Support numbering defined by paragraph style
Diffstat (limited to 'src/test/java/org/zwobble')
| -rw-r--r-- | src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java | 37 | ||||
| -rw-r--r-- | src/test/java/org/zwobble/mammoth/tests/docx/NumberingXmlTests.java | 22 |
2 files changed, 55 insertions, 4 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 076cba4..fffc901 100644 --- a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java @@ -198,7 +198,7 @@ public class BodyXmlTests { element("w:ilvl", map("w:val", "1")), element("w:numId", map("w:val", "42")))))))); - Numbering numbering = numberingMap(map("42", map("1", NumberingLevel.ordered("1")))); + Numbering numbering = numberingMap(map("42", map("1", Numbering.AbstractNumLevel.ordered("1")))); assertThat( readSuccess(bodyReader(numbering), element), @@ -206,6 +206,35 @@ public class BodyXmlTests { } @Test + public void numberingOnParagraphStyleTakesPrecedenceOverNumPr() { + XmlElement element = paragraphXml(list( + element("w:pPr", list( + element("w:pStyle", map("w:val", "List")), + element("w:numPr", map(), list( + element("w:ilvl", map("w:val", "1")), + element("w:numId", map("w:val", "42")) + )) + )) + )); + + Numbering numbering = numberingMap(map( + "42", map("1", new Numbering.AbstractNumLevel("1", false, Optional.empty())), + "43", map("1", new Numbering.AbstractNumLevel("1", true, Optional.of("List"))) + )); + Styles styles = new Styles( + map("List", new Style("List", Optional.empty())), + map(), + map(), + map() + ); + + assertThat( + readSuccess(bodyReader(numbering, styles), element), + hasNumbering(NumberingLevel.ordered("1")) + ); + } + + @Test public void numberingPropertiesAreIgnoredIfLevelIsMissing() { // TODO: emit warning XmlElement element = paragraphXml(list( @@ -213,7 +242,7 @@ public class BodyXmlTests { element("w:numPr", map(), list( element("w:numId", map("w:val", "42")))))))); - Numbering numbering = numberingMap(map("42", map("1", NumberingLevel.ordered("1")))); + Numbering numbering = numberingMap(map("42", map("1", Numbering.AbstractNumLevel.ordered("1")))); assertThat( readSuccess(bodyReader(numbering), element), @@ -228,7 +257,7 @@ public class BodyXmlTests { element("w:numPr", map(), list( element("w:ilvl", map("w:val", "1")))))))); - Numbering numbering = numberingMap(map("42", map("1", NumberingLevel.ordered("1")))); + Numbering numbering = numberingMap(map("42", map("1", Numbering.AbstractNumLevel.ordered("1")))); assertThat( readSuccess(bodyReader(numbering), element), @@ -1492,7 +1521,7 @@ public class BodyXmlTests { return new Relationship(relationshipId, target, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image"); } - private static Numbering numberingMap(Map<String, Map<String, NumberingLevel>> numbering) { + private static Numbering numberingMap(Map<String, Map<String, Numbering.AbstractNumLevel>> numbering) { return new Numbering( numbering.entrySet().stream().collect(Collectors.toMap( entry -> entry.getKey(), diff --git a/src/test/java/org/zwobble/mammoth/tests/docx/NumberingXmlTests.java b/src/test/java/org/zwobble/mammoth/tests/docx/NumberingXmlTests.java index a94f8e8..8f4e5ba 100644 --- a/src/test/java/org/zwobble/mammoth/tests/docx/NumberingXmlTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/docx/NumberingXmlTests.java @@ -78,6 +78,28 @@ public class NumberingXmlTests { assertEquals(true, numbering.findLevel("201", "0").get().isOrdered()); } + // See: 17.9.23 pStyle (Paragraph Style's Associated Numbering Level) in ECMA-376, 4th Edition + @Test + public void numberingLevelCanBeFoundByParagraphStyleId() { + Numbering numbering = readNumbering( + element("w:numbering", list( + element("w:abstractNum", map("w:abstractNumId", "42"), list( + element("w:lvl", map("w:ilvl", "0"), list( + element("w:numFmt", map("w:val", "bullet")) + )) + )), + element("w:abstractNum", map("w:abstractNumId", "43"), list( + element("w:lvl", map("w:ilvl", "0"), list( + element("w:pStyle", map("w:val", "List")), + element("w:numFmt", map("w:val", "decimal")) + )) + )) + )) + ); + assertEquals(true, numbering.findLevelByParagraphStyleId("List").get().isOrdered()); + assertEquals(false, numbering.findLevelByParagraphStyleId("Paragraph").isPresent()); + } + private Numbering readNumbering(XmlElement element) { return readNumberingXmlElement(element, Styles.EMPTY); |
