1 /* 2 * Copyright (C) 2008 The Android Open Source Project 3 * 4 * Licensed under the Eclipse Public License, Version 1.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.eclipse.org/org/documents/epl-v10.php 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 17 package com.android.ide.common.resources.platform; 18 19 20 import com.android.ide.common.api.IAttributeInfo.Format; 21 import com.android.ide.eclipse.mock.TestLogger; 22 import com.android.ide.eclipse.tests.AdtTestData; 23 24 import java.util.Map; 25 26 import junit.framework.TestCase; 27 28 public class AttrsXmlParserTest extends TestCase { 29 30 private AttrsXmlParser mParser; 31 private String mFilePath; 32 33 private static final String MOCK_DATA_PATH = 34 "com/android/ide/eclipse/testdata/mock_attrs.xml"; //$NON-NLS-1$ 35 36 @Override setUp()37 public void setUp() throws Exception { 38 mFilePath = AdtTestData.getInstance().getTestFilePath(MOCK_DATA_PATH); 39 mParser = new AttrsXmlParser(mFilePath, new TestLogger(), 100); 40 } 41 42 @Override tearDown()43 public void tearDown() throws Exception { 44 } 45 testGetOsAttrsXmlPath()46 public void testGetOsAttrsXmlPath() throws Exception { 47 assertEquals(mFilePath, mParser.getOsAttrsXmlPath()); 48 } 49 testPreload()50 public final void testPreload() throws Exception { 51 assertSame(mParser, mParser.preload()); 52 } 53 54 testLoadViewAttributes()55 public final void testLoadViewAttributes() throws Exception { 56 mParser.preload(); 57 ViewClassInfo info = new ViewClassInfo( 58 false /* isLayout */, 59 "mock_android.something.Theme", //$NON-NLS-1$ 60 "Theme"); //$NON-NLS-1$ 61 mParser.loadViewAttributes(info); 62 63 assertEquals("These are the standard attributes that make up a complete theme.", //$NON-NLS-1$ 64 info.getJavaDoc()); 65 AttributeInfo[] attrs = info.getAttributes(); 66 assertEquals(1, attrs.length); 67 assertEquals("scrollbarSize", info.getAttributes()[0].getName()); 68 assertEquals(1, info.getAttributes()[0].getFormats().size()); 69 assertEquals(Format.DIMENSION, info.getAttributes()[0].getFormats().iterator().next()); 70 } 71 testEnumFlagValues()72 public final void testEnumFlagValues() throws Exception { 73 /* The XML being read contains: 74 <!-- Standard orientation constant. --> 75 <attr name="orientation"> 76 <!-- Defines an horizontal widget. --> 77 <enum name="horizontal" value="0" /> 78 <!-- Defines a vertical widget. --> 79 <enum name="vertical" value="1" /> 80 </attr> 81 */ 82 83 mParser.preload(); 84 Map<String, Map<String, Integer>> attrMap = mParser.getEnumFlagValues(); 85 assertTrue(attrMap.containsKey("orientation")); 86 87 Map<String, Integer> valueMap = attrMap.get("orientation"); 88 assertTrue(valueMap.containsKey("horizontal")); 89 assertTrue(valueMap.containsKey("vertical")); 90 assertEquals(Integer.valueOf(0), valueMap.get("horizontal")); 91 assertEquals(Integer.valueOf(1), valueMap.get("vertical")); 92 } 93 testDeprecated()94 public final void testDeprecated() throws Exception { 95 mParser.preload(); 96 97 DeclareStyleableInfo dep = mParser.getDeclareStyleableList().get("DeprecatedTest"); 98 assertNotNull(dep); 99 100 AttributeInfo[] attrs = dep.getAttributes(); 101 assertEquals(4, attrs.length); 102 103 assertEquals("deprecated-inline", attrs[0].getName()); 104 assertEquals("In-line deprecated.", attrs[0].getDeprecatedDoc()); 105 assertEquals("Deprecated comments using delimiters.", attrs[0].getJavaDoc()); 106 107 assertEquals("deprecated-multiline", attrs[1].getName()); 108 assertEquals("Multi-line version of deprecated that works till the next tag.", 109 attrs[1].getDeprecatedDoc()); 110 assertEquals("Deprecated comments on their own line.", attrs[1].getJavaDoc()); 111 112 assertEquals("deprecated-not", attrs[2].getName()); 113 assertEquals(null, attrs[2].getDeprecatedDoc()); 114 assertEquals("This attribute is not deprecated.", attrs[2].getJavaDoc()); 115 116 assertEquals("deprecated-no-javadoc", attrs[3].getName()); 117 assertEquals("There is no other javadoc here.", attrs[3].getDeprecatedDoc()); 118 assertEquals("", attrs[3].getJavaDoc()); 119 } 120 } 121