| /* |
| * Copyright (C) 2008 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| |
| package com.android.tools.layoutlib.create; |
| |
| import static org.junit.Assert.*; |
| |
| import org.junit.After; |
| import org.junit.Before; |
| import org.junit.Test; |
| |
| /** |
| * |
| */ |
| public class RenameClassAdapterTest { |
| |
| private RenameClassAdapter mOuter; |
| private RenameClassAdapter mInner; |
| |
| @Before |
| public void setUp() throws Exception { |
| mOuter = new RenameClassAdapter(null, // cv |
| "com.pack.Old", |
| "org.blah.New"); |
| |
| mInner = new RenameClassAdapter(null, // cv |
| "com.pack.Old$Inner", |
| "org.blah.New$Inner"); |
| } |
| |
| @After |
| public void tearDown() throws Exception { |
| } |
| |
| /** |
| * Renames a type, e.g. "Lcom.package.My;" |
| * If the type doesn't need to be renamed, returns the input string as-is. |
| */ |
| @Test |
| public void testRenameTypeDesc() { |
| |
| // primitive types are left untouched |
| assertEquals("I", mOuter.renameTypeDesc("I")); |
| assertEquals("D", mOuter.renameTypeDesc("D")); |
| assertEquals("V", mOuter.renameTypeDesc("V")); |
| |
| // object types that need no renaming are left untouched |
| assertEquals("Lcom.package.MyClass;", mOuter.renameTypeDesc("Lcom.package.MyClass;")); |
| assertEquals("Lcom.package.MyClass;", mInner.renameTypeDesc("Lcom.package.MyClass;")); |
| |
| // object types that match the requirements |
| assertEquals("Lorg.blah.New;", mOuter.renameTypeDesc("Lcom.pack.Old;")); |
| assertEquals("Lorg.blah.New$Inner;", mInner.renameTypeDesc("Lcom.pack.Old$Inner;")); |
| // inner classes match the base type which is being renamed |
| assertEquals("Lorg.blah.New$Other;", mOuter.renameTypeDesc("Lcom.pack.Old$Other;")); |
| assertEquals("Lorg.blah.New$Other;", mInner.renameTypeDesc("Lcom.pack.Old$Other;")); |
| |
| // arrays |
| assertEquals("[Lorg.blah.New;", mOuter.renameTypeDesc("[Lcom.pack.Old;")); |
| assertEquals("[[Lorg.blah.New;", mOuter.renameTypeDesc("[[Lcom.pack.Old;")); |
| |
| assertEquals("[Lorg.blah.New;", mInner.renameTypeDesc("[Lcom.pack.Old;")); |
| assertEquals("[[Lorg.blah.New;", mInner.renameTypeDesc("[[Lcom.pack.Old;")); |
| } |
| |
| /** |
| * Renames an object type, e.g. "Lcom.package.MyClass;" or an array type that has an |
| * object element, e.g. "[Lcom.package.MyClass;" |
| * If the type doesn't need to be renamed, returns the internal name of the input type. |
| */ |
| @Test |
| public void testRenameType() { |
| // Skip. This is actually tested by testRenameTypeDesc above. |
| } |
| |
| /** |
| * Renames an internal type name, e.g. "com.package.MyClass". |
| * If the type doesn't need to be renamed, returns the input string as-is. |
| */ |
| @Test |
| public void testRenameInternalType() { |
| // an actual FQCN |
| assertEquals("org.blah.New", mOuter.renameInternalType("com.pack.Old")); |
| assertEquals("org.blah.New$Inner", mOuter.renameInternalType("com.pack.Old$Inner")); |
| |
| assertEquals("org.blah.New$Other", mInner.renameInternalType("com.pack.Old$Other")); |
| assertEquals("org.blah.New$Other", mInner.renameInternalType("com.pack.Old$Other")); |
| } |
| |
| /** |
| * Renames a method descriptor, i.e. applies renameType to all arguments and to the |
| * return value. |
| */ |
| @Test |
| public void testRenameMethodDesc() { |
| assertEquals("(IDLorg.blah.New;[Lorg.blah.New$Inner;)Lorg.blah.New$Other;", |
| mOuter.renameMethodDesc("(IDLcom.pack.Old;[Lcom.pack.Old$Inner;)Lcom.pack.Old$Other;")); |
| } |
| |
| |
| |
| } |