From 87d8554726e81add059b211c6b120dc8d5003849 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 21 Jul 2017 12:31:11 +0100 Subject: Add style mapping for small caps --- .../tests/conversion/DocumentToHtmlTests.java | 17 +++++++++++++++ .../tests/documents/DocumentElementMakers.java | 6 ++++++ .../zwobble/mammoth/tests/docx/BodyXmlTests.java | 24 +++++++++++++++++++++- .../tests/styles/parsing/StyleMapParserTests.java | 6 ++++++ 4 files changed, 52 insertions(+), 1 deletion(-) (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 ad85bbb..6155f5a 100644 --- a/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java @@ -173,6 +173,23 @@ public class DocumentToHtmlTests { deepEquals(list(Html.element("del", list(Html.text("Hello")))))); } + @Test + public void smallCapsIsIgnoredByDefault() { + assertThat( + convertToHtml(run(withSmallCaps(true), withChildren(new Text("Hello")))), + deepEquals(list(Html.text("Hello")))); + } + + @Test + public void smallCapsCanBeMappedUsingStyleMapping() { + assertThat( + convertToHtml( + run(withSmallCaps(true), withChildren(new Text("Hello"))), + StyleMap.builder().smallCaps(HtmlPath.element("span")).build()), + + deepEquals(list(Html.element("span", list(Html.text("Hello")))))); + } + @Test public void superscriptRunsAreWrappedInSuperscriptTags() { assertThat( 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 ea53458..4bff04d 100644 --- a/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java +++ b/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java @@ -19,6 +19,7 @@ public class DocumentElementMakers { private static final ArgumentKey ITALIC = new ArgumentKey<>("italic"); private static final ArgumentKey UNDERLINE = new ArgumentKey<>("underline"); private static final ArgumentKey STRIKETHROUGH = new ArgumentKey<>("strikethrough"); + private static final ArgumentKey SMALL_CAPS = new ArgumentKey<>("smallCaps"); private static final ArgumentKey VERTICAL_ALIGNMENT = new ArgumentKey<>("verticalAlignment"); private static final ArgumentKey> CHILDREN = new ArgumentKey<>("children"); private static final ArgumentKey IS_HEADER = new ArgumentKey<>("isHeader"); @@ -53,6 +54,10 @@ public class DocumentElementMakers { return arg(STRIKETHROUGH, strikethrough); } + public static Argument withSmallCaps(boolean smallCaps) { + return arg(SMALL_CAPS, smallCaps); + } + public static Argument withVerticalAlignment(VerticalAlignment verticalAlignment) { return arg(VERTICAL_ALIGNMENT, verticalAlignment); } @@ -106,6 +111,7 @@ public class DocumentElementMakers { arguments.get(ITALIC, false), arguments.get(UNDERLINE, false), arguments.get(STRIKETHROUGH, false), + arguments.get(SMALL_CAPS, false), arguments.get(VERTICAL_ALIGNMENT, VerticalAlignment.BASELINE), arguments.get(STYLE, 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 fc67a28..c5756ae 100644 --- a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java @@ -443,12 +443,34 @@ public class BodyXmlTests { hasProperty("strikethrough", equalTo(true))); } + @Test + public void runIsNotSmallCapsIfSmallCapsElementIsNotPresent() { + XmlElement element = runXmlWithProperties(); + + assertThat( + readSuccess(bodyReader(), element), + hasProperty("smallCaps", equalTo(false))); + } + + @Test + public void runIsSmallCapsIfSmallCapsElementIsPresent() { + XmlElement element = runXmlWithProperties(element("w:smallCaps")); + + assertThat( + readSuccess(bodyReader(), element), + hasProperty("smallCaps", equalTo(true))); + } + @RunWith(Parameterized.class) public static class RunBooleanPropertyTests { @Parameterized.Parameters(name = "propertyName: {0}, tagName: {1}") public static Collection data() { return list(new Object[][] { - {"bold", "w:b"}, {"underline", "w:u"}, {"italic", "w:i"}, {"strikethrough", "w:strike"} + {"bold", "w:b"}, + {"underline", "w:u"}, + {"italic", "w:i"}, + {"strikethrough", "w:strike"}, + {"smallCaps", "w:smallCaps"} }); } diff --git a/src/test/java/org/zwobble/mammoth/tests/styles/parsing/StyleMapParserTests.java b/src/test/java/org/zwobble/mammoth/tests/styles/parsing/StyleMapParserTests.java index 89045a1..9837479 100644 --- a/src/test/java/org/zwobble/mammoth/tests/styles/parsing/StyleMapParserTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/styles/parsing/StyleMapParserTests.java @@ -50,6 +50,12 @@ public class StyleMapParserTests { assertThat(styleMap, deepEquals(StyleMap.builder().strikethrough(HtmlPath.collapsibleElement("del")).build())); } + @Test + public void canMapSmallCaps() { + StyleMap styleMap = StyleMapParser.parse("small-caps => span"); + assertThat(styleMap, deepEquals(StyleMap.builder().smallCaps(HtmlPath.collapsibleElement("span")).build())); + } + @Test public void canMapCommentReference() { StyleMap styleMap = StyleMapParser.parse("comment-reference =>"); -- cgit v1.2.3