/* * Copyright (C) 2007 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package libcore.xml; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import junit.framework.TestCase; import org.w3c.dom.Comment; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.w3c.dom.ProcessingInstruction; import org.w3c.dom.Text; public class SimpleBuilderTest extends TestCase { private DocumentBuilder builder; protected void setUp() throws Exception { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(false); factory.setNamespaceAware(true); builder = factory.newDocumentBuilder(); } protected void tearDown() throws Exception { builder = null; } private String getTextContent(Node node) { String result = (node instanceof Text ? ((Text) node).getData() : ""); Node child = node.getFirstChild(); while (child != null) { result = result + getTextContent(child); child = child.getNextSibling(); } return result; } public void testGoodFile1() throws Exception { Document document = builder.parse(getClass().getResourceAsStream( "/SimpleBuilderTest.xml")); Element root = document.getDocumentElement(); assertNotNull(root); assertEquals("http://www.foo.bar", root.getNamespaceURI()); assertEquals("t", root.getPrefix()); assertEquals("stuff", root.getLocalName()); NodeList list = root.getElementsByTagName("nestedStuff"); assertNotNull(list); assertEquals(list.getLength(), 4); Element one = (Element) list.item(0); Element two = (Element) list.item(1); Element three = (Element) list.item(2); Element four = (Element) list.item(3); assertEquals("This space intentionally left blank.", getTextContent(one)); assertEquals("Nothing to see here - please get along!", getTextContent(two)); assertEquals("Rent this space!", getTextContent(three)); assertEquals("", getTextContent(four)); assertEquals("eins", one.getAttribute("one")); assertEquals("zwei", two.getAttribute("two")); assertEquals("drei", three.getAttribute("three")); assertEquals("vier", four.getAttribute("t:four")); assertEquals("vier", four.getAttributeNS("http://www.foo.bar", "four")); list = document.getChildNodes(); assertNotNull(list); String proinst = ""; String comment = ""; for (int i = 0; i < list.getLength(); i++) { Node node = list.item(i); if (node instanceof ProcessingInstruction) { proinst = proinst + node.getNodeValue(); } else if (node instanceof Comment) { comment = comment + node.getNodeValue(); } } assertEquals("The quick brown fox jumps over the lazy dog.", proinst); assertEquals(" Fragile! Handle me with care! ", comment); } public void testGoodFile2() throws Exception { Document document = builder.parse(getClass().getResourceAsStream( "/staffNS.xml")); Element root = document.getDocumentElement(); assertNotNull(root); } }