From 370df4d36053736446e9334008d012ebda5f86bb Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 20 May 2017 15:37:34 +0100 Subject: Read whether row is header --- .../tests/conversion/DocumentToHtmlTests.java | 8 ++-- .../tests/documents/DocumentElementMakers.java | 4 ++ .../zwobble/mammoth/tests/docx/BodyXmlTests.java | 52 +++++++++++++++------- .../mammoth/tests/docx/DocumentMatchers.java | 14 ++++++ 4 files changed, 58 insertions(+), 20 deletions(-) (limited to 'src/test/java') diff --git a/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java b/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java index 689b5f6..038056c 100644 --- a/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java @@ -224,10 +224,10 @@ public class DocumentToHtmlTests { public void tableIsConvertedToHtmlTable() { assertThat( convertToHtml(new Table(list( - new TableRow(list( + tableRow(list( tableCell(withChildren(paragraphWithText("Top left"))), tableCell(withChildren(paragraphWithText("Top right"))))), - new TableRow(list( + tableRow(list( tableCell(withChildren(paragraphWithText("Bottom left"))), tableCell(withChildren(paragraphWithText("Bottom right")))))))), @@ -244,7 +244,7 @@ public class DocumentToHtmlTests { public void tableCellsAreWrittenWithColspanIfNotEqualToOne() { assertThat( convertToHtml(new Table(list( - new TableRow(list( + tableRow(list( tableCell( withChildren(paragraphWithText("Top left")), withColspan(2) @@ -264,7 +264,7 @@ public class DocumentToHtmlTests { public void tableCellsAreWrittenWithRowspanIfNotEqualToOne() { assertThat( convertToHtml(new Table(list( - new TableRow(list( + tableRow(list( tableCell(withRowspan(2)) )) ))), 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 ed00729..560eb54 100644 --- a/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java +++ b/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java @@ -108,6 +108,10 @@ public class DocumentElementMakers { return run(withChildren(new Text(text))); } + public static TableRow tableRow(List cells) { + return new TableRow(cells, false); + } + public static TableCell tableCell(Object... args) { Arguments arguments = new Arguments(args); return new TableCell( 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 2eaa16f..e363983 100644 --- a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java @@ -593,7 +593,7 @@ public class BodyXmlTests { assertThat( readSuccess(bodyReader(), element), deepEquals(new Table(list( - new TableRow(list( + tableRow(list( new TableCell(1, 1, list( paragraph() )) @@ -602,6 +602,26 @@ public class BodyXmlTests { ); } + @Test + public void tblHeaderMarksTableRowAsHeader() { + XmlElement element = element("w:tbl", list( + element("w:tr", list( + element("w:trPr", list( + element("w:tblHeader") + )) + )), + element("w:tr") + )); + + assertThat( + readSuccess(bodyReader(), element), + isTable(hasChildren( + isRow(isHeader(true)), + isRow(isHeader(false)) + )) + ); + } + @Test public void gridspanIsReadAsColspanForTableCell() { XmlElement element = element("w:tbl", list( @@ -615,7 +635,7 @@ public class BodyXmlTests { assertThat( readSuccess(bodyReader(), element), deepEquals(new Table(list( - new TableRow(list( + tableRow(list( new TableCell(1, 2, list( paragraph() )) @@ -637,11 +657,11 @@ public class BodyXmlTests { assertThat( readSuccess(bodyReader(), element), deepEquals(new Table(list( - new TableRow(list(new TableCell(1, 1, list()))), - new TableRow(list(new TableCell(3, 1, list()))), - new TableRow(list()), - new TableRow(list()), - new TableRow(list(new TableCell(1, 1, list()))) + tableRow(list(new TableCell(1, 1, list()))), + tableRow(list(new TableCell(3, 1, list()))), + tableRow(list()), + tableRow(list()), + tableRow(list(new TableCell(1, 1, list()))) ))) ); } @@ -656,8 +676,8 @@ public class BodyXmlTests { assertThat( readSuccess(bodyReader(), element), deepEquals(new Table(list( - new TableRow(list(new TableCell(2, 1, list()))), - new TableRow(list()) + tableRow(list(new TableCell(2, 1, list()))), + tableRow(list()) ))) ); } @@ -674,10 +694,10 @@ public class BodyXmlTests { assertThat( readSuccess(bodyReader(), element), deepEquals(new Table(list( - new TableRow(list(new TableCell(1, 1, list()), new TableCell(1, 1, list()), new TableCell(3, 1, list()))), - new TableRow(list(new TableCell(1, 2, list()))), - new TableRow(list(new TableCell(1, 1, list()), new TableCell(1, 1, list()))), - new TableRow(list(new TableCell(1, 1, list()), new TableCell(1, 1, list()), new TableCell(1, 1, list()))) + tableRow(list(new TableCell(1, 1, list()), new TableCell(1, 1, list()), new TableCell(3, 1, list()))), + tableRow(list(new TableCell(1, 2, list()))), + tableRow(list(new TableCell(1, 1, list()), new TableCell(1, 1, list()))), + tableRow(list(new TableCell(1, 1, list()), new TableCell(1, 1, list()), new TableCell(1, 1, list()))) ))) ); } @@ -692,8 +712,8 @@ public class BodyXmlTests { assertThat( readSuccess(bodyReader(), element), deepEquals(new Table(list( - new TableRow(list(new TableCell(1, 2, list()), new TableCell(1, 1, list()))), - new TableRow(list(new TableCell(1, 1, list()), new TableCell(1, 1, list()))) + tableRow(list(new TableCell(1, 2, list()), new TableCell(1, 1, list()))), + tableRow(list(new TableCell(1, 1, list()), new TableCell(1, 1, list()))) ))) ); } @@ -722,7 +742,7 @@ public class BodyXmlTests { assertThat( read(bodyReader(), element), isInternalResult( - deepEquals(new Table(list(new TableRow(list(paragraph()))))), + deepEquals(new Table(list(tableRow(list(paragraph()))))), list("unexpected non-cell element in table row, cell merging may be incorrect") ) ); 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 d2718b7..8ecb902 100644 --- a/src/test/java/org/zwobble/mammoth/tests/docx/DocumentMatchers.java +++ b/src/test/java/org/zwobble/mammoth/tests/docx/DocumentMatchers.java @@ -46,6 +46,20 @@ public class DocumentMatchers { return cast(Run.class, allOf(matchers)); } + @SafeVarargs + static Matcher isTable(Matcher... matchers) { + return cast(Table.class, allOf(matchers)); + } + + @SafeVarargs + static Matcher isRow(Matcher... matchers) { + return cast(TableRow.class, allOf(matchers)); + } + + static Matcher isHeader(boolean isHeader) { + return hasProperty("header", equalTo(isHeader)); + } + private static Matcher cast(Class clazz, Matcher downcastMatcher) { return new TypeSafeDiagnosingMatcher() { @Override -- cgit v1.2.3