Skip to main content
summaryrefslogblamecommitdiffstats
blob: b3cd7e8e0552879c61a69fc01b495b4bc06da314 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13












                                                                                
                                






















































                                                                                                                                       


                                                                                                                                      
















                                                                                                 
                                                                                                                                        


                                                                                                 


                                                                                                                                              



















































































































































































































                                                                                                                                      








                                                                                                              


















































                                                                                                        
/*******************************************************************************
 * Copyright (c) 2005, 2010 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.utility.tests.internal;

import java.lang.reflect.Array;
import java.lang.reflect.InvocationTargetException;
import junit.framework.TestCase;
import org.eclipse.jpt.utility.internal.ClassName;
import org.eclipse.jpt.utility.internal.ReflectionTools;

@SuppressWarnings("nls")
public class ClassNameTests extends TestCase {

	public ClassNameTests(String name) {
		super(name);
	}

	public void testIsArray() {
		assertFalse(ClassName.isArray(int.class.getName()));
		assertTrue(ClassName.isArray(int[].class.getName()));
		assertTrue(ClassName.isArray(int[][].class.getName()));

		assertFalse(ClassName.isArray(java.lang.String.class.getName()));
		assertTrue(ClassName.isArray(java.lang.String[].class.getName()));
		assertTrue(ClassName.isArray(java.lang.String[][].class.getName()));
	}

	public void testGetElementTypeName() {
		assertEquals(java.util.Vector.class.getName(), ClassName.getElementTypeName(java.util.Vector.class.getName()));
		assertEquals(int.class.getName(), ClassName.getElementTypeName(int.class.getName()));
		assertEquals(void.class.getName(), ClassName.getElementTypeName(void.class.getName()));
		assertEquals(java.util.Vector.class.getName(), ClassName.getElementTypeName(java.util.Vector[].class.getName()));
		assertEquals(int.class.getName(), ClassName.getElementTypeName(int[].class.getName()));
		assertEquals(java.util.Vector.class.getName(), ClassName.getElementTypeName(java.util.Vector[][][].class.getName()));
		assertEquals(int.class.getName(), ClassName.getElementTypeName(int[][][].class.getName()));
	}

	public void testGetArrayDepth() {
		assertEquals(0, ClassName.getArrayDepth(java.util.Vector.class.getName()));
		assertEquals(0, ClassName.getArrayDepth(int.class.getName()));
		assertEquals(0, ClassName.getArrayDepth(void.class.getName()));
		assertEquals(1, ClassName.getArrayDepth(java.util.Vector[].class.getName()));
		assertEquals(1, ClassName.getArrayDepth(int[].class.getName()));
		assertEquals(3, ClassName.getArrayDepth(java.util.Vector[][][].class.getName()));
		assertEquals(3, ClassName.getArrayDepth(int[][][].class.getName()));
	}

	public void testGetComponentTypeName() {
		assertEquals(null, ClassName.getComponentTypeName(java.lang.Object.class.getName()));
		assertEquals(java.lang.Object.class.getName(), ClassName.getComponentTypeName(java.lang.Object[].class.getName()));
		assertEquals(java.lang.Object[].class.getName(), ClassName.getComponentTypeName(java.lang.Object[][].class.getName()));

		assertEquals(null, ClassName.getComponentTypeName(int.class.getName()));
		assertEquals(int.class.getName(), ClassName.getComponentTypeName(int[].class.getName()));
		assertEquals(int[].class.getName(), ClassName.getComponentTypeName(int[][].class.getName()));
	}

	public void testGetSimpleName() throws Exception {
		assertEquals("Object", ClassName.getSimpleName(java.lang.Object.class.getName()));
		assertEquals("Object[]", ClassName.getSimpleName(java.lang.Object[].class.getName()));
		assertEquals("Object[][]", ClassName.getSimpleName(java.lang.Object[][].class.getName()));

		assertEquals(java.util.Map.class.getSimpleName(), ClassName.getSimpleName(java.util.Map.class.getName()));
		assertEquals(java.util.Map.Entry.class.getSimpleName(), ClassName.getSimpleName(java.util.Map.Entry.class.getName()));

		assertEquals("int", ClassName.getSimpleName(int.class.getName()));
		assertEquals("int[]", ClassName.getSimpleName(int[].class.getName()));
		assertEquals("int[][]", ClassName.getSimpleName(int[][].class.getName()));

		Object anonObject = new Object() {
			// anonymous class
		};
		assertEquals("", ClassName.getSimpleName(anonObject.getClass().getName()));

		class Local {
			// anonymous class
		}
		Local localObject = new Local();
		assertEquals("Local", ClassName.getSimpleName(localObject.getClass().getName()));
	}

	public void testGetPackageName() throws Exception {
		assertEquals(java.lang.Object.class.getPackage().getName(), ClassName.getPackageName(java.lang.Object.class.getName()));
		assertEquals("", ClassName.getPackageName(java.lang.Object[].class.getName()));
		assertEquals("", ClassName.getPackageName(java.lang.Object[][].class.getName()));

		assertEquals(java.util.Map.class.getPackage().getName(), ClassName.getPackageName(java.util.Map.class.getName()));
		assertEquals(java.util.Map.Entry.class.getPackage().getName(), ClassName.getPackageName(java.util.Map.Entry.class.getName()));

		assertEquals("", ClassName.getPackageName(int.class.getName()));
		assertEquals("", ClassName.getPackageName(int[].class.getName()));
		assertEquals("", ClassName.getPackageName(int[][].class.getName()));

		assertEquals("", ClassName.getPackageName(void.class.getName()));

		Object anonObject = new Object() {
			// anonymous class
		};
		assertEquals(anonObject.getClass().getPackage().getName(), ClassName.getPackageName(anonObject.getClass().getName()));
	}

	public void testIsTopLevel() throws Exception {
		assertTrue(ClassName.isTopLevel(java.util.Map.class.getName())); // top-level
		assertFalse(ClassName.isTopLevel(java.util.Map.Entry.class.getName())); // member
		assertFalse(ClassName.isTopLevel(Class.forName(this.getClass().getName() + "$1LocalClass").getName())); // local
		assertFalse(ClassName.isTopLevel(Class.forName("java.util.Vector$1").getName())); // anonymous

		Object[] array = new java.util.Map[0]; // top-level
		assertFalse(ClassName.isTopLevel(array.getClass().getName()));
		array = new java.util.Map.Entry[0]; // member
		assertFalse(ClassName.isTopLevel(array.getClass().getName()));
		Class<?> localClass = Class.forName(this.getClass().getName() + "$1LocalClass"); // local
		array = (Object[]) Array.newInstance(localClass, 0);
		assertFalse(ClassName.isTopLevel(array.getClass().getName()));
		Class<?> anonClass = Class.forName("java.util.Vector$1"); // local
		array = (Object[]) Array.newInstance(anonClass, 0);
		assertFalse(ClassName.isTopLevel(array.getClass().getName()));
	}

	public void testIsMember() throws Exception {
		assertFalse(ClassName.isMember(java.util.Map.class.getName())); // top-level
		assertTrue(ClassName.isMember(java.util.Map.Entry.class.getName())); // member
		assertFalse(ClassName.isMember(Class.forName(this.getClass().getName() + "$1LocalClass").getName())); // local
		assertFalse(ClassName.isMember(Class.forName("java.util.Vector$1").getName())); // anonymous

		Object[] array = new java.util.Map[0]; // top-level
		assertFalse(ClassName.isMember(array.getClass().getName()));
		array = new java.util.Map.Entry[0]; // member
		assertFalse(ClassName.isMember(array.getClass().getName()));
		Class<?> localClass = Class.forName(this.getClass().getName() + "$1LocalClass"); // local
		array = (Object[]) Array.newInstance(localClass, 0);
		assertFalse(ClassName.isMember(array.getClass().getName()));
		Class<?> anonClass = Class.forName("java.util.Vector$1"); // local
		array = (Object[]) Array.newInstance(anonClass, 0);
		assertFalse(ClassName.isMember(array.getClass().getName()));

		// test a few edge cases
		assertTrue(ClassName.isMember("java.util.Map$a1"));
		assertTrue(ClassName.isMember("java.util.Map$1aa$aaa"));  // member inside local
		assertTrue(ClassName.isMember("java.util.Map$1$aaa"));  // member inside anonymous
		assertTrue(ClassName.isMember("java.util.Map$a1$aaa$bbb"));
		assertTrue(ClassName.isMember("java.util.Map$1a1$aaa"));  // member inside local
		assertFalse(ClassName.isMember("java.util.Map$1a"));
		assertTrue(ClassName.isMember("java.util.Map$a12345$b12345"));
		assertFalse(ClassName.isMember("java.util.Map$12345a"));
		assertFalse(ClassName.isMember("java.util.Map$333"));
		assertFalse(ClassName.isMember("java.util.Map3$333"));
	}

	public void testIsLocal() throws Exception {
		class LocalClass {
			void foo() {
				System.getProperty("foo");
			}
		}
		new LocalClass().foo();
		assertFalse(ClassName.isLocal(java.util.Map.class.getName())); // top-level
		assertFalse(ClassName.isLocal(java.util.Map.Entry.class.getName())); // member
		assertTrue(ClassName.isLocal(Class.forName(this.getClass().getName() + "$1LocalClass").getName())); // local
		assertFalse(ClassName.isLocal(Class.forName("java.util.Vector$1").getName())); // anonymous

		Object[] array = new java.util.Map[0]; // top-level
		assertFalse(ClassName.isLocal(array.getClass().getName()));
		array = new java.util.Map.Entry[0]; // member
		assertFalse(ClassName.isLocal(array.getClass().getName()));
		Class<?> localClass = Class.forName(this.getClass().getName() + "$1LocalClass"); // local
		array = (Object[]) Array.newInstance(localClass, 0);
		assertFalse(ClassName.isLocal(array.getClass().getName()));
		Class<?> anonClass = Class.forName("java.util.Vector$1"); // local
		array = (Object[]) Array.newInstance(anonClass, 0);
		assertFalse(ClassName.isLocal(array.getClass().getName()));

		// test a few edge cases
		assertFalse(ClassName.isLocal("java.util.Map$a1"));
		assertFalse(ClassName.isLocal("java.util.Map$a1$aaa$bbb"));
		assertFalse(ClassName.isLocal("java.util.Map$11$aaa"));
		assertTrue(ClassName.isLocal("java.util.Map$1a"));
		assertTrue(ClassName.isLocal("java.util.Map$2abc"));
		assertTrue(ClassName.isLocal("java.util.Map$2abc1"));
		assertFalse(ClassName.isLocal("java.util.Map$a12345$b12345"));
		assertTrue(ClassName.isLocal("java.util.Map$12345$1234a"));
		assertFalse(ClassName.isLocal("java.util.Map$333"));
		assertFalse(ClassName.isLocal("java.util.Map3$333"));
	}

	public void testIsAnonymous() throws Exception {
		assertFalse(ClassName.isAnonymous(java.util.Map.class.getName())); // top-level
		assertFalse(ClassName.isAnonymous(java.util.Map.Entry.class.getName())); // member
		assertFalse(ClassName.isAnonymous(Class.forName(this.getClass().getName() + "$1LocalClass").getName())); // local
		assertTrue(ClassName.isAnonymous(Class.forName("java.util.Vector$1").getName())); // anonymous

		Object[] array = new java.util.Map[0]; // top-level
		assertFalse(ClassName.isAnonymous(array.getClass().getName()));
		array = new java.util.Map.Entry[0]; // member
		assertFalse(ClassName.isAnonymous(array.getClass().getName()));
		Class<?> localClass = Class.forName(this.getClass().getName() + "$1LocalClass"); // local
		array = (Object[]) Array.newInstance(localClass, 0);
		assertFalse(ClassName.isAnonymous(array.getClass().getName()));
		Class<?> anonClass = Class.forName("java.util.Vector$1"); // local
		array = (Object[]) Array.newInstance(anonClass, 0);
		assertFalse(ClassName.isAnonymous(array.getClass().getName()));

		// test a few edge cases
		assertFalse(ClassName.isAnonymous("java.util.Map$a1"));
		assertFalse(ClassName.isAnonymous("java.util.Map$a1$aaa$bbb"));
		assertFalse(ClassName.isAnonymous("java.util.Map$1a1$aaa"));
		assertFalse(ClassName.isAnonymous("java.util.Map$1$a"));
		assertFalse(ClassName.isAnonymous("java.util.Map$1a"));
		assertFalse(ClassName.isAnonymous("java.util.Map$a12345$b12345"));
		assertFalse(ClassName.isAnonymous("java.util.Map$12345$a1234"));
		assertTrue(ClassName.isAnonymous("java.util.Map$333"));
		assertTrue(ClassName.isAnonymous("java.util.Map3$333"));
	}

	public void testIsReference() throws Exception {
		assertFalse(ClassName.isReference(int.class.getName())); // top-level

		assertTrue(ClassName.isReference(java.util.Map.class.getName())); // top-level
		assertTrue(ClassName.isReference(java.util.Map.Entry.class.getName())); // member
		assertTrue(ClassName.isReference(Class.forName(this.getClass().getName() + "$1LocalClass").getName())); // local
		assertTrue(ClassName.isReference(Class.forName("java.util.Vector$1").getName())); // anonymous

		Object[] array = new java.util.Map[0]; // top-level
		assertTrue(ClassName.isReference(array.getClass().getName()));
		array = new java.util.Map.Entry[0]; // member
		assertTrue(ClassName.isReference(array.getClass().getName()));
		Class<?> localClass = Class.forName(this.getClass().getName() + "$1LocalClass"); // local
		array = (Object[]) Array.newInstance(localClass, 0);
		assertTrue(ClassName.isReference(array.getClass().getName()));
		Class<?> anonClass = Class.forName("java.util.Vector$1"); // local
		array = (Object[]) Array.newInstance(anonClass, 0);
		assertTrue(ClassName.isReference(array.getClass().getName()));
	}

	public void testIsPrimitive() {
		assertTrue(void.class.isPrimitive());

		assertTrue(ClassName.isPrimitive(void.class.getName()));
		assertTrue(ClassName.isPrimitive(int.class.getName()));
		assertTrue(ClassName.isPrimitive(float.class.getName()));
		assertTrue(ClassName.isPrimitive(boolean.class.getName()));

		assertFalse(ClassName.isPrimitive(java.lang.Number.class.getName()));
		assertFalse(ClassName.isPrimitive(java.lang.String.class.getName()));
		assertFalse(ClassName.isPrimitive(java.lang.Boolean.class.getName()));
		assertFalse(ClassName.isPrimitive(java.lang.Integer.class.getName()));
	}

	public void testIsPrimitiveWrapper() {
		assertFalse(ClassName.isPrimitiveWrapper(void.class.getName()));
		assertFalse(ClassName.isPrimitiveWrapper(int.class.getName()));
		assertFalse(ClassName.isPrimitiveWrapper(float.class.getName()));
		assertFalse(ClassName.isPrimitiveWrapper(boolean.class.getName()));

		assertFalse(ClassName.isPrimitiveWrapper(java.lang.reflect.Field.class.getName()));
		assertFalse(ClassName.isPrimitiveWrapper(java.lang.String.class.getName()));
		assertTrue(ClassName.isPrimitiveWrapper(java.lang.Boolean.class.getName()));
		assertTrue(ClassName.isPrimitiveWrapper(java.lang.Integer.class.getName()));
	}

	public void testIsVariablePrimitive() {
		assertFalse(ClassName.isVariablePrimitive(void.class.getName()));

		assertTrue(ClassName.isVariablePrimitive(int.class.getName()));
		assertTrue(ClassName.isVariablePrimitive(float.class.getName()));
		assertTrue(ClassName.isVariablePrimitive(boolean.class.getName()));

		assertFalse(ClassName.isVariablePrimitive(java.lang.Number.class.getName()));
		assertFalse(ClassName.isVariablePrimitive(java.lang.String.class.getName()));
		assertFalse(ClassName.isVariablePrimitive(java.lang.Boolean.class.getName()));
	}

	public void testIsVariablePrimitiveWrapper() {
		assertFalse(ClassName.isVariablePrimitiveWrapper(java.lang.Void.class.getName()));

		assertTrue(ClassName.isVariablePrimitiveWrapper(java.lang.Integer.class.getName()));
		assertTrue(ClassName.isVariablePrimitiveWrapper(java.lang.Float.class.getName()));
		assertTrue(ClassName.isVariablePrimitiveWrapper(java.lang.Boolean.class.getName()));

		assertFalse(ClassName.isVariablePrimitiveWrapper(java.lang.Number.class.getName()));
		assertFalse(ClassName.isVariablePrimitiveWrapper(java.lang.String.class.getName()));
		assertFalse(ClassName.isVariablePrimitiveWrapper(java.lang.Object.class.getName()));
	}

	public void testGetWrapperClassName() {
		assertEquals(java.lang.Void.class.getName(), ClassName.getWrapperClassName(void.class.getName()));
		assertEquals(java.lang.Integer.class.getName(), ClassName.getWrapperClassName(int.class.getName()));
		assertEquals(java.lang.Float.class.getName(), ClassName.getWrapperClassName(float.class.getName()));
		assertEquals(java.lang.Boolean.class.getName(), ClassName.getWrapperClassName(boolean.class.getName()));

		assertNull(ClassName.getWrapperClassName(java.lang.String.class.getName()));
	}

	public void testGetPrimitiveClassName() {
		assertEquals(void.class.getName(), ClassName.getPrimitiveClassName(java.lang.Void.class.getName()));
		assertEquals(int.class.getName(), ClassName.getPrimitiveClassName(java.lang.Integer.class.getName()));
		assertEquals(float.class.getName(), ClassName.getPrimitiveClassName(java.lang.Float.class.getName()));
		assertEquals(boolean.class.getName(), ClassName.getPrimitiveClassName(java.lang.Boolean.class.getName()));

		assertNull(ClassName.getPrimitiveClassName(java.lang.String.class.getName()));
	}
	
	public void testAreAutoboxEquivalents() {
		assertTrue(ClassName.areAutoboxEquivalents(Integer.class.getName(), Integer.class.getName()));
		assertTrue(ClassName.areAutoboxEquivalents(int.class.getName(), Integer.class.getName()));
		assertTrue(ClassName.areAutoboxEquivalents(Integer.class.getName(), int.class.getName()));
		assertFalse(ClassName.areAutoboxEquivalents(int.class.getName(), Boolean.class.getName()));
		assertTrue(ClassName.areAutoboxEquivalents(String.class.getName(), String.class.getName()));
	}
	
	public void testForCode() {
		assertEquals("byte", ClassName.forCode('B'));
		assertEquals("char", ClassName.forCode('C'));
		assertEquals("double", ClassName.forCode('D'));
		assertEquals("float", ClassName.forCode('F'));
		assertEquals("int", ClassName.forCode('I'));
		assertEquals("long", ClassName.forCode('J'));
		assertEquals("short", ClassName.forCode('S'));
		assertEquals("boolean", ClassName.forCode('Z'));
		assertEquals("void", ClassName.forCode('V'));

		assertNull(ClassName.forCode('X'));

		assertEquals("byte", ClassName.forCode((int) 'B'));
		assertEquals("char", ClassName.forCode((int) 'C'));
		assertEquals("double", ClassName.forCode((int) 'D'));
		assertEquals("float", ClassName.forCode((int) 'F'));
		assertEquals("int", ClassName.forCode((int) 'I'));
		assertEquals("long", ClassName.forCode((int) 'J'));
		assertEquals("short", ClassName.forCode((int) 'S'));
		assertEquals("boolean", ClassName.forCode((int) 'Z'));
		assertEquals("void", ClassName.forCode((int) 'V'));

		assertNull(ClassName.forCode((int) 'X'));
	}

	public void testGetCodeForClassName() {
		assertEquals('I', ClassName.getCodeForClassName(int.class.getName()));
		assertEquals('I', ClassName.getCodeForClassName("int"));
		assertEquals('B', ClassName.getCodeForClassName(byte.class.getName()));
		assertEquals('B', ClassName.getCodeForClassName("byte"));

		assertEquals((char) 0, ClassName.getCodeForClassName(java.lang.Object.class.getName()));
	}

	public void testConstructor() {
		boolean exCaught = false;
		try {
			Object at = ReflectionTools.newInstance(ClassName.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);
	}

}

Back to the top