// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.searchlib.gbdt; import org.junit.Test; import org.w3c.dom.Element; import java.util.List; import static org.junit.Assert.*; /** * @author Simon Thoresen Hult */ public class XmlHelperTestCase { @Test public void requireThatAttributeTextCanBeRetrieved() throws Exception { Element node = XmlHelper.parseXml(""); assertEquals("v1", XmlHelper.getAttributeText(node, "a1")); assertEquals("v2", XmlHelper.getAttributeText(node, "a2")); } @Test public void requireThatMissingAttributeTextThrowsIllegalArgument() throws Exception { try { XmlHelper.getAttributeText(XmlHelper.parseXml(""), "a1"); fail(); } catch (IllegalArgumentException e) { } try { XmlHelper.getAttributeText(XmlHelper.parseXml(""), "a1"); fail(); } catch (IllegalArgumentException e) { } } @Test public void requireThatSingleElementCanBeRetrieved() throws Exception { String xml = "" + " " + ""; Element element = XmlHelper.getSingleElement(XmlHelper.parseXml(xml), null); assertNotNull(element); assertEquals("a", XmlHelper.getAttributeText(element, "id")); } @Test public void requireThatNamedSingleElementCanBeRetrieved() throws Exception { String xml = "" + " " + " " + " " + ""; Element element = XmlHelper.getSingleElement(XmlHelper.parseXml(xml), "child"); assertNotNull(element); assertEquals("b", XmlHelper.getAttributeText(element, "id")); } @Test public void requireThatMissingSingleElementThrowsIllegalArgument() throws Exception { try { XmlHelper.getSingleElement(XmlHelper.parseXml(""), null); fail(); } catch (IllegalArgumentException e) { } } @Test public void requireThatMissingNamedSingleElementThrowsIllegalArgument() throws Exception { String xml = "" + " " + ""; try { XmlHelper.getSingleElement(XmlHelper.parseXml(xml), "child"); fail(); } catch (IllegalArgumentException e) { } } @Test public void requireThatAmbigousSingleElementThrowsIllegalArgument() throws Exception { String xml = "" + " " + " " + ""; try { XmlHelper.getSingleElement(XmlHelper.parseXml(xml), null); fail(); } catch (IllegalArgumentException e) { } } @Test public void requireThatAmbigousNamedSingleElementThrowsIllegalArgument() throws Exception { String xml = "" + " " + " " + " " + ""; try { XmlHelper.getSingleElement(XmlHelper.parseXml(xml), "child"); fail(); } catch (IllegalArgumentException e) { } } @Test public void requireThatChildElementsCanBeRetrieved() throws Exception { String xml = "" + " " + " " + ""; List lst = XmlHelper.getChildElements(XmlHelper.parseXml(xml), null); assertNotNull(lst); assertEquals(2, lst.size()); assertEquals("a", XmlHelper.getAttributeText(lst.get(0), "id")); assertEquals("b", XmlHelper.getAttributeText(lst.get(1), "id")); } @Test public void requireThatNamedChildElementsCanBeRetrieved() throws Exception { String xml = "" + " " + " " + " " + ""; List lst = XmlHelper.getChildElements(XmlHelper.parseXml(xml), "child"); assertNotNull(lst); assertEquals(2, lst.size()); assertEquals("a", XmlHelper.getAttributeText(lst.get(0), "id")); assertEquals("c", XmlHelper.getAttributeText(lst.get(1), "id")); } @Test public void requireThatChildElementsAreNeverNull() throws Exception { List lst = XmlHelper.getChildElements(XmlHelper.parseXml(""), null); assertNotNull(lst); assertTrue(lst.isEmpty()); } @Test public void requireThatNamedChildElementsAreNeverNull() throws Exception { List lst = XmlHelper.getChildElements(XmlHelper.parseXml(""), "child"); assertNotNull(lst); assertTrue(lst.isEmpty()); } }