X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=support%2Fgeneral%2Fsrc%2Ftest%2Fjava%2Forg%2Fwamblee%2Fxml%2FXmlUtils.java;h=4aea6bfa74f831dab110fc2b5be28849b3419b10;hb=26805fc0810098c4bd8009a35c8719478e74153e;hp=fc894251eb0aedf0429a6bb0ec609759edec3182;hpb=dc05aae40ab88d4224d37f53c35d516107a3b031;p=utils diff --git a/support/general/src/test/java/org/wamblee/xml/XmlUtils.java b/support/general/src/test/java/org/wamblee/xml/XmlUtils.java index fc894251..4aea6bfa 100644 --- a/support/general/src/test/java/org/wamblee/xml/XmlUtils.java +++ b/support/general/src/test/java/org/wamblee/xml/XmlUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2005 the original author or authors. + * Copyright 2005-2010 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,9 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.wamblee.xml; +import java.io.Serializable; import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -30,11 +30,10 @@ import org.dom4j.Element; /** * XML test support utilities. - * + * * @author Erik Brakkee */ public final class XmlUtils { - /** * Disabled constructor. * @@ -46,60 +45,62 @@ public final class XmlUtils { /** * Checks equality of two XML documents excluding comment and processing * nodes and trimming the text of the elements. In case of problems, it - * provides an xpath-like expression describing where the problem is. + * provides an xpath-like expression describing where the problem is. * * @param aMsg * @param aExpected * @param aActual */ public static void assertEquals(String aMsg, - org.w3c.dom.Document aExpected, org.w3c.dom.Document aActual) { + org.w3c.dom.Document aExpected, org.w3c.dom.Document aActual) { assertEquals(aMsg, DomUtils.convert(aExpected), DomUtils - .convert(aActual)); + .convert(aActual)); } /** * Checks equality of two XML documents excluding comment and processing - * nodes and trimming the text of the elements. In case of problems, it - * provides an xpath-like expression describing where the problem is. + * nodes and trimming the text of the elements. In case of problems, it + * provides an xpath-like expression describing where the problem is. * * @param aMsg * @param aExpected * @param aActual */ public static void assertEquals(String aMsg, Document aExpected, - Document aActual) { - assertEquals(aMsg + "/" + aExpected.getRootElement().getName(), aExpected.getRootElement(), aActual.getRootElement()); + Document aActual) { + assertEquals(aMsg + "/" + aExpected.getRootElement().getName(), + aExpected.getRootElement(), aActual.getRootElement()); } /** * Checks equality of two XML elements excluding comment and processing * nodes and trimming the text of the elements. In case of problems, it - * provides an xpath-like expression describing where the problem is. + * provides an xpath-like expression describing where the problem is. * * @param aMsg * @param aExpected * @param aActual */ public static void assertEquals(String aMsg, Element aExpected, - Element aActual) { - + Element aActual) { // Name. TestCase.assertEquals(aMsg + "/name()", aExpected.getName(), aActual - .getName()); + .getName()); // Text TestCase.assertEquals(aMsg + "/text()", aExpected.getTextTrim(), - aActual.getTextTrim()); + aActual.getTextTrim()); // Attributes List expectedAttrs = aExpected.attributes(); Collections.sort(expectedAttrs, new AttributeComparator()); + List actualAttrs = aActual.attributes(); Collections.sort(actualAttrs, new AttributeComparator()); TestCase.assertEquals("count(" + aMsg + "/@*)", expectedAttrs.size(), - actualAttrs.size()); + actualAttrs.size()); + for (int i = 0; i < expectedAttrs.size(); i++) { String msg = aMsg + "/@" + expectedAttrs.get(i).getName(); assertEquals(msg, expectedAttrs.get(i), actualAttrs.get(i)); @@ -109,47 +110,55 @@ public final class XmlUtils { List expectedElems = aExpected.elements(); List actualElems = aActual.elements(); TestCase.assertEquals("count(" + aMsg + "/*)", expectedElems.size(), - actualElems.size()); + actualElems.size()); + // determine the how-manyth element of the given name we are at. // Maps element name to the last used index (or null if not yet used) Map elementIndex = new TreeMap(); + for (int i = 0; i < expectedElems.size(); i++) { String elemName = expectedElems.get(i).getName(); Integer index = elementIndex.get(elemName); + if (index == null) { index = 1; } else { index++; } + elementIndex.put(elemName, index); - String msg = aMsg + "/" + expectedElems.get(i).getName() + "[" - + index + "]"; + + String msg = aMsg + "/" + expectedElems.get(i).getName() + "[" + + index + "]"; assertEquals(msg, expectedElems.get(i), actualElems.get(i)); } } /** - * Checks equality of two attributes. In case of problems, it - * provides an xpath-like expression describing where the problem is. + * Checks equality of two attributes. In case of problems, it provides an + * xpath-like expression describing where the problem is. * * @param aMsg * @param aExpected * @param aActual */ public static void assertEquals(String aMsg, Attribute aExpected, - Attribute aActual) { + Attribute aActual) { TestCase.assertEquals(aMsg + ":name", aExpected.getName(), aActual - .getName()); + .getName()); TestCase.assertEquals(aMsg + ":value", aExpected.getValue(), aActual - .getValue()); + .getValue()); } /** * Comparator which compares attributes by name. */ private static final class AttributeComparator implements - Comparator { + Comparator, Serializable { + + private static final long serialVersionUID = 7897287273519886301L; + /* * (non-Javadoc) *