aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2025-09-11 15:37:06 +0100
committerMichael Williamson <mike@zwobble.org>2025-09-11 15:37:06 +0100
commit98c98549a237be0db4689bf38436a24fc30ac111 (patch)
treef21be588511dad9507c8509c386b984810d027da /src/test/java
parent444dc1b64c015197bf6b5219da9459bc0cf6f787 (diff)
Handle numbering levels defined without an index
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java11
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/docx/NumberingXmlTests.java60
2 files changed, 67 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 ef5262a..ea3e3f3 100644
--- a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java
+++ b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java
@@ -259,18 +259,21 @@ public class BodyXmlTests {
}
@Test
- public void numberingPropertiesAreIgnoredIfLevelIsMissing() {
+ public void whenNumberingPropertiesAreMissingLevelThenLevelOf0IsAssumed() {
// TODO: emit warning
XmlElement element = paragraphXml(list(
element("w:pPr", list(
element("w:numPr", map(), list(
- element("w:numId", map("w:val", "42"))))))));
+ element("w:numId", map("w:val", "42"))
+ ))
+ ))
+ ));
- Numbering numbering = numberingMap(map("42", map("1", Numbering.AbstractNumLevel.ordered("1"))));
+ Numbering numbering = numberingMap(map("42", map("0", Numbering.AbstractNumLevel.ordered("0"))));
assertThat(
readSuccess(bodyReader(numbering), element),
- hasNumbering(Optional.empty()));
+ hasNumbering(NumberingLevel.ordered("0")));
}
@Test
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 4853b54..676b654 100644
--- a/src/test/java/org/zwobble/mammoth/tests/docx/NumberingXmlTests.java
+++ b/src/test/java/org/zwobble/mammoth/tests/docx/NumberingXmlTests.java
@@ -79,6 +79,66 @@ public class NumberingXmlTests {
}
@Test
+ public void givenNoOtherLevelsWithIndexOf0WhenLevelIsMissingIlvlThenLevelIndexIs0() {
+ XmlElement element = element("w:numbering", list(
+ element("w:abstractNum", map("w:abstractNumId", "42"), list(
+ element("w:lvl", map(), list(
+ element("w:numFmt", map("w:val", "decimal"))
+ ))
+ )),
+ element("w:num", map("w:numId", "47"), list(
+ element("w:abstractNumId", map("w:val", "42"))
+ ))
+ ));
+
+ Numbering numbering = readNumbering(element);
+
+ assertEquals(true, numbering.findLevel("47", "0").get().isOrdered());
+ }
+
+ @Test
+ public void givenPreviousOtherLevelWithIndexOf0WhenLevelIsMissingIlvlThenLevelIsIgnored() {
+ XmlElement element = 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:lvl", map(), list(
+ element("w:numFmt", map("w:val", "decimal"))
+ ))
+ )),
+ element("w:num", map("w:numId", "47"), list(
+ element("w:abstractNumId", map("w:val", "42"))
+ ))
+ ));
+
+ Numbering numbering = readNumbering(element);
+
+ assertEquals(false, numbering.findLevel("47", "0").get().isOrdered());
+ }
+
+ @Test
+ public void givenSubsequentOtherLevelWithIndexOf0WhenLevelIsMissingIlvlThenLevelIsIgnored() {
+ XmlElement element = element("w:numbering", list(
+ element("w:abstractNum", map("w:abstractNumId", "42"), list(
+ element("w:lvl", map(), list(
+ element("w:numFmt", map("w:val", "decimal"))
+ )),
+ element("w:lvl", map("w:ilvl", "0"), list(
+ element("w:numFmt", map("w:val", "bullet"))
+ ))
+ )),
+ element("w:num", map("w:numId", "47"), list(
+ element("w:abstractNumId", map("w:val", "42"))
+ ))
+ ));
+
+ Numbering numbering = readNumbering(element);
+
+ assertEquals(false, numbering.findLevel("47", "0").get().isOrdered());
+ }
+
+ @Test
public void whenAbstractNumHasNumStyleLinkThenStyleIsUsedToFindNum() {
Numbering numbering = readNumberingXmlElement(
element("w:numbering", list(