1/* 2 * Copyright (C) 2008 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.android.layoutlib.bridge; 18 19import org.kxml2.io.KXmlParser; 20import org.w3c.dom.Node; 21import org.xmlpull.v1.XmlPullParser; 22 23import java.io.InputStream; 24 25import junit.framework.TestCase; 26 27public class BridgeXmlBlockParserTest extends TestCase { 28 29 @Override 30 protected void setUp() throws Exception { 31 super.setUp(); 32 } 33 34 @Override 35 protected void tearDown() throws Exception { 36 super.tearDown(); 37 } 38 39 public void testXmlBlockParser() throws Exception { 40 XmlPullParser parser = new KXmlParser(); 41 parser = new BridgeXmlBlockParser(parser, null, false /* platformResourceFlag */); 42 43 InputStream input = this.getClass().getClassLoader().getResourceAsStream( 44 "com/android/layoutlib/testdata/layout1.xml"); 45 parser.setInput(input, null /*encoding*/); 46 47 assertEquals(XmlPullParser.START_DOCUMENT, parser.next()); 48 49 assertEquals(XmlPullParser.START_TAG, parser.next()); 50 assertEquals("LinearLayout", parser.getName()); 51 52 assertEquals(XmlPullParser.TEXT, parser.next()); 53 54 assertEquals(XmlPullParser.START_TAG, parser.next()); 55 assertEquals("Button", parser.getName()); 56 assertEquals(XmlPullParser.TEXT, parser.next()); 57 assertEquals(XmlPullParser.END_TAG, parser.next()); 58 59 assertEquals(XmlPullParser.TEXT, parser.next()); 60 61 assertEquals(XmlPullParser.START_TAG, parser.next()); 62 assertEquals("View", parser.getName()); 63 assertEquals(XmlPullParser.END_TAG, parser.next()); 64 65 assertEquals(XmlPullParser.TEXT, parser.next()); 66 67 assertEquals(XmlPullParser.START_TAG, parser.next()); 68 assertEquals("TextView", parser.getName()); 69 assertEquals(XmlPullParser.END_TAG, parser.next()); 70 71 assertEquals(XmlPullParser.TEXT, parser.next()); 72 73 assertEquals(XmlPullParser.END_TAG, parser.next()); 74 assertEquals(XmlPullParser.END_DOCUMENT, parser.next()); 75 } 76 77 //------------ 78 79 /** 80 * Quick'n'dirty debug helper that dumps an XML structure to stdout. 81 */ 82 @SuppressWarnings("unused") 83 private void dump(Node node, String prefix) { 84 Node n; 85 86 String[] types = { 87 "unknown", 88 "ELEMENT_NODE", 89 "ATTRIBUTE_NODE", 90 "TEXT_NODE", 91 "CDATA_SECTION_NODE", 92 "ENTITY_REFERENCE_NODE", 93 "ENTITY_NODE", 94 "PROCESSING_INSTRUCTION_NODE", 95 "COMMENT_NODE", 96 "DOCUMENT_NODE", 97 "DOCUMENT_TYPE_NODE", 98 "DOCUMENT_FRAGMENT_NODE", 99 "NOTATION_NODE" 100 }; 101 102 String s = String.format("%s<%s> %s %s", 103 prefix, 104 types[node.getNodeType()], 105 node.getNodeName(), 106 node.getNodeValue() == null ? "" : node.getNodeValue().trim()); 107 108 System.out.println(s); 109 110 n = node.getFirstChild(); 111 if (n != null) { 112 dump(n, prefix + "- "); 113 } 114 115 n = node.getNextSibling(); 116 if (n != null) { 117 dump(n, prefix); 118 } 119 120 } 121 122} 123