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