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