From ea4ffab0b6485aed3ae36880fc3d6ef42496abf1 Mon Sep 17 00:00:00 2001 From: Johannes Brodwall Date: Sat, 12 Dec 2015 23:39:03 +0100 Subject: [PATCH] Increase test coverage --- src/main/java/org/eaxy/Element.java | 10 ++++++++- src/main/java/org/eaxy/Objects.java | 7 ------- src/main/java/org/eaxy/SaxReader.java | 1 + src/main/java/org/eaxy/StaxReader.java | 21 ++++++------------- src/main/java/org/eaxy/Validator.java | 2 +- src/main/java/org/eaxy/Xml.java | 11 ---------- .../java/org/eaxy/XmlSerializationTest.java | 5 ++--- src/test/java/org/eaxy/html/HtmlFormTest.java | 4 +++- .../org/eaxy/usage/ElementBuilderTest.java | 10 ++++++--- 9 files changed, 29 insertions(+), 42 deletions(-) diff --git a/src/main/java/org/eaxy/Element.java b/src/main/java/org/eaxy/Element.java index 2c7d008..2cd37a0 100644 --- a/src/main/java/org/eaxy/Element.java +++ b/src/main/java/org/eaxy/Element.java @@ -307,7 +307,15 @@ public Element selected(boolean selected) { @Override public Element copy() { - return new Element(this.name, Objects.list(children, Node.class), attributes.values(), namespaces); + return new Element(this.name, copyChildren(), attributes.values(), namespaces); + } + + private List copyChildren() { + List list = new ArrayList(); + for (Node o : children) { + list.add(o.copy()); + } + return list; } Element attrs(Collection attributes) { diff --git a/src/main/java/org/eaxy/Objects.java b/src/main/java/org/eaxy/Objects.java index 3965619..57ababd 100644 --- a/src/main/java/org/eaxy/Objects.java +++ b/src/main/java/org/eaxy/Objects.java @@ -39,11 +39,4 @@ public static String validatePresent(String string, String name) { return string; } - public static String validateNullOrPresent(String string, String name) { - if (string != null && string.isEmpty()) { - throw new IllegalArgumentException(name + " must be null or present"); - } - return string; - } - } diff --git a/src/main/java/org/eaxy/SaxReader.java b/src/main/java/org/eaxy/SaxReader.java index 1806e69..ee53272 100644 --- a/src/main/java/org/eaxy/SaxReader.java +++ b/src/main/java/org/eaxy/SaxReader.java @@ -26,6 +26,7 @@ static final class ElementBuilderHandler extends DefaultHandler2 { @Override public void startDocument() { document = new Document(); + } @Override diff --git a/src/main/java/org/eaxy/StaxReader.java b/src/main/java/org/eaxy/StaxReader.java index 230c02e..eded0e2 100644 --- a/src/main/java/org/eaxy/StaxReader.java +++ b/src/main/java/org/eaxy/StaxReader.java @@ -22,11 +22,8 @@ public class StaxReader implements XMLStreamConstants { private final XMLStreamReader streamReader; private final Document document = new Document(); - private StaxReader(Reader reader) throws XMLStreamException { - XMLInputFactory inputFactory = XMLInputFactory.newInstance(); - inputFactory.setProperty(XMLInputFactory.IS_COALESCING, Boolean.FALSE); - inputFactory.setProperty(Constants.ZEPHYR_PROPERTY_PREFIX + Constants.STAX_REPORT_CDATA_EVENT, Boolean.TRUE); - this.streamReader = inputFactory.createXMLStreamReader(reader); + private StaxReader(XMLStreamReader streamReader) { + this.streamReader = streamReader; if (streamReader.getVersion() != null) { document.setVersion(streamReader.getVersion()); } @@ -35,22 +32,16 @@ private StaxReader(Reader reader) throws XMLStreamException { } } - private StaxReader(InputStream inputStream) throws XMLStreamException { + private static XMLInputFactory getInputFactory() { XMLInputFactory inputFactory = XMLInputFactory.newInstance(); inputFactory.setProperty(XMLInputFactory.IS_COALESCING, Boolean.FALSE); inputFactory.setProperty(Constants.ZEPHYR_PROPERTY_PREFIX + Constants.STAX_REPORT_CDATA_EVENT, Boolean.TRUE); - this.streamReader = inputFactory.createXMLStreamReader(inputStream); - if (streamReader.getVersion() != null) { - document.setVersion(streamReader.getVersion()); - } - if (streamReader.getEncoding() != null) { - document.setEncoding(streamReader.getEncoding()); - } + return inputFactory; } public static Document read(Reader reader) { try { - return new StaxReader(reader).doParse(); + return new StaxReader(getInputFactory().createXMLStreamReader(reader)).doParse(); } catch (XMLStreamException e) { throw new MalformedXMLException(e.getMessage(), e.getLocation().getLineNumber()); } @@ -58,7 +49,7 @@ public static Document read(Reader reader) { public static Document read(InputStream inputStream) { try { - return new StaxReader(inputStream).doParse(); + return new StaxReader(getInputFactory().createXMLStreamReader(inputStream)).doParse(); } catch (XMLStreamException e) { throw new MalformedXMLException(e.getMessage(), e.getLocation().getLineNumber()); } diff --git a/src/main/java/org/eaxy/Validator.java b/src/main/java/org/eaxy/Validator.java index cac467f..f3309bf 100644 --- a/src/main/java/org/eaxy/Validator.java +++ b/src/main/java/org/eaxy/Validator.java @@ -34,7 +34,7 @@ public Validator(String[] resourcePaths) { public void validate(Element xml) { try { - validator.validate(new DOMSource(DomTransformer.toDom(new Document(xml)))); + validator.validate(new DOMSource(Xml.toDom(new Document(xml)))); } catch (SAXException e) { throw new RuntimeException(e.getMessage()); } catch (IOException e) { diff --git a/src/main/java/org/eaxy/Xml.java b/src/main/java/org/eaxy/Xml.java index 8320c2c..e8674c8 100644 --- a/src/main/java/org/eaxy/Xml.java +++ b/src/main/java/org/eaxy/Xml.java @@ -4,7 +4,6 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; -import java.io.InputStreamReader; import java.io.Reader; import java.io.StringReader; import java.io.Writer; @@ -132,12 +131,6 @@ public static Document readAndClose(InputStream inputStream) throws IOException return StaxReader.read(inputStream); } - public static Document readAndClose(InputStream inputStream, Charset charset) throws IOException { - try (Reader reader = new InputStreamReader(inputStream, charset)) { - return read(reader); - } - } - public static Document read(Reader reader) throws IOException { return StaxReader.read(reader); } @@ -146,10 +139,6 @@ public static Document fromDom(org.w3c.dom.Document document) { return DomTransformer.fromDom(document); } - public static org.w3c.dom.Document toDom(Element element) { - return DomTransformer.toDom(new Document(element)); - } - public static org.w3c.dom.Document toDom(Document document) { return DomTransformer.toDom(document); } diff --git a/src/test/java/org/eaxy/XmlSerializationTest.java b/src/test/java/org/eaxy/XmlSerializationTest.java index f5b34d7..d9ab3fb 100644 --- a/src/test/java/org/eaxy/XmlSerializationTest.java +++ b/src/test/java/org/eaxy/XmlSerializationTest.java @@ -3,7 +3,6 @@ import static org.assertj.core.api.Assertions.assertThat; -import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -57,8 +56,8 @@ public void shouldTransformSerializedViaDom() throws Exception { @Test public void shouldTransformViaDom() throws Exception { - Document doc = DomTransformer.fromDom(DomTransformer.toDom(Xml.read(xmlFile))); - assertEquals(DomTransformer.fromDom(DomTransformer.toDom(doc)), + Document doc = Xml.fromDom(Xml.toDom(Xml.read(xmlFile))); + assertEquals(Xml.fromDom(Xml.toDom(doc)), IOUtils.slurp(xmlFile)); } diff --git a/src/test/java/org/eaxy/html/HtmlFormTest.java b/src/test/java/org/eaxy/html/HtmlFormTest.java index 30f118d..f4b1215 100644 --- a/src/test/java/org/eaxy/html/HtmlFormTest.java +++ b/src/test/java/org/eaxy/html/HtmlFormTest.java @@ -10,6 +10,7 @@ import java.util.Map; import org.eaxy.Element; +import org.eaxy.Xml; import org.junit.Test; public class HtmlFormTest { @@ -240,7 +241,8 @@ public void shouldDeserializeForm() { el("input").name("last_name").type("text"), el("input").name("unchecked_box").type("checkbox"), el("input").name("checked=box").type("checkbox")); - HtmlForm form = new HtmlForm(html); + Xhtml xhtml = new Xhtml(Xml.doc(el("body", html))); + HtmlForm form = xhtml.getForm("form"); form.deserialize("last_name=O%27Malley&checked%3Dbox="); assertThat(form.get("last_name")).isEqualTo("O'Malley"); assertThat(form.get("checked=box")).isEqualTo("on"); diff --git a/src/test/java/org/eaxy/usage/ElementBuilderTest.java b/src/test/java/org/eaxy/usage/ElementBuilderTest.java index a8d6bfc..8c7685d 100644 --- a/src/test/java/org/eaxy/usage/ElementBuilderTest.java +++ b/src/test/java/org/eaxy/usage/ElementBuilderTest.java @@ -11,7 +11,6 @@ import java.util.Map; import org.eaxy.Document; -import org.eaxy.DomTransformer; import org.eaxy.Element; import org.eaxy.MalformedXMLException; import org.eaxy.Namespace; @@ -51,6 +50,11 @@ public void shouldGetAllAttributes() { assertThat(attrs.values()).containsExactly("a", "b", "c"); } + @Test + public void shouldCreateAttributes() throws Exception { + assertThat(el("element", attr("a", "b")).hasAttr("a")).isTrue(); + } + @Test public void shouldSerializeAttributesWithSpecialChars() { assertThat(el("foo").attr("attr", "This is \"<\" - a less than sign").attr("attr")) @@ -222,8 +226,8 @@ public void shouldTranslateWithAttributeNamespaces() throws Exception { Element email = StaxReader.read(new StringReader(text)) .getRootElement(); - org.w3c.dom.Document dom = DomTransformer.toDom(new Document(email)); - Element transformed = DomTransformer.fromDom(dom).getRootElement(); + org.w3c.dom.Document dom = Xml.toDom(new Document(email)); + Element transformed = Xml.fromDom(dom).getRootElement(); assertThat(transformed.toXML()) .isEqualTo(email.toXML()); }