/* * Copyright (C) 2004, 2005 Joe Walnes. * Copyright (C) 2006, 2007 XStream Committers. * All rights reserved. * * The software in this package is published under the terms of the BSD * style license a copy of which has been included with this distribution in * the LICENSE.txt file. * * Created on 07. March 2004 by Joe Walnes */ package com.thoughtworks.xstream.io.xml; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.xml.xppdom.Xpp3Dom; import com.thoughtworks.xstream.io.xml.xppdom.Xpp3DomBuilder; import java.io.StringReader; import java.util.HashMap; import java.util.Map; public class XppDomReaderTest extends AbstractXMLReaderTest { protected HierarchicalStreamReader createReader(String xml) throws Exception { return new XppDomDriver().createReader(new StringReader(xml)); } public void testCanReadFromElementOfLargerDocument() throws Exception { String xml = "<big>" + " <small>" + " <tiny/>" + " </small>" + " <small-two>" + " </small-two>" + "</big>"; Xpp3Dom document = Xpp3DomBuilder.build(new StringReader(xml)); Xpp3Dom small = document.getChild("small"); HierarchicalStreamReader xmlReader = new XppDomReader(small); assertEquals("small", xmlReader.getNodeName()); xmlReader.moveDown(); assertEquals("tiny", xmlReader.getNodeName()); } public void testExposesAttributesKeysAndValuesByIndex() throws Exception { // overrides test in superclass, because XppDom does not retain order of actualAttributes. HierarchicalStreamReader xmlReader = createReader("<node hello='world' a='b' c='d'><empty/></node>"); assertEquals(3, xmlReader.getAttributeCount()); Map expectedAttributes = new HashMap(); expectedAttributes.put("hello", "world"); expectedAttributes.put("a", "b"); expectedAttributes.put("c", "d"); Map actualAttributes = new HashMap(); for (int i = 0; i < xmlReader.getAttributeCount(); i++) { String name = xmlReader.getAttributeName(i); String value = xmlReader.getAttribute(i); actualAttributes.put(name, value); } assertEquals(expectedAttributes, actualAttributes); xmlReader.moveDown(); assertEquals("empty", xmlReader.getNodeName()); assertEquals(0, xmlReader.getAttributeCount()); } }