1282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski/* 2282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Copyright (C) 2008 The Android Open Source Project 3282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 4282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Licensed under the Apache License, Version 2.0 (the "License"); 5282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * you may not use this file except in compliance with the License. 6282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * You may obtain a copy of the License at 7282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 8282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * http://www.apache.org/licenses/LICENSE-2.0 9282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 10282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Unless required by applicable law or agreed to in writing, software 11282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * distributed under the License is distributed on an "AS IS" BASIS, 12282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * See the License for the specific language governing permissions and 14282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * limitations under the License. 15282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 16282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 17282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipackage com.android.layoutlib.bridge.android; 18282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 19282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport com.android.layoutlib.bridge.impl.ParserFactory; 20282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 21282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport org.w3c.dom.Node; 22282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport org.xmlpull.v1.XmlPullParser; 23282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 24282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport junit.framework.TestCase; 25282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 26282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic class BridgeXmlBlockParserTest extends TestCase { 27282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski public void testXmlBlockParser() throws Exception { 28282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 29282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski XmlPullParser parser = ParserFactory.create( 30282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski getClass().getResourceAsStream("/com/android/layoutlib/testdata/layout1.xml"), 31282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski "layout1.xml"); 32282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 33282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski parser = new BridgeXmlBlockParser(parser, null, false /* platformResourceFlag */); 34282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 35282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski assertEquals(XmlPullParser.START_DOCUMENT, parser.next()); 36282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 37282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski assertEquals(XmlPullParser.START_TAG, parser.next()); 38282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski assertEquals("LinearLayout", parser.getName()); 39282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 40282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski assertEquals(XmlPullParser.TEXT, parser.next()); 41282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 42282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski assertEquals(XmlPullParser.START_TAG, parser.next()); 43282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski assertEquals("Button", parser.getName()); 44282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski assertEquals(XmlPullParser.TEXT, parser.next()); 45282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski assertEquals(XmlPullParser.END_TAG, parser.next()); 46282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 47282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski assertEquals(XmlPullParser.TEXT, parser.next()); 48282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 49282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski assertEquals(XmlPullParser.START_TAG, parser.next()); 50282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski assertEquals("View", parser.getName()); 51282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski assertEquals(XmlPullParser.END_TAG, parser.next()); 52282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 53282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski assertEquals(XmlPullParser.TEXT, parser.next()); 54282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 55282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski assertEquals(XmlPullParser.START_TAG, parser.next()); 56282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski assertEquals("TextView", parser.getName()); 57282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski assertEquals(XmlPullParser.END_TAG, parser.next()); 58282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 59282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski assertEquals(XmlPullParser.TEXT, parser.next()); 60282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 61282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski assertEquals(XmlPullParser.END_TAG, parser.next()); 62282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski assertEquals(XmlPullParser.END_DOCUMENT, parser.next()); 63282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 64282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 65282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski //------------ 66282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 67282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /** 68282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Quick'n'dirty debug helper that dumps an XML structure to stdout. 69282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 70282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @SuppressWarnings("unused") 71282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski private void dump(Node node, String prefix) { 72282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Node n; 73282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 74282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski String[] types = { 75282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski "unknown", 76282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski "ELEMENT_NODE", 77282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski "ATTRIBUTE_NODE", 78282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski "TEXT_NODE", 79282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski "CDATA_SECTION_NODE", 80282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski "ENTITY_REFERENCE_NODE", 81282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski "ENTITY_NODE", 82282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski "PROCESSING_INSTRUCTION_NODE", 83282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski "COMMENT_NODE", 84282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski "DOCUMENT_NODE", 85282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski "DOCUMENT_TYPE_NODE", 86282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski "DOCUMENT_FRAGMENT_NODE", 87282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski "NOTATION_NODE" 88282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski }; 89282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 90282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski String s = String.format("%s<%s> %s %s", 91282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski prefix, 92282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski types[node.getNodeType()], 93282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski node.getNodeName(), 94282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski node.getNodeValue() == null ? "" : node.getNodeValue().trim()); 95282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 96282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski System.out.println(s); 97282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 98282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski n = node.getFirstChild(); 99282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (n != null) { 100282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski dump(n, prefix + "- "); 101282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 102282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 103282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski n = node.getNextSibling(); 104282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (n != null) { 105282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski dump(n, prefix); 106282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 107282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 108282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 109282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 110282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski} 111