From 2aa8d73e234ffd91990187e6bd733c5aa514cff1 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Wed, 2 Mar 2016 18:40:00 +0000 Subject: Throw more information exception when attribute is missing --- .../zwobble/mammoth/internal/xml/XmlElement.java | 4 ++-- .../zwobble/mammoth/tests/xml/XmlElementTests.java | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 src/test/java/org/zwobble/mammoth/tests/xml/XmlElementTests.java diff --git a/src/main/java/org/zwobble/mammoth/internal/xml/XmlElement.java b/src/main/java/org/zwobble/mammoth/internal/xml/XmlElement.java index a0ed784..8b95973 100644 --- a/src/main/java/org/zwobble/mammoth/internal/xml/XmlElement.java +++ b/src/main/java/org/zwobble/mammoth/internal/xml/XmlElement.java @@ -30,8 +30,8 @@ public class XmlElement implements XmlNode, XmlElementLike { } public String getAttribute(String name) { - // TODO: throw more informative error message - return getAttributeOrNone(name).get(); + return getAttributeOrNone(name) + .orElseThrow(() -> new RuntimeException("Element has no '" + name + "' attribute")); } @Override diff --git a/src/test/java/org/zwobble/mammoth/tests/xml/XmlElementTests.java b/src/test/java/org/zwobble/mammoth/tests/xml/XmlElementTests.java new file mode 100644 index 0000000..f396b1b --- /dev/null +++ b/src/test/java/org/zwobble/mammoth/tests/xml/XmlElementTests.java @@ -0,0 +1,21 @@ +package org.zwobble.mammoth.tests.xml; + +import org.junit.Test; +import org.zwobble.mammoth.internal.xml.XmlElement; +import org.zwobble.mammoth.internal.xml.XmlNodes; + +import static org.junit.Assert.assertEquals; +import static org.zwobble.mammoth.tests.util.MammothAsserts.assertThrows; + +public class XmlElementTests { + @Test + public void TryingToGetNonExistentAttributeThrowsException() { + XmlElement element = XmlNodes.element("p"); + + RuntimeException exception = assertThrows( + RuntimeException.class, + () -> element.getAttribute("class")); + + assertEquals("Element has no 'class' attribute", exception.getMessage()); + } +} -- cgit v1.2.3