blob: 8220ac6afb70ab3b20170808076c258a783938e6 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2012 Oracle. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0, which accompanies this distribution
* and is available at http://www.eclipse.org/legal/epl-v10.html.
*
* Contributors:
* Oracle - initial API and implementation
******************************************************************************/
package org.eclipse.jpt.common.utility.tests.internal;
import java.lang.reflect.Array;
import java.lang.reflect.InvocationTargetException;
import junit.framework.TestCase;
import org.eclipse.jpt.common.utility.internal.ClassNameTools;
import org.eclipse.jpt.common.utility.internal.ClassTools;
@SuppressWarnings("nls")
public class ClassNameToolsTests
extends TestCase
{
public ClassNameToolsTests(String name) {
super(name);
}
public void testIsArray() {
assertFalse(ClassNameTools.isArray(int.class.getName()));
assertTrue(ClassNameTools.isArray(int[].class.getName()));
assertTrue(ClassNameTools.isArray(int[][].class.getName()));
assertFalse(ClassNameTools.isArray(java.lang.String.class.getName()));
assertTrue(ClassNameTools.isArray(java.lang.String[].class.getName()));
assertTrue(ClassNameTools.isArray(java.lang.String[][].class.getName()));
}
public void testIsArrayCharArray() {
assertFalse(ClassNameTools.isArray(int.class.getName().toCharArray()));
assertTrue(ClassNameTools.isArray(int[].class.getName().toCharArray()));
assertTrue(ClassNameTools.isArray(int[][].class.getName().toCharArray()));
assertFalse(ClassNameTools.isArray(java.lang.String.class.getName().toCharArray()));
assertTrue(ClassNameTools.isArray(java.lang.String[].class.getName().toCharArray()));
assertTrue(ClassNameTools.isArray(java.lang.String[][].class.getName().toCharArray()));
}
public void testArrayDepth() {
assertEquals(0, ClassNameTools.arrayDepth(java.util.Vector.class.getName()));
assertEquals(0, ClassNameTools.arrayDepth(int.class.getName()));
assertEquals(0, ClassNameTools.arrayDepth(void.class.getName()));
assertEquals(1, ClassNameTools.arrayDepth(java.util.Vector[].class.getName()));
assertEquals(1, ClassNameTools.arrayDepth(int[].class.getName()));
assertEquals(3, ClassNameTools.arrayDepth(java.util.Vector[][][].class.getName()));
assertEquals(3, ClassNameTools.arrayDepth(int[][][].class.getName()));
}
public void testArrayDepthCharArray() {
assertEquals(0, ClassNameTools.arrayDepth(java.util.Vector.class.getName().toCharArray()));
assertEquals(0, ClassNameTools.arrayDepth(int.class.getName().toCharArray()));
assertEquals(0, ClassNameTools.arrayDepth(void.class.getName().toCharArray()));
assertEquals(1, ClassNameTools.arrayDepth(java.util.Vector[].class.getName().toCharArray()));
assertEquals(1, ClassNameTools.arrayDepth(int[].class.getName().toCharArray()));
assertEquals(3, ClassNameTools.arrayDepth(java.util.Vector[][][].class.getName().toCharArray()));
assertEquals(3, ClassNameTools.arrayDepth(int[][][].class.getName().toCharArray()));
}
public void testElementTypeName() {
assertEquals(java.util.Vector.class.getName(), ClassNameTools.elementTypeName(java.util.Vector.class.getName()));
assertEquals(int.class.getName(), ClassNameTools.elementTypeName(int.class.getName()));
assertEquals(void.class.getName(), ClassNameTools.elementTypeName(void.class.getName()));
assertEquals(java.util.Vector.class.getName(), ClassNameTools.elementTypeName(java.util.Vector[].class.getName()));
assertEquals(int.class.getName(), ClassNameTools.elementTypeName(int[].class.getName()));
assertEquals(java.util.Vector.class.getName(), ClassNameTools.elementTypeName(java.util.Vector[][][].class.getName()));
assertEquals(int.class.getName(), ClassNameTools.elementTypeName(int[][][].class.getName()));
}
public void testElementTypeNameCharArray() {
TestTools.assertEquals(java.util.Vector.class.getName(), ClassNameTools.elementTypeName(java.util.Vector.class.getName().toCharArray()));
TestTools.assertEquals(int.class.getName(), ClassNameTools.elementTypeName(int.class.getName().toCharArray()));
TestTools.assertEquals(void.class.getName(), ClassNameTools.elementTypeName(void.class.getName().toCharArray()));
TestTools.assertEquals(java.util.Vector.class.getName(), ClassNameTools.elementTypeName(java.util.Vector[].class.getName().toCharArray()));
TestTools.assertEquals(int.class.getName(), ClassNameTools.elementTypeName(int[].class.getName().toCharArray()));
TestTools.assertEquals(java.util.Vector.class.getName(), ClassNameTools.elementTypeName(java.util.Vector[][][].class.getName().toCharArray()));
TestTools.assertEquals(int.class.getName(), ClassNameTools.elementTypeName(int[][][].class.getName().toCharArray()));
}
public void testComponentTypeName() {
assertEquals(null, ClassNameTools.componentTypeName(java.lang.Object.class.getName()));
assertEquals(java.lang.Object.class.getName(), ClassNameTools.componentTypeName(java.lang.Object[].class.getName()));
assertEquals(java.lang.Object[].class.getName(), ClassNameTools.componentTypeName(java.lang.Object[][].class.getName()));
assertEquals(null, ClassNameTools.componentTypeName(int.class.getName()));
assertEquals(int.class.getName(), ClassNameTools.componentTypeName(int[].class.getName()));
assertEquals(int[].class.getName(), ClassNameTools.componentTypeName(int[][].class.getName()));
}
public void testComponentTypeNameCharArray() {
assertNull(ClassNameTools.componentTypeName(java.lang.Object.class.getName().toCharArray()));
TestTools.assertEquals(java.lang.Object.class.getName(), ClassNameTools.componentTypeName(java.lang.Object[].class.getName().toCharArray()));
TestTools.assertEquals(java.lang.Object[].class.getName(), ClassNameTools.componentTypeName(java.lang.Object[][].class.getName().toCharArray()));
assertNull(ClassNameTools.componentTypeName(int.class.getName().toCharArray()));
TestTools.assertEquals(int.class.getName(), ClassNameTools.componentTypeName(int[].class.getName().toCharArray()));
TestTools.assertEquals(int[].class.getName(), ClassNameTools.componentTypeName(int[][].class.getName().toCharArray()));
}
public void testTypeDeclaration() throws Exception {
TestTools.assertEquals("int", ClassNameTools.typeDeclaration("int".toCharArray()));
TestTools.assertEquals("int[]", ClassNameTools.typeDeclaration("[I".toCharArray()));
TestTools.assertEquals("int[][]", ClassNameTools.typeDeclaration("[[I".toCharArray()));
TestTools.assertEquals("java.lang.Object", ClassNameTools.typeDeclaration("java.lang.Object".toCharArray()));
TestTools.assertEquals("java.lang.Object[]", ClassNameTools.typeDeclaration("[Ljava.lang.Object;".toCharArray()));
TestTools.assertEquals("java.lang.Object[][]", ClassNameTools.typeDeclaration("[[Ljava.lang.Object;".toCharArray()));
}
public void testTypeDeclarationCharArray() throws Exception {
assertEquals("int", ClassNameTools.typeDeclaration("int"));
assertEquals("int[]", ClassNameTools.typeDeclaration("[I"));
assertEquals("int[][]", ClassNameTools.typeDeclaration("[[I"));
assertEquals("java.lang.Object", ClassNameTools.typeDeclaration("java.lang.Object"));
assertEquals("java.lang.Object[]", ClassNameTools.typeDeclaration("[Ljava.lang.Object;"));
assertEquals("java.lang.Object[][]", ClassNameTools.typeDeclaration("[[Ljava.lang.Object;"));
}
public void testSimpleName() throws Exception {
assertEquals("Object", ClassNameTools.simpleName(java.lang.Object.class.getName()));
assertEquals("Object[]", ClassNameTools.simpleName(java.lang.Object[].class.getName()));
assertEquals("Object[][]", ClassNameTools.simpleName(java.lang.Object[][].class.getName()));
assertEquals(java.util.Map.class.getSimpleName(), ClassNameTools.simpleName(java.util.Map.class.getName()));
assertEquals(java.util.Map.Entry.class.getSimpleName(), ClassNameTools.simpleName(java.util.Map.Entry.class.getName()));
assertEquals("int", ClassNameTools.simpleName(int.class.getName()));
assertEquals("int[]", ClassNameTools.simpleName(int[].class.getName()));
assertEquals("int[][]", ClassNameTools.simpleName(int[][].class.getName()));
Object anonObject = new Object() {
// anonymous class
};
assertEquals("", ClassNameTools.simpleName(anonObject.getClass().getName()));
class Local {
// anonymous class
}
Local localObject = new Local();
assertEquals("Local", ClassNameTools.simpleName(localObject.getClass().getName()));
}
public void testSimpleNameCharArray() throws Exception {
TestTools.assertEquals("Object", ClassNameTools.simpleName(java.lang.Object.class.getName().toCharArray()));
TestTools.assertEquals("Object[]", ClassNameTools.simpleName(java.lang.Object[].class.getName().toCharArray()));
TestTools.assertEquals("Object[][]", ClassNameTools.simpleName(java.lang.Object[][].class.getName().toCharArray()));
TestTools.assertEquals(java.util.Map.class.getSimpleName(), ClassNameTools.simpleName(java.util.Map.class.getName().toCharArray()));
TestTools.assertEquals(java.util.Map.Entry.class.getSimpleName(), ClassNameTools.simpleName(java.util.Map.Entry.class.getName().toCharArray()));
TestTools.assertEquals("int", ClassNameTools.simpleName(int.class.getName().toCharArray()));
TestTools.assertEquals("int[]", ClassNameTools.simpleName(int[].class.getName().toCharArray()));
TestTools.assertEquals("int[][]", ClassNameTools.simpleName(int[][].class.getName().toCharArray()));
Object anonObject = new Object() {
// anonymous class
};
TestTools.assertEquals("", ClassNameTools.simpleName(anonObject.getClass().getName().toCharArray()));
class Local {
// anonymous class
}
Local localObject = new Local();
TestTools.assertEquals("Local", ClassNameTools.simpleName(localObject.getClass().getName().toCharArray()));
}
public void testPackageName() throws Exception {
assertEquals(java.lang.Object.class.getPackage().getName(), ClassNameTools.packageName(java.lang.Object.class.getName()));
assertEquals("", ClassNameTools.packageName(java.lang.Object[].class.getName()));
assertEquals("", ClassNameTools.packageName(java.lang.Object[][].class.getName()));
assertEquals(java.util.Map.class.getPackage().getName(), ClassNameTools.packageName(java.util.Map.class.getName()));
assertEquals(java.util.Map.Entry.class.getPackage().getName(), ClassNameTools.packageName(java.util.Map.Entry.class.getName()));
assertEquals("", ClassNameTools.packageName(int.class.getName()));
assertEquals("", ClassNameTools.packageName(int[].class.getName()));
assertEquals("", ClassNameTools.packageName(int[][].class.getName()));
assertEquals("", ClassNameTools.packageName(void.class.getName()));
Object anonObject = new Object() {
// anonymous class
};
assertEquals(anonObject.getClass().getPackage().getName(), ClassNameTools.packageName(anonObject.getClass().getName()));
}
public void testPackageNameCharArray() throws Exception {
TestTools.assertEquals(java.lang.Object.class.getPackage().getName(), ClassNameTools.packageName(java.lang.Object.class.getName().toCharArray()));
TestTools.assertEquals("", ClassNameTools.packageName(java.lang.Object[].class.getName().toCharArray()));
TestTools.assertEquals("", ClassNameTools.packageName(java.lang.Object[][].class.getName().toCharArray()));
TestTools.assertEquals(java.util.Map.class.getPackage().getName(), ClassNameTools.packageName(java.util.Map.class.getName().toCharArray()));
TestTools.assertEquals(java.util.Map.Entry.class.getPackage().getName(), ClassNameTools.packageName(java.util.Map.Entry.class.getName().toCharArray()));
TestTools.assertEquals("", ClassNameTools.packageName(int.class.getName().toCharArray()));
TestTools.assertEquals("", ClassNameTools.packageName(int[].class.getName().toCharArray()));
TestTools.assertEquals("", ClassNameTools.packageName(int[][].class.getName().toCharArray()));
TestTools.assertEquals("", ClassNameTools.packageName(void.class.getName().toCharArray()));
Object anonObject = new Object() {
// anonymous class
};
TestTools.assertEquals(anonObject.getClass().getPackage().getName(), ClassNameTools.packageName(anonObject.getClass().getName().toCharArray()));
}
public void testIsTopLevel() throws Exception {
assertTrue(ClassNameTools.isTopLevel(java.util.Map.class.getName())); // top-level
assertFalse(ClassNameTools.isTopLevel(java.util.Map.Entry.class.getName())); // member
assertFalse(ClassNameTools.isTopLevel(Class.forName(this.getClass().getName() + "$1LocalClass").getName())); // local
assertFalse(ClassNameTools.isTopLevel(Class.forName("java.util.Vector$1").getName())); // anonymous
Object[] array = new java.util.Map[0]; // top-level
assertFalse(ClassNameTools.isTopLevel(array.getClass().getName()));
array = new java.util.Map.Entry[0]; // member
assertFalse(ClassNameTools.isTopLevel(array.getClass().getName()));
Class<?> localClass = Class.forName(this.getClass().getName() + "$1LocalClass"); // local
array = (Object[]) Array.newInstance(localClass, 0);
assertFalse(ClassNameTools.isTopLevel(array.getClass().getName()));
Class<?> anonClass = Class.forName("java.util.Vector$1"); // local
array = (Object[]) Array.newInstance(anonClass, 0);
assertFalse(ClassNameTools.isTopLevel(array.getClass().getName()));
}
public void testIsTopLevelCharArray() throws Exception {
assertTrue(ClassNameTools.isTopLevel(java.util.Map.class.getName().toCharArray())); // top-level
assertFalse(ClassNameTools.isTopLevel(java.util.Map.Entry.class.getName().toCharArray())); // member
assertFalse(ClassNameTools.isTopLevel(Class.forName(this.getClass().getName() + "$1LocalClass").getName().toCharArray())); // local
assertFalse(ClassNameTools.isTopLevel(Class.forName("java.util.Vector$1").getName().toCharArray())); // anonymous
Object[] array = new java.util.Map[0]; // top-level
assertFalse(ClassNameTools.isTopLevel(array.getClass().getName().toCharArray()));
array = new java.util.Map.Entry[0]; // member
assertFalse(ClassNameTools.isTopLevel(array.getClass().getName().toCharArray()));
Class<?> localClass = Class.forName(this.getClass().getName() + "$1LocalClass"); // local
array = (Object[]) Array.newInstance(localClass, 0);
assertFalse(ClassNameTools.isTopLevel(array.getClass().getName().toCharArray()));
Class<?> anonClass = Class.forName("java.util.Vector$1"); // local
array = (Object[]) Array.newInstance(anonClass, 0);
assertFalse(ClassNameTools.isTopLevel(array.getClass().getName().toCharArray()));
}
public void testIsMember() throws Exception {
assertFalse(ClassNameTools.isMember(java.util.Map.class.getName())); // top-level
assertTrue(ClassNameTools.isMember(java.util.Map.Entry.class.getName())); // member
assertFalse(ClassNameTools.isMember(Class.forName(this.getClass().getName() + "$1LocalClass").getName())); // local
assertFalse(ClassNameTools.isMember(Class.forName("java.util.Vector$1").getName())); // anonymous
Object[] array = new java.util.Map[0]; // top-level
assertFalse(ClassNameTools.isMember(array.getClass().getName()));
array = new java.util.Map.Entry[0]; // member
assertFalse(ClassNameTools.isMember(array.getClass().getName()));
Class<?> localClass = Class.forName(this.getClass().getName() + "$1LocalClass"); // local
array = (Object[]) Array.newInstance(localClass, 0);
assertFalse(ClassNameTools.isMember(array.getClass().getName()));
Class<?> anonClass = Class.forName("java.util.Vector$1"); // local
array = (Object[]) Array.newInstance(anonClass, 0);
assertFalse(ClassNameTools.isMember(array.getClass().getName()));
// test a few edge cases
assertTrue(ClassNameTools.isMember("java.util.Map$a1"));
assertTrue(ClassNameTools.isMember("java.util.Map$1aa$aaa")); // member inside local
assertTrue(ClassNameTools.isMember("java.util.Map$1$aaa")); // member inside anonymous
assertTrue(ClassNameTools.isMember("java.util.Map$a1$aaa$bbb"));
assertTrue(ClassNameTools.isMember("java.util.Map$1a1$aaa")); // member inside local
assertFalse(ClassNameTools.isMember("java.util.Map$1a"));
assertTrue(ClassNameTools.isMember("java.util.Map$a12345$b12345"));
assertFalse(ClassNameTools.isMember("java.util.Map$12345a"));
assertFalse(ClassNameTools.isMember("java.util.Map$333"));
assertFalse(ClassNameTools.isMember("java.util.Map3$333"));
}
public void testIsMemberCharArray() throws Exception {
assertFalse(ClassNameTools.isMember(java.util.Map.class.getName().toCharArray())); // top-level
assertTrue(ClassNameTools.isMember(java.util.Map.Entry.class.getName().toCharArray())); // member
assertFalse(ClassNameTools.isMember(Class.forName(this.getClass().getName() + "$1LocalClass").getName().toCharArray())); // local
assertFalse(ClassNameTools.isMember(Class.forName("java.util.Vector$1").getName().toCharArray())); // anonymous
Object[] array = new java.util.Map[0]; // top-level
assertFalse(ClassNameTools.isMember(array.getClass().getName().toCharArray()));
array = new java.util.Map.Entry[0]; // member
assertFalse(ClassNameTools.isMember(array.getClass().getName().toCharArray()));
Class<?> localClass = Class.forName(this.getClass().getName() + "$1LocalClass"); // local
array = (Object[]) Array.newInstance(localClass, 0);
assertFalse(ClassNameTools.isMember(array.getClass().getName().toCharArray()));
Class<?> anonClass = Class.forName("java.util.Vector$1"); // local
array = (Object[]) Array.newInstance(anonClass, 0);
assertFalse(ClassNameTools.isMember(array.getClass().getName().toCharArray()));
// test a few edge cases
assertTrue(ClassNameTools.isMember("java.util.Map$a1".toCharArray()));
assertTrue(ClassNameTools.isMember("java.util.Map$1aa$aaa".toCharArray())); // member inside local
assertTrue(ClassNameTools.isMember("java.util.Map$1$aaa".toCharArray())); // member inside anonymous
assertTrue(ClassNameTools.isMember("java.util.Map$a1$aaa$bbb".toCharArray()));
assertTrue(ClassNameTools.isMember("java.util.Map$1a1$aaa".toCharArray())); // member inside local
assertFalse(ClassNameTools.isMember("java.util.Map$1a".toCharArray()));
assertTrue(ClassNameTools.isMember("java.util.Map$a12345$b12345".toCharArray()));
assertFalse(ClassNameTools.isMember("java.util.Map$12345a".toCharArray()));
assertFalse(ClassNameTools.isMember("java.util.Map$333".toCharArray()));
assertFalse(ClassNameTools.isMember("java.util.Map3$333".toCharArray()));
}
public void testIsLocal() throws Exception {
class LocalClass {
void foo() {
System.getProperty("foo");
}
}
new LocalClass().foo();
assertFalse(ClassNameTools.isLocal(java.util.Map.class.getName())); // top-level
assertFalse(ClassNameTools.isLocal(java.util.Map.Entry.class.getName())); // member
assertTrue(ClassNameTools.isLocal(Class.forName(this.getClass().getName() + "$1LocalClass").getName())); // local
assertFalse(ClassNameTools.isLocal(Class.forName("java.util.Vector$1").getName())); // anonymous
Object[] array = new java.util.Map[0]; // top-level
assertFalse(ClassNameTools.isLocal(array.getClass().getName()));
array = new java.util.Map.Entry[0]; // member
assertFalse(ClassNameTools.isLocal(array.getClass().getName()));
Class<?> localClass = Class.forName(this.getClass().getName() + "$1LocalClass"); // local
array = (Object[]) Array.newInstance(localClass, 0);
assertFalse(ClassNameTools.isLocal(array.getClass().getName()));
Class<?> anonClass = Class.forName("java.util.Vector$1"); // local
array = (Object[]) Array.newInstance(anonClass, 0);
assertFalse(ClassNameTools.isLocal(array.getClass().getName()));
// test a few edge cases
assertFalse(ClassNameTools.isLocal("java.util.Map$a1"));
assertFalse(ClassNameTools.isLocal("java.util.Map$a1$aaa$bbb"));
assertFalse(ClassNameTools.isLocal("java.util.Map$11$aaa"));
assertTrue(ClassNameTools.isLocal("java.util.Map$1a"));
assertTrue(ClassNameTools.isLocal("java.util.Map$2abc"));
assertTrue(ClassNameTools.isLocal("java.util.Map$2abc1"));
assertFalse(ClassNameTools.isLocal("java.util.Map$a12345$b12345"));
assertTrue(ClassNameTools.isLocal("java.util.Map$12345$1234a"));
assertFalse(ClassNameTools.isLocal("java.util.Map$333"));
assertFalse(ClassNameTools.isLocal("java.util.Map3$333"));
}
public void testIsLocalCharArray() throws Exception {
class LocalClass {
void foo() {
System.getProperty("foo");
}
}
new LocalClass().foo();
assertFalse(ClassNameTools.isLocal(java.util.Map.class.getName().toCharArray())); // top-level
assertFalse(ClassNameTools.isLocal(java.util.Map.Entry.class.getName().toCharArray())); // member
assertTrue(ClassNameTools.isLocal(Class.forName(this.getClass().getName() + "$1LocalClass").getName().toCharArray())); // local
assertFalse(ClassNameTools.isLocal(Class.forName("java.util.Vector$1").getName().toCharArray())); // anonymous
Object[] array = new java.util.Map[0]; // top-level
assertFalse(ClassNameTools.isLocal(array.getClass().getName().toCharArray()));
array = new java.util.Map.Entry[0]; // member
assertFalse(ClassNameTools.isLocal(array.getClass().getName().toCharArray()));
Class<?> localClass = Class.forName(this.getClass().getName() + "$1LocalClass"); // local
array = (Object[]) Array.newInstance(localClass, 0);
assertFalse(ClassNameTools.isLocal(array.getClass().getName().toCharArray()));
Class<?> anonClass = Class.forName("java.util.Vector$1"); // local
array = (Object[]) Array.newInstance(anonClass, 0);
assertFalse(ClassNameTools.isLocal(array.getClass().getName().toCharArray()));
// test a few edge cases
assertFalse(ClassNameTools.isLocal("java.util.Map$a1".toCharArray()));
assertFalse(ClassNameTools.isLocal("java.util.Map$a1$aaa$bbb".toCharArray()));
assertFalse(ClassNameTools.isLocal("java.util.Map$11$aaa".toCharArray()));
assertTrue(ClassNameTools.isLocal("java.util.Map$1a".toCharArray()));
assertTrue(ClassNameTools.isLocal("java.util.Map$2abc".toCharArray()));
assertTrue(ClassNameTools.isLocal("java.util.Map$2abc1".toCharArray()));
assertFalse(ClassNameTools.isLocal("java.util.Map$a12345$b12345".toCharArray()));
assertTrue(ClassNameTools.isLocal("java.util.Map$12345$1234a".toCharArray()));
assertFalse(ClassNameTools.isLocal("java.util.Map$333".toCharArray()));
assertFalse(ClassNameTools.isLocal("java.util.Map3$333".toCharArray()));
}
public void testIsAnonymous() throws Exception {
assertFalse(ClassNameTools.isAnonymous(java.util.Map.class.getName())); // top-level
assertFalse(ClassNameTools.isAnonymous(java.util.Map.Entry.class.getName())); // member
assertFalse(ClassNameTools.isAnonymous(Class.forName(this.getClass().getName() + "$1LocalClass").getName())); // local
assertTrue(ClassNameTools.isAnonymous(Class.forName("java.util.Vector$1").getName())); // anonymous
Object[] array = new java.util.Map[0]; // top-level
assertFalse(ClassNameTools.isAnonymous(array.getClass().getName()));
array = new java.util.Map.Entry[0]; // member
assertFalse(ClassNameTools.isAnonymous(array.getClass().getName()));
Class<?> localClass = Class.forName(this.getClass().getName() + "$1LocalClass"); // local
array = (Object[]) Array.newInstance(localClass, 0);
assertFalse(ClassNameTools.isAnonymous(array.getClass().getName()));
Class<?> anonClass = Class.forName("java.util.Vector$1"); // local
array = (Object[]) Array.newInstance(anonClass, 0);
assertFalse(ClassNameTools.isAnonymous(array.getClass().getName()));
// test a few edge cases
assertFalse(ClassNameTools.isAnonymous("java.util.Map$a1"));
assertFalse(ClassNameTools.isAnonymous("java.util.Map$a1$aaa$bbb"));
assertFalse(ClassNameTools.isAnonymous("java.util.Map$1a1$aaa"));
assertFalse(ClassNameTools.isAnonymous("java.util.Map$1$a"));
assertFalse(ClassNameTools.isAnonymous("java.util.Map$1a"));
assertFalse(ClassNameTools.isAnonymous("java.util.Map$a12345$b12345"));
assertFalse(ClassNameTools.isAnonymous("java.util.Map$12345$a1234"));
assertTrue(ClassNameTools.isAnonymous("java.util.Map$333"));
assertTrue(ClassNameTools.isAnonymous("java.util.Map3$333"));
}
public void testIsAnonymousCharArray() throws Exception {
assertFalse(ClassNameTools.isAnonymous(java.util.Map.class.getName().toCharArray())); // top-level
assertFalse(ClassNameTools.isAnonymous(java.util.Map.Entry.class.getName().toCharArray())); // member
assertFalse(ClassNameTools.isAnonymous(Class.forName(this.getClass().getName() + "$1LocalClass").getName().toCharArray())); // local
assertTrue(ClassNameTools.isAnonymous(Class.forName("java.util.Vector$1").getName().toCharArray())); // anonymous
Object[] array = new java.util.Map[0]; // top-level
assertFalse(ClassNameTools.isAnonymous(array.getClass().getName().toCharArray()));
array = new java.util.Map.Entry[0]; // member
assertFalse(ClassNameTools.isAnonymous(array.getClass().getName().toCharArray()));
Class<?> localClass = Class.forName(this.getClass().getName() + "$1LocalClass"); // local
array = (Object[]) Array.newInstance(localClass, 0);
assertFalse(ClassNameTools.isAnonymous(array.getClass().getName().toCharArray()));
Class<?> anonClass = Class.forName("java.util.Vector$1"); // local
array = (Object[]) Array.newInstance(anonClass, 0);
assertFalse(ClassNameTools.isAnonymous(array.getClass().getName().toCharArray()));
// test a few edge cases
assertFalse(ClassNameTools.isAnonymous("java.util.Map$a1".toCharArray()));
assertFalse(ClassNameTools.isAnonymous("java.util.Map$a1$aaa$bbb".toCharArray()));
assertFalse(ClassNameTools.isAnonymous("java.util.Map$1a1$aaa".toCharArray()));
assertFalse(ClassNameTools.isAnonymous("java.util.Map$1$a".toCharArray()));
assertFalse(ClassNameTools.isAnonymous("java.util.Map$1a".toCharArray()));
assertFalse(ClassNameTools.isAnonymous("java.util.Map$a12345$b12345".toCharArray()));
assertFalse(ClassNameTools.isAnonymous("java.util.Map$12345$a1234".toCharArray()));
assertTrue(ClassNameTools.isAnonymous("java.util.Map$333".toCharArray()));
assertTrue(ClassNameTools.isAnonymous("java.util.Map3$333".toCharArray()));
}
public void testIsReference() throws Exception {
assertFalse(ClassNameTools.isReference(int.class.getName())); // top-level
assertTrue(ClassNameTools.isReference(java.util.Map.class.getName())); // top-level
assertTrue(ClassNameTools.isReference(java.util.Map.Entry.class.getName())); // member
assertTrue(ClassNameTools.isReference(Class.forName(this.getClass().getName() + "$1LocalClass").getName())); // local
assertTrue(ClassNameTools.isReference(Class.forName("java.util.Vector$1").getName())); // anonymous
Object[] array = new java.util.Map[0]; // top-level
assertTrue(ClassNameTools.isReference(array.getClass().getName()));
array = new java.util.Map.Entry[0]; // member
assertTrue(ClassNameTools.isReference(array.getClass().getName()));
Class<?> localClass = Class.forName(this.getClass().getName() + "$1LocalClass"); // local
array = (Object[]) Array.newInstance(localClass, 0);
assertTrue(ClassNameTools.isReference(array.getClass().getName()));
Class<?> anonClass = Class.forName("java.util.Vector$1"); // local
array = (Object[]) Array.newInstance(anonClass, 0);
assertTrue(ClassNameTools.isReference(array.getClass().getName()));
}
public void testIsReferenceCharArray() throws Exception {
assertFalse(ClassNameTools.isReference(int.class.getName().toCharArray())); // top-level
assertTrue(ClassNameTools.isReference(java.util.Map.class.getName().toCharArray())); // top-level
assertTrue(ClassNameTools.isReference(java.util.Map.Entry.class.getName().toCharArray())); // member
assertTrue(ClassNameTools.isReference(Class.forName(this.getClass().getName() + "$1LocalClass").getName().toCharArray())); // local
assertTrue(ClassNameTools.isReference(Class.forName("java.util.Vector$1").getName().toCharArray())); // anonymous
Object[] array = new java.util.Map[0]; // top-level
assertTrue(ClassNameTools.isReference(array.getClass().getName().toCharArray()));
array = new java.util.Map.Entry[0]; // member
assertTrue(ClassNameTools.isReference(array.getClass().getName().toCharArray()));
Class<?> localClass = Class.forName(this.getClass().getName() + "$1LocalClass"); // local
array = (Object[]) Array.newInstance(localClass, 0);
assertTrue(ClassNameTools.isReference(array.getClass().getName().toCharArray()));
Class<?> anonClass = Class.forName("java.util.Vector$1"); // local
array = (Object[]) Array.newInstance(anonClass, 0);
assertTrue(ClassNameTools.isReference(array.getClass().getName().toCharArray()));
}
public void testIsPrimitive() {
assertTrue(void.class.isPrimitive());
assertTrue(ClassNameTools.isPrimitive(void.class.getName()));
assertTrue(ClassNameTools.isPrimitive(int.class.getName()));
assertTrue(ClassNameTools.isPrimitive(float.class.getName()));
assertTrue(ClassNameTools.isPrimitive(boolean.class.getName()));
assertFalse(ClassNameTools.isPrimitive(java.lang.Number.class.getName()));
assertFalse(ClassNameTools.isPrimitive(java.lang.String.class.getName()));
assertFalse(ClassNameTools.isPrimitive(java.lang.Boolean.class.getName()));
assertFalse(ClassNameTools.isPrimitive(java.lang.Integer.class.getName()));
}
public void testIsPrimitiveCharArray() {
assertTrue(void.class.isPrimitive());
assertTrue(ClassNameTools.isPrimitive(void.class.getName().toCharArray()));
assertTrue(ClassNameTools.isPrimitive(int.class.getName().toCharArray()));
assertTrue(ClassNameTools.isPrimitive(float.class.getName().toCharArray()));
assertTrue(ClassNameTools.isPrimitive(boolean.class.getName().toCharArray()));
assertFalse(ClassNameTools.isPrimitive(java.lang.Number.class.getName().toCharArray()));
assertFalse(ClassNameTools.isPrimitive(java.lang.String.class.getName().toCharArray()));
assertFalse(ClassNameTools.isPrimitive(java.lang.Boolean.class.getName().toCharArray()));
assertFalse(ClassNameTools.isPrimitive(java.lang.Integer.class.getName().toCharArray()));
}
public void testIsPrimitiveWrapper() {
assertFalse(ClassNameTools.isPrimitiveWrapper(void.class.getName()));
assertFalse(ClassNameTools.isPrimitiveWrapper(int.class.getName()));
assertFalse(ClassNameTools.isPrimitiveWrapper(float.class.getName()));
assertFalse(ClassNameTools.isPrimitiveWrapper(boolean.class.getName()));
assertFalse(ClassNameTools.isPrimitiveWrapper(java.lang.reflect.Field.class.getName()));
assertFalse(ClassNameTools.isPrimitiveWrapper(java.lang.String.class.getName()));
assertTrue(ClassNameTools.isPrimitiveWrapper(java.lang.Boolean.class.getName()));
assertTrue(ClassNameTools.isPrimitiveWrapper(java.lang.Integer.class.getName()));
}
public void testIsPrimitiveWrapperCharArray() {
assertFalse(ClassNameTools.isPrimitiveWrapper(void.class.getName().toCharArray()));
assertFalse(ClassNameTools.isPrimitiveWrapper(int.class.getName().toCharArray()));
assertFalse(ClassNameTools.isPrimitiveWrapper(float.class.getName().toCharArray()));
assertFalse(ClassNameTools.isPrimitiveWrapper(boolean.class.getName().toCharArray()));
assertFalse(ClassNameTools.isPrimitiveWrapper(java.lang.reflect.Field.class.getName().toCharArray()));
assertFalse(ClassNameTools.isPrimitiveWrapper(java.lang.String.class.getName().toCharArray()));
assertTrue(ClassNameTools.isPrimitiveWrapper(java.lang.Boolean.class.getName().toCharArray()));
assertTrue(ClassNameTools.isPrimitiveWrapper(java.lang.Integer.class.getName().toCharArray()));
}
public void testIsVariablePrimitive() {
assertFalse(ClassNameTools.isVariablePrimitive(void.class.getName()));
assertTrue(ClassNameTools.isVariablePrimitive(int.class.getName()));
assertTrue(ClassNameTools.isVariablePrimitive(float.class.getName()));
assertTrue(ClassNameTools.isVariablePrimitive(boolean.class.getName()));
assertFalse(ClassNameTools.isVariablePrimitive(java.lang.Number.class.getName()));
assertFalse(ClassNameTools.isVariablePrimitive(java.lang.String.class.getName()));
assertFalse(ClassNameTools.isVariablePrimitive(java.lang.Boolean.class.getName()));
}
public void testIsVariablePrimitiveCharArray() {
assertFalse(ClassNameTools.isVariablePrimitive(void.class.getName().toCharArray()));
assertTrue(ClassNameTools.isVariablePrimitive(int.class.getName().toCharArray()));
assertTrue(ClassNameTools.isVariablePrimitive(float.class.getName().toCharArray()));
assertTrue(ClassNameTools.isVariablePrimitive(boolean.class.getName().toCharArray()));
assertFalse(ClassNameTools.isVariablePrimitive(java.lang.Number.class.getName().toCharArray()));
assertFalse(ClassNameTools.isVariablePrimitive(java.lang.String.class.getName().toCharArray()));
assertFalse(ClassNameTools.isVariablePrimitive(java.lang.Boolean.class.getName().toCharArray()));
}
public void testIsVariablePrimitiveWrapper() {
assertFalse(ClassNameTools.isVariablePrimitiveWrapper(java.lang.Void.class.getName()));
assertTrue(ClassNameTools.isVariablePrimitiveWrapper(java.lang.Integer.class.getName()));
assertTrue(ClassNameTools.isVariablePrimitiveWrapper(java.lang.Float.class.getName()));
assertTrue(ClassNameTools.isVariablePrimitiveWrapper(java.lang.Boolean.class.getName()));
assertFalse(ClassNameTools.isVariablePrimitiveWrapper(java.lang.Number.class.getName()));
assertFalse(ClassNameTools.isVariablePrimitiveWrapper(java.lang.String.class.getName()));
assertFalse(ClassNameTools.isVariablePrimitiveWrapper(java.lang.Object.class.getName()));
}
public void testIsVariablePrimitiveWrapperCharArray() {
assertFalse(ClassNameTools.isVariablePrimitiveWrapper(java.lang.Void.class.getName().toCharArray()));
assertTrue(ClassNameTools.isVariablePrimitiveWrapper(java.lang.Integer.class.getName().toCharArray()));
assertTrue(ClassNameTools.isVariablePrimitiveWrapper(java.lang.Float.class.getName().toCharArray()));
assertTrue(ClassNameTools.isVariablePrimitiveWrapper(java.lang.Boolean.class.getName().toCharArray()));
assertFalse(ClassNameTools.isVariablePrimitiveWrapper(java.lang.Number.class.getName().toCharArray()));
assertFalse(ClassNameTools.isVariablePrimitiveWrapper(java.lang.String.class.getName().toCharArray()));
assertFalse(ClassNameTools.isVariablePrimitiveWrapper(java.lang.Object.class.getName().toCharArray()));
}
public void testWrapperClassName() {
assertEquals(java.lang.Void.class.getName(), ClassNameTools.primitiveWrapperClassName(void.class.getName()));
assertEquals(java.lang.Integer.class.getName(), ClassNameTools.primitiveWrapperClassName(int.class.getName()));
assertEquals(java.lang.Float.class.getName(), ClassNameTools.primitiveWrapperClassName(float.class.getName()));
assertEquals(java.lang.Boolean.class.getName(), ClassNameTools.primitiveWrapperClassName(boolean.class.getName()));
assertNull(ClassNameTools.primitiveWrapperClassName(java.lang.String.class.getName()));
}
public void testWrapperClassNameCharArray() {
TestTools.assertEquals(java.lang.Void.class.getName(), ClassNameTools.primitiveWrapperClassName(void.class.getName().toCharArray()));
TestTools.assertEquals(java.lang.Integer.class.getName(), ClassNameTools.primitiveWrapperClassName(int.class.getName().toCharArray()));
TestTools.assertEquals(java.lang.Float.class.getName(), ClassNameTools.primitiveWrapperClassName(float.class.getName().toCharArray()));
TestTools.assertEquals(java.lang.Boolean.class.getName(), ClassNameTools.primitiveWrapperClassName(boolean.class.getName().toCharArray()));
assertNull(ClassNameTools.primitiveWrapperClassName(java.lang.String.class.getName().toCharArray()));
}
public void testPrimitiveClassName() {
assertEquals(void.class.getName(), ClassNameTools.primitiveClassName(java.lang.Void.class.getName()));
assertEquals(int.class.getName(), ClassNameTools.primitiveClassName(java.lang.Integer.class.getName()));
assertEquals(float.class.getName(), ClassNameTools.primitiveClassName(java.lang.Float.class.getName()));
assertEquals(boolean.class.getName(), ClassNameTools.primitiveClassName(java.lang.Boolean.class.getName()));
assertNull(ClassNameTools.primitiveClassName(java.lang.String.class.getName()));
}
public void testPrimitiveClassNameCharArray() {
TestTools.assertEquals(void.class.getName(), ClassNameTools.primitiveClassName(java.lang.Void.class.getName().toCharArray()));
TestTools.assertEquals(int.class.getName(), ClassNameTools.primitiveClassName(java.lang.Integer.class.getName().toCharArray()));
TestTools.assertEquals(float.class.getName(), ClassNameTools.primitiveClassName(java.lang.Float.class.getName().toCharArray()));
TestTools.assertEquals(boolean.class.getName(), ClassNameTools.primitiveClassName(java.lang.Boolean.class.getName().toCharArray()));
assertNull(ClassNameTools.primitiveClassName(java.lang.String.class.getName().toCharArray()));
}
public void testIsAutoboxEquivalent() {
assertTrue(ClassNameTools.isAutoboxEquivalent(Integer.class.getName(), Integer.class.getName()));
assertTrue(ClassNameTools.isAutoboxEquivalent(int.class.getName(), Integer.class.getName()));
assertTrue(ClassNameTools.isAutoboxEquivalent(Integer.class.getName(), int.class.getName()));
assertFalse(ClassNameTools.isAutoboxEquivalent(int.class.getName(), Boolean.class.getName()));
assertTrue(ClassNameTools.isAutoboxEquivalent(String.class.getName(), String.class.getName()));
}
public void testIsAutoboxEquivalentCharArray() {
assertTrue(ClassNameTools.isAutoboxEquivalent(Integer.class.getName().toCharArray(), Integer.class.getName().toCharArray()));
assertTrue(ClassNameTools.isAutoboxEquivalent(int.class.getName().toCharArray(), Integer.class.getName().toCharArray()));
assertTrue(ClassNameTools.isAutoboxEquivalent(Integer.class.getName().toCharArray(), int.class.getName().toCharArray()));
assertFalse(ClassNameTools.isAutoboxEquivalent(int.class.getName().toCharArray(), Boolean.class.getName().toCharArray()));
assertTrue(ClassNameTools.isAutoboxEquivalent(String.class.getName().toCharArray(), String.class.getName().toCharArray()));
}
public void testForCode() {
assertEquals("byte", ClassNameTools.forCode('B'));
assertEquals("char", ClassNameTools.forCode('C'));
assertEquals("double", ClassNameTools.forCode('D'));
assertEquals("float", ClassNameTools.forCode('F'));
assertEquals("int", ClassNameTools.forCode('I'));
assertEquals("long", ClassNameTools.forCode('J'));
assertEquals("short", ClassNameTools.forCode('S'));
assertEquals("boolean", ClassNameTools.forCode('Z'));
assertEquals("void", ClassNameTools.forCode('V'));
assertNull(ClassNameTools.forCode('X'));
assertEquals("byte", ClassNameTools.forCode((int) 'B'));
assertEquals("char", ClassNameTools.forCode((int) 'C'));
assertEquals("double", ClassNameTools.forCode((int) 'D'));
assertEquals("float", ClassNameTools.forCode((int) 'F'));
assertEquals("int", ClassNameTools.forCode((int) 'I'));
assertEquals("long", ClassNameTools.forCode((int) 'J'));
assertEquals("short", ClassNameTools.forCode((int) 'S'));
assertEquals("boolean", ClassNameTools.forCode((int) 'Z'));
assertEquals("void", ClassNameTools.forCode((int) 'V'));
assertNull(ClassNameTools.forCode((int) 'X'));
}
public void testForCodeCharArray() {
TestTools.assertEquals("byte", ClassNameTools.forCodeCharArray('B'));
TestTools.assertEquals("char", ClassNameTools.forCodeCharArray('C'));
TestTools.assertEquals("double", ClassNameTools.forCodeCharArray('D'));
TestTools.assertEquals("float", ClassNameTools.forCodeCharArray('F'));
TestTools.assertEquals("int", ClassNameTools.forCodeCharArray('I'));
TestTools.assertEquals("long", ClassNameTools.forCodeCharArray('J'));
TestTools.assertEquals("short", ClassNameTools.forCodeCharArray('S'));
TestTools.assertEquals("boolean", ClassNameTools.forCodeCharArray('Z'));
TestTools.assertEquals("void", ClassNameTools.forCodeCharArray('V'));
assertNull(ClassNameTools.forCodeCharArray('X'));
TestTools.assertEquals("byte", ClassNameTools.forCodeCharArray((int) 'B'));
TestTools.assertEquals("char", ClassNameTools.forCodeCharArray((int) 'C'));
TestTools.assertEquals("double", ClassNameTools.forCodeCharArray((int) 'D'));
TestTools.assertEquals("float", ClassNameTools.forCodeCharArray((int) 'F'));
TestTools.assertEquals("int", ClassNameTools.forCodeCharArray((int) 'I'));
TestTools.assertEquals("long", ClassNameTools.forCodeCharArray((int) 'J'));
TestTools.assertEquals("short", ClassNameTools.forCodeCharArray((int) 'S'));
TestTools.assertEquals("boolean", ClassNameTools.forCodeCharArray((int) 'Z'));
TestTools.assertEquals("void", ClassNameTools.forCodeCharArray((int) 'V'));
assertNull(ClassNameTools.forCodeCharArray((int) 'X'));
}
public void testPrimitiveClassCode() {
assertEquals('I', ClassNameTools.primitiveClassCode(int.class.getName()));
assertEquals('I', ClassNameTools.primitiveClassCode("int"));
assertEquals('B', ClassNameTools.primitiveClassCode(byte.class.getName()));
assertEquals('B', ClassNameTools.primitiveClassCode("byte"));
assertEquals((char) 0, ClassNameTools.primitiveClassCode(java.lang.Object.class.getName()));
}
public void testPrimitiveClassCodeCharArray() {
assertEquals('I', ClassNameTools.primitiveClassCode(int.class.getName().toCharArray()));
assertEquals('I', ClassNameTools.primitiveClassCode("int".toCharArray()));
assertEquals('B', ClassNameTools.primitiveClassCode(byte.class.getName().toCharArray()));
assertEquals('B', ClassNameTools.primitiveClassCode("byte".toCharArray()));
assertEquals((char) 0, ClassNameTools.primitiveClassCode(java.lang.Object.class.getName().toCharArray()));
}
public void testConstructor() {
boolean exCaught = false;
try {
Object at = ClassTools.newInstance(ClassNameTools.class);
fail("bogus: " + at); //$NON-NLS-1$
} catch (RuntimeException ex) {
if (ex.getCause() instanceof InvocationTargetException) {
if (ex.getCause().getCause() instanceof UnsupportedOperationException) {
exCaught = true;
}
}
}
assertTrue(exCaught);
}
}