blob: 16018ae288c667e6196b5a232ce44a5757021ef1 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2015 Oracle. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0, which accompanies this distribution
* and is available at https://www.eclipse.org/legal/epl-2.0/.
*
* Contributors:
* Oracle - initial API and implementation
******************************************************************************/
package org.eclipse.jpt.common.utility.tests.internal;
import junit.framework.TestCase;
import org.eclipse.jpt.common.utility.internal.SystemTools;
import org.eclipse.jpt.common.utility.internal.TypeDeclarationTools;
@SuppressWarnings("nls")
public class TypeDeclarationToolsTests
extends TestCase
{
public TypeDeclarationToolsTests(String name) {
super(name);
}
public void testIsArrayString() throws Exception {
assertFalse(TypeDeclarationTools.isArray("java.lang.Object"));
assertTrue(TypeDeclarationTools.isArray("java.lang.Object[]"));
assertTrue(TypeDeclarationTools.isArray("java.lang.Object[][][]"));
assertFalse(TypeDeclarationTools.isArray("int"));
assertTrue(TypeDeclarationTools.isArray("int[]"));
assertTrue(TypeDeclarationTools.isArray("int[][][]"));
assertFalse(TypeDeclarationTools.isArray("float"));
assertTrue(TypeDeclarationTools.isArray("float [ ]"));
assertTrue(TypeDeclarationTools.isArray("float[] [] []"));
}
public void testIsArrayCharArray() throws Exception {
assertFalse(TypeDeclarationTools.isArray("java.lang.Object".toCharArray()));
assertTrue(TypeDeclarationTools.isArray("java.lang.Object[]".toCharArray()));
assertTrue(TypeDeclarationTools.isArray("java.lang.Object[][][]".toCharArray()));
assertFalse(TypeDeclarationTools.isArray("int".toCharArray()));
assertTrue(TypeDeclarationTools.isArray("int[]".toCharArray()));
assertTrue(TypeDeclarationTools.isArray("int[][][]".toCharArray()));
assertFalse(TypeDeclarationTools.isArray("float".toCharArray()));
assertTrue(TypeDeclarationTools.isArray("float [ ]".toCharArray()));
assertTrue(TypeDeclarationTools.isArray("float[] [] []".toCharArray()));
}
public void testArrayDepthString() throws Exception {
assertEquals(0, TypeDeclarationTools.arrayDepth("java.lang.Object"));
assertEquals(1, TypeDeclarationTools.arrayDepth("java.lang.Object[]"));
assertEquals(3, TypeDeclarationTools.arrayDepth("java.lang.Object[][][]"));
assertEquals(0, TypeDeclarationTools.arrayDepth("int"));
assertEquals(1, TypeDeclarationTools.arrayDepth("int[]"));
assertEquals(3, TypeDeclarationTools.arrayDepth("int[][][]"));
assertEquals(0, TypeDeclarationTools.arrayDepth("float"));
assertEquals(1, TypeDeclarationTools.arrayDepth("float [ ]"));
assertEquals(3, TypeDeclarationTools.arrayDepth("float[] [] []"));
}
public void testArrayDepthCharArray() throws Exception {
assertEquals(0, TypeDeclarationTools.arrayDepth("java.lang.Object".toCharArray()));
assertEquals(1, TypeDeclarationTools.arrayDepth("java.lang.Object[]".toCharArray()));
assertEquals(3, TypeDeclarationTools.arrayDepth("java.lang.Object[][][]".toCharArray()));
assertEquals(0, TypeDeclarationTools.arrayDepth("int".toCharArray()));
assertEquals(1, TypeDeclarationTools.arrayDepth("int[]".toCharArray()));
assertEquals(3, TypeDeclarationTools.arrayDepth("int[][][]".toCharArray()));
assertEquals(0, TypeDeclarationTools.arrayDepth("float".toCharArray()));
assertEquals(1, TypeDeclarationTools.arrayDepth("float [ ]".toCharArray()));
assertEquals(3, TypeDeclarationTools.arrayDepth("float[] [] []".toCharArray()));
}
public void testElementTypeNameString() throws Exception {
assertEquals("java.lang.Object", TypeDeclarationTools.elementTypeName("java.lang.Object"));
assertEquals("java.lang.Object", TypeDeclarationTools.elementTypeName("java.lang.Object[]"));
assertEquals("java.lang.Object", TypeDeclarationTools.elementTypeName("java.lang.Object[][][]"));
assertEquals("int", TypeDeclarationTools.elementTypeName("int"));
assertEquals("int", TypeDeclarationTools.elementTypeName("int[]"));
assertEquals("int", TypeDeclarationTools.elementTypeName("int[][][]"));
assertEquals("float", TypeDeclarationTools.elementTypeName("float"));
assertEquals("float", TypeDeclarationTools.elementTypeName("float [ ]"));
assertEquals("float", TypeDeclarationTools.elementTypeName("float[] [] []"));
}
public void testElementTypeNameCharArray() throws Exception {
TestTools.assertEquals("java.lang.Object", TypeDeclarationTools.elementTypeName("java.lang.Object".toCharArray()));
TestTools.assertEquals("java.lang.Object", TypeDeclarationTools.elementTypeName("java.lang.Object[]".toCharArray()));
TestTools.assertEquals("java.lang.Object", TypeDeclarationTools.elementTypeName("java.lang.Object[][][]".toCharArray()));
TestTools.assertEquals("int", TypeDeclarationTools.elementTypeName("int".toCharArray()));
TestTools.assertEquals("int", TypeDeclarationTools.elementTypeName("int[]".toCharArray()));
TestTools.assertEquals("int", TypeDeclarationTools.elementTypeName("int[][][]".toCharArray()));
TestTools.assertEquals("float", TypeDeclarationTools.elementTypeName("float".toCharArray()));
TestTools.assertEquals("float", TypeDeclarationTools.elementTypeName("float [ ]".toCharArray()));
TestTools.assertEquals("float", TypeDeclarationTools.elementTypeName("float[] [] []".toCharArray()));
}
public void testComponentTypeDeclarationString() throws Exception {
assertEquals(null, TypeDeclarationTools.componentTypeDeclaration("java.lang.Object"));
assertEquals("java.lang.Object", TypeDeclarationTools.componentTypeDeclaration("java.lang.Object[]"));
assertEquals("java.lang.Object[][]", TypeDeclarationTools.componentTypeDeclaration("java.lang.Object[][][]"));
assertEquals(null, TypeDeclarationTools.componentTypeDeclaration("int"));
assertEquals("int", TypeDeclarationTools.componentTypeDeclaration("int[]"));
assertEquals("int[][]", TypeDeclarationTools.componentTypeDeclaration("int[][][]"));
assertEquals(null, TypeDeclarationTools.componentTypeDeclaration("float"));
assertEquals("float", TypeDeclarationTools.componentTypeDeclaration("float [ ]"));
assertEquals("float[][]", TypeDeclarationTools.componentTypeDeclaration("float[] [] []"));
}
public void testComponentTypeDeclarationCharArray() throws Exception {
TestTools.assertEquals(null, TypeDeclarationTools.componentTypeDeclaration("java.lang.Object".toCharArray()));
TestTools.assertEquals("java.lang.Object", TypeDeclarationTools.componentTypeDeclaration("java.lang.Object[]".toCharArray()));
TestTools.assertEquals("java.lang.Object[][]", TypeDeclarationTools.componentTypeDeclaration("java.lang.Object[][][]".toCharArray()));
TestTools.assertEquals(null, TypeDeclarationTools.componentTypeDeclaration("int".toCharArray()));
TestTools.assertEquals("int", TypeDeclarationTools.componentTypeDeclaration("int[]".toCharArray()));
TestTools.assertEquals("int[][]", TypeDeclarationTools.componentTypeDeclaration("int[][][]".toCharArray()));
TestTools.assertEquals(null, TypeDeclarationTools.componentTypeDeclaration("float".toCharArray()));
TestTools.assertEquals("float", TypeDeclarationTools.componentTypeDeclaration("float [ ]".toCharArray()));
TestTools.assertEquals("float[][]", TypeDeclarationTools.componentTypeDeclaration("float[] [] []".toCharArray()));
}
public void testClassNameString() throws Exception {
assertEquals("int", TypeDeclarationTools.className("int"));
assertEquals("[I", TypeDeclarationTools.className("int[]"));
assertEquals("[[I", TypeDeclarationTools.className("int [ ] [ ]"));
assertEquals("java.lang.Object", TypeDeclarationTools.className("java.lang.Object"));
assertEquals("[Ljava.lang.Object;", TypeDeclarationTools.className("java.lang.Object\t[]"));
assertEquals("[[Ljava.lang.Object;", TypeDeclarationTools.className("java.lang.Object\t[]\t[]"));
}
public void testClassNameCharArray() throws Exception {
TestTools.assertEquals("int", TypeDeclarationTools.className("int".toCharArray()));
TestTools.assertEquals("[I", TypeDeclarationTools.className("int[]".toCharArray()));
TestTools.assertEquals("[[I", TypeDeclarationTools.className("int [ ] [ ]".toCharArray()));
TestTools.assertEquals("java.lang.Object", TypeDeclarationTools.className("java.lang.Object".toCharArray()));
TestTools.assertEquals("[Ljava.lang.Object;", TypeDeclarationTools.className("java.lang.Object\t[]".toCharArray()));
TestTools.assertEquals("[[Ljava.lang.Object;", TypeDeclarationTools.className("java.lang.Object\t[]\t[]".toCharArray()));
}
public void testClassNameStringInt() throws Exception {
assertEquals(int.class.getName(), TypeDeclarationTools.className("int", 0));
assertEquals(int[].class.getName(), TypeDeclarationTools.className("int", 1));
assertEquals(int[][][].class.getName(), TypeDeclarationTools.className("int", 3));
assertEquals(Object.class.getName(), TypeDeclarationTools.className("java.lang.Object", 0));
assertEquals(Object[][][].class.getName(), TypeDeclarationTools.className("java.lang.Object", 3));
assertEquals(void.class.getName(), TypeDeclarationTools.className("void", 0));
try {
TypeDeclarationTools.className(void.class.getName(), 1);
fail("should not get here...");
} catch (IllegalArgumentException ex) {
// expected
}
}
public void testClassNameCharArrayInt() throws Exception {
TestTools.assertEquals(int.class.getName(), TypeDeclarationTools.className("int".toCharArray(), 0));
TestTools.assertEquals(int[].class.getName(), TypeDeclarationTools.className("int".toCharArray(), 1));
TestTools.assertEquals(int[][][].class.getName(), TypeDeclarationTools.className("int".toCharArray(), 3));
TestTools.assertEquals(Object.class.getName(), TypeDeclarationTools.className("java.lang.Object".toCharArray(), 0));
TestTools.assertEquals(Object[][][].class.getName(), TypeDeclarationTools.className("java.lang.Object".toCharArray(), 3));
TestTools.assertEquals(void.class.getName(), TypeDeclarationTools.className("void".toCharArray(), 0));
try {
TypeDeclarationTools.className(void.class.getName().toCharArray(), 1);
fail("should not get here...");
} catch (IllegalArgumentException ex) {
// expected
}
}
public void testSimpleNameString() throws Exception {
assertEquals("int", TypeDeclarationTools.simpleName("int"));
assertEquals("int[]", TypeDeclarationTools.simpleName("int[]"));
assertEquals("int[][]", TypeDeclarationTools.simpleName("int [ ] [ ]"));
assertEquals("Object", TypeDeclarationTools.simpleName("java.lang.Object"));
assertEquals("Object[]", TypeDeclarationTools.simpleName("java.lang.Object\t[]"));
assertEquals("Object[][]", TypeDeclarationTools.simpleName("java.lang.Object\t[]\t[]"));
assertEquals("Default", TypeDeclarationTools.simpleName("Default"));
assertEquals("Default[]", TypeDeclarationTools.simpleName("Default\t[]"));
assertEquals("Default[][]", TypeDeclarationTools.simpleName("Default\t[]\t[]"));
}
public void testSimpleNameCharArray() throws Exception {
TestTools.assertEquals("int", TypeDeclarationTools.simpleName("int".toCharArray()));
TestTools.assertEquals("int[]", TypeDeclarationTools.simpleName("int[]".toCharArray()));
TestTools.assertEquals("int[][]", TypeDeclarationTools.simpleName("int [ ] [ ]".toCharArray()));
TestTools.assertEquals("Object", TypeDeclarationTools.simpleName("java.lang.Object".toCharArray()));
TestTools.assertEquals("Object[]", TypeDeclarationTools.simpleName("java.lang.Object\t[]".toCharArray()));
TestTools.assertEquals("Object[][]", TypeDeclarationTools.simpleName("java.lang.Object\t[]\t[]".toCharArray()));
TestTools.assertEquals("Default", TypeDeclarationTools.simpleName("Default".toCharArray()));
TestTools.assertEquals("Default[]", TypeDeclarationTools.simpleName("Default\t[]".toCharArray()));
TestTools.assertEquals("Default[][]", TypeDeclarationTools.simpleName("Default\t[]\t[]".toCharArray()));
}
public void testPackageNameString() throws Exception {
assertEquals("", TypeDeclarationTools.packageName("int"));
assertEquals("", TypeDeclarationTools.packageName("int[]"));
assertEquals("", TypeDeclarationTools.packageName("int [ ] [ ]"));
assertEquals("java.lang", TypeDeclarationTools.packageName("java.lang.Object"));
assertEquals("", TypeDeclarationTools.packageName("java.lang.Object\t[]"));
assertEquals("", TypeDeclarationTools.packageName("java.lang.Object\t[]\t[]"));
assertEquals("", TypeDeclarationTools.packageName("Default"));
assertEquals("", TypeDeclarationTools.packageName("Default\t[]"));
assertEquals("", TypeDeclarationTools.packageName("Default\t[]\t[]"));
}
public void testPackageNameCharArray() throws Exception {
TestTools.assertEquals("", TypeDeclarationTools.packageName("int".toCharArray()));
TestTools.assertEquals("", TypeDeclarationTools.packageName("int[]".toCharArray()));
TestTools.assertEquals("", TypeDeclarationTools.packageName("int [ ] [ ]".toCharArray()));
TestTools.assertEquals("java.lang", TypeDeclarationTools.packageName("java.lang.Object".toCharArray()));
TestTools.assertEquals("", TypeDeclarationTools.packageName("java.lang.Object\t[]".toCharArray()));
TestTools.assertEquals("", TypeDeclarationTools.packageName("java.lang.Object\t[]\t[]".toCharArray()));
TestTools.assertEquals("", TypeDeclarationTools.packageName("Default".toCharArray()));
TestTools.assertEquals("", TypeDeclarationTools.packageName("Default\t[]".toCharArray()));
TestTools.assertEquals("", TypeDeclarationTools.packageName("Default\t[]\t[]".toCharArray()));
}
public void testLoadClassString() throws Exception {
assertEquals(int.class, TypeDeclarationTools.loadClass("int"));
assertEquals(int[].class, TypeDeclarationTools.loadClass("int[]"));
assertEquals(int[][].class, TypeDeclarationTools.loadClass("int [ ] [ ]"));
assertEquals(java.lang.Object.class, TypeDeclarationTools.loadClass("java.lang.Object"));
assertEquals(java.lang.Object[].class, TypeDeclarationTools.loadClass("java.lang.Object\t[]"));
assertEquals(java.lang.Object[][].class, TypeDeclarationTools.loadClass("java.lang.Object\t[]\t[]"));
}
public void testLoadClassCharArray() throws Exception {
assertEquals(int.class, TypeDeclarationTools.loadClass("int".toCharArray()));
assertEquals(int[].class, TypeDeclarationTools.loadClass("int[]".toCharArray()));
assertEquals(int[][].class, TypeDeclarationTools.loadClass("int [ ] [ ]".toCharArray()));
assertEquals(java.lang.Object.class, TypeDeclarationTools.loadClass("java.lang.Object".toCharArray()));
assertEquals(java.lang.Object[].class, TypeDeclarationTools.loadClass("java.lang.Object\t[]".toCharArray()));
assertEquals(java.lang.Object[][].class, TypeDeclarationTools.loadClass("java.lang.Object\t[]\t[]".toCharArray()));
}
public void testIsJavaLangClassString() {
assertTrue(TypeDeclarationTools.isJavaLangClass("Object"));
assertTrue(TypeDeclarationTools.isJavaLangClass("String"));
assertTrue(TypeDeclarationTools.isJavaLangClass("AutoCloseable"));
assertTrue(TypeDeclarationTools.isJavaLangClass("FunctionalInterface"));
assertFalse(TypeDeclarationTools.isJavaLangClass(""));
assertFalse(TypeDeclarationTools.isJavaLangClass("Collection"));
}
public void testIsJavaLangClassCharArray() {
assertTrue(TypeDeclarationTools.isJavaLangClass("Object".toCharArray()));
assertTrue(TypeDeclarationTools.isJavaLangClass("String".toCharArray()));
assertTrue(TypeDeclarationTools.isJavaLangClass("AutoCloseable".toCharArray()));
assertTrue(TypeDeclarationTools.isJavaLangClass("FunctionalInterface".toCharArray()));
assertFalse(TypeDeclarationTools.isJavaLangClass("".toCharArray()));
assertFalse(TypeDeclarationTools.isJavaLangClass("Collection".toCharArray()));
}
public void testIsJavaLangClass5String() {
assertTrue(TypeDeclarationTools.isJavaLangClass5("Object"));
assertTrue(TypeDeclarationTools.isJavaLangClass5("String"));
assertFalse(TypeDeclarationTools.isJavaLangClass5("AutoCloseable"));
assertFalse(TypeDeclarationTools.isJavaLangClass5("FunctionalInterface"));
assertFalse(TypeDeclarationTools.isJavaLangClass5(""));
assertFalse(TypeDeclarationTools.isJavaLangClass5("Collection"));
}
public void testIsJavaLangClass5CharArray() {
assertTrue(TypeDeclarationTools.isJavaLangClass5("Object".toCharArray()));
assertTrue(TypeDeclarationTools.isJavaLangClass5("String".toCharArray()));
assertFalse(TypeDeclarationTools.isJavaLangClass5("AutoCloseable".toCharArray()));
assertFalse(TypeDeclarationTools.isJavaLangClass5("FunctionalInterface".toCharArray()));
assertFalse(TypeDeclarationTools.isJavaLangClass5("".toCharArray()));
assertFalse(TypeDeclarationTools.isJavaLangClass5("Collection".toCharArray()));
}
public void testIsJavaLangClass6String() {
assertTrue(TypeDeclarationTools.isJavaLangClass6("Object"));
assertTrue(TypeDeclarationTools.isJavaLangClass6("String"));
assertFalse(TypeDeclarationTools.isJavaLangClass6("AutoCloseable"));
assertFalse(TypeDeclarationTools.isJavaLangClass6("FunctionalInterface"));
assertFalse(TypeDeclarationTools.isJavaLangClass6(""));
assertFalse(TypeDeclarationTools.isJavaLangClass6("Collection"));
}
public void testIsJavaLangClass6CharArray() {
assertTrue(TypeDeclarationTools.isJavaLangClass6("Object".toCharArray()));
assertTrue(TypeDeclarationTools.isJavaLangClass6("String".toCharArray()));
assertFalse(TypeDeclarationTools.isJavaLangClass6("AutoCloseable".toCharArray()));
assertFalse(TypeDeclarationTools.isJavaLangClass6("FunctionalInterface".toCharArray()));
assertFalse(TypeDeclarationTools.isJavaLangClass6("".toCharArray()));
assertFalse(TypeDeclarationTools.isJavaLangClass6("Collection".toCharArray()));
}
public void testIsJavaLangClass7String() {
assertTrue(TypeDeclarationTools.isJavaLangClass7("Object"));
assertTrue(TypeDeclarationTools.isJavaLangClass7("String"));
assertTrue(TypeDeclarationTools.isJavaLangClass7("AutoCloseable"));
assertFalse(TypeDeclarationTools.isJavaLangClass7("FunctionalInterface"));
assertFalse(TypeDeclarationTools.isJavaLangClass7(""));
assertFalse(TypeDeclarationTools.isJavaLangClass7("Collection"));
}
public void testIsJavaLangClass7CharArray() {
assertTrue(TypeDeclarationTools.isJavaLangClass7("Object".toCharArray()));
assertTrue(TypeDeclarationTools.isJavaLangClass7("String".toCharArray()));
assertTrue(TypeDeclarationTools.isJavaLangClass7("AutoCloseable".toCharArray()));
assertFalse(TypeDeclarationTools.isJavaLangClass7("FunctionalInterface".toCharArray()));
assertFalse(TypeDeclarationTools.isJavaLangClass7("".toCharArray()));
assertFalse(TypeDeclarationTools.isJavaLangClass7("Collection".toCharArray()));
}
public void testIsJavaLangClass8String() {
assertTrue(TypeDeclarationTools.isJavaLangClass8("Object"));
assertTrue(TypeDeclarationTools.isJavaLangClass8("String"));
assertTrue(TypeDeclarationTools.isJavaLangClass8("AutoCloseable"));
assertTrue(TypeDeclarationTools.isJavaLangClass8("FunctionalInterface"));
assertFalse(TypeDeclarationTools.isJavaLangClass8(""));
assertFalse(TypeDeclarationTools.isJavaLangClass8("Collection"));
}
public void testIsJavaLangClass8CharArray() {
assertTrue(TypeDeclarationTools.isJavaLangClass8("Object".toCharArray()));
assertTrue(TypeDeclarationTools.isJavaLangClass8("String".toCharArray()));
assertTrue(TypeDeclarationTools.isJavaLangClass8("AutoCloseable".toCharArray()));
assertTrue(TypeDeclarationTools.isJavaLangClass8("FunctionalInterface".toCharArray()));
assertFalse(TypeDeclarationTools.isJavaLangClass8("".toCharArray()));
assertFalse(TypeDeclarationTools.isJavaLangClass8("Collection".toCharArray()));
}
public void testIsJavaLangClass11String() {
assertTrue(TypeDeclarationTools.isJavaLangClass11("Object"));
assertTrue(TypeDeclarationTools.isJavaLangClass11("String"));
assertTrue(TypeDeclarationTools.isJavaLangClass11("AutoCloseable"));
assertTrue(TypeDeclarationTools.isJavaLangClass11("FunctionalInterface"));
assertFalse(TypeDeclarationTools.isJavaLangClass11(""));
assertFalse(TypeDeclarationTools.isJavaLangClass11("Collection"));
assertTrue(TypeDeclarationTools.isJavaLangClass11("Module"));
}
public void testIsJavaLangClass11CharArray() {
assertTrue(TypeDeclarationTools.isJavaLangClass11("Object".toCharArray()));
assertTrue(TypeDeclarationTools.isJavaLangClass11("String".toCharArray()));
assertTrue(TypeDeclarationTools.isJavaLangClass11("AutoCloseable".toCharArray()));
assertTrue(TypeDeclarationTools.isJavaLangClass11("FunctionalInterface".toCharArray()));
assertFalse(TypeDeclarationTools.isJavaLangClass11("".toCharArray()));
assertFalse(TypeDeclarationTools.isJavaLangClass11("Collection".toCharArray()));
assertTrue(TypeDeclarationTools.isJavaLangClass11("Module".toCharArray()));
}
public void testJDKVersion() {
assertTrue("update TypeDeclarationTools.JAVA_LANG_CLASS_NAMES for new JDK...",
SystemTools.javaSpecificationVersionIsLessThanOrEqualTo("11"));
}
}