BridgeXmlBlockParserTest.java revision 1911a6f7812e3f7dcb83fd4741a297d043a80e46
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.android; 18 19import com.android.layoutlib.bridge.android.BridgeXmlBlockParser; 20 21import org.kxml2.io.KXmlParser; 22import org.w3c.dom.Node; 23import org.xmlpull.v1.XmlPullParser; 24 25import java.io.InputStream; 26 27import junit.framework.TestCase; 28 29public class BridgeXmlBlockParserTest extends TestCase { 30 31 @Override 32 protected void setUp() throws Exception { 33 super.setUp(); 34 } 35 36 @Override 37 protected void tearDown() throws Exception { 38 super.tearDown(); 39 } 40 41 public void testXmlBlockParser() throws Exception { 42 XmlPullParser parser = new KXmlParser(); 43 parser = new BridgeXmlBlockParser(parser, null, false /* platformResourceFlag */); 44 45 InputStream input = this.getClass().getClassLoader().getResourceAsStream( 46 "com/android/layoutlib/testdata/layout1.xml"); 47 parser.setInput(input, null /*encoding*/); 48 49 assertEquals(XmlPullParser.START_DOCUMENT, parser.next()); 50 51 assertEquals(XmlPullParser.START_TAG, parser.next()); 52 assertEquals("LinearLayout", parser.getName()); 53 54 assertEquals(XmlPullParser.TEXT, parser.next()); 55 56 assertEquals(XmlPullParser.START_TAG, parser.next()); 57 assertEquals("Button", parser.getName()); 58 assertEquals(XmlPullParser.TEXT, parser.next()); 59 assertEquals(XmlPullParser.END_TAG, parser.next()); 60 61 assertEquals(XmlPullParser.TEXT, parser.next()); 62 63 assertEquals(XmlPullParser.START_TAG, parser.next()); 64 assertEquals("View", parser.getName()); 65 assertEquals(XmlPullParser.END_TAG, parser.next()); 66 67 assertEquals(XmlPullParser.TEXT, parser.next()); 68 69 assertEquals(XmlPullParser.START_TAG, parser.next()); 70 assertEquals("TextView", parser.getName()); 71 assertEquals(XmlPullParser.END_TAG, parser.next()); 72 73 assertEquals(XmlPullParser.TEXT, parser.next()); 74 75 assertEquals(XmlPullParser.END_TAG, parser.next()); 76 assertEquals(XmlPullParser.END_DOCUMENT, parser.next()); 77 } 78 79 //------------ 80 81 /** 82 * Quick'n'dirty debug helper that dumps an XML structure to stdout. 83 */ 84 @SuppressWarnings("unused") 85 private void dump(Node node, String prefix) { 86 Node n; 87 88 String[] types = { 89 "unknown", 90 "ELEMENT_NODE", 91 "ATTRIBUTE_NODE", 92 "TEXT_NODE", 93 "CDATA_SECTION_NODE", 94 "ENTITY_REFERENCE_NODE", 95 "ENTITY_NODE", 96 "PROCESSING_INSTRUCTION_NODE", 97 "COMMENT_NODE", 98 "DOCUMENT_NODE", 99 "DOCUMENT_TYPE_NODE", 100 "DOCUMENT_FRAGMENT_NODE", 101 "NOTATION_NODE" 102 }; 103 104 String s = String.format("%s<%s> %s %s", 105 prefix, 106 types[node.getNodeType()], 107 node.getNodeName(), 108 node.getNodeValue() == null ? "" : node.getNodeValue().trim()); 109 110 System.out.println(s); 111 112 n = node.getFirstChild(); 113 if (n != null) { 114 dump(n, prefix + "- "); 115 } 116 117 n = node.getNextSibling(); 118 if (n != null) { 119 dump(n, prefix); 120 } 121 122 } 123 124} 125