blob: 53833c9aca3c12d2c47ea1ead23eddfb1addcbaf [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
/**
* @author Serguei S.Zapreyev
*/
package java.lang;
/**
* Areas for supposed testing a classes' hierarchy
* and new 1.5 getEnclosingClass, getEnumConstants, isEnum, asSubclass,
* getEnclosingMethod, getEnclosingConstructor, isMemberClass, isLocalClass,
* isAnonymousClass, isSynthetic, getCanonicalName, getSimpleName methods:
* I. member, inner, nested, local, annonymous, proxy, synthetic classes;
* different packages classes;
* casting, naming, IS...ing, GET...ing, enums, ...;
* II. member interfaces;
* III. the same for annotations and annotated;
* IV. the same for enums;
* V. the same for generalized.
**/
import java.lang.annotation.Annotation;
import junit.framework.TestCase;
/*
* Created on April 03, 2006
*
* This ClassHierarchyTest class is used to test the Core API 1.5 Class class
*
*/
/**
* ###############################################################################
* ###############################################################################
* TODO: 1.
* ###############################################################################
* ###############################################################################
*/
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.GenericDeclaration;
@Retention(value=RetentionPolicy.RUNTIME)
@interface i{
abstract String author() default "Zapreyev";
};
@SuppressWarnings(value={"unchecked"}) public class ClassHierarchyTest extends TestCase {
@i public class MC001 {
@i public class MC001_01 {
@i public class MC001_01_01 {
@i public class MC001_01_01_01 {
@i public class MC001_01_01_01_01 {
@i public class MC001_01_01_01_01_01 {
@i public class MC001_01_01_01_01_01_01 {
};
};
};
};
};
};
};
@Retention(value=RetentionPolicy.RUNTIME)
@interface anna{
abstract String author() default "Zapreyev";
};
@i public class MC002<X, Y, Z> {
@i public class MC002_01<X1, Y1, Z1> {
@i public class MC002_01_01<X2, Y2, Z2> {
@i public class MC002_01_01_01<X3, Y3, Z3> {
@i public class MC002_01_01_01_01<X4, Y4, Z4> {
@i public class MC002_01_01_01_01_01<X5, Y5, Z5> {
@i public class MC002_01_01_01_01_01_01<X6, Y6, Z6> {
};
};
};
};
};
};
};
@Retention(value=RetentionPolicy.RUNTIME)
@interface ii{
abstract String author() default "Zapreyev";
@Retention(value=RetentionPolicy.RUNTIME)
@interface iii{
abstract String author() default "Zapreyev";
};
};
@i interface MI001 {
@i interface MI001_01 {
@i interface MI001_01_01 {
@i interface MI001_01_01_01 {
@i interface MI001_01_01_01_01 {
@i interface MI001_01_01_01_01_01 {
@i interface MI001_01_01_01_01_01_01 {
@Retention(value=RetentionPolicy.RUNTIME)
@interface iiii{
abstract String author() default "Zapreyev";
};
};
};
};
};
};
};
};
@i interface MI002<X, Y, Z> {
@i interface MI002_01<X1, Y1, Z1> {
@i interface MI002_01_01<X2, Y2, Z2> {
@i interface MI002_01_01_01<X3, Y3, Z3> {
@i interface MI002_01_01_01_01<X4, Y4, Z4> {
@i interface MI002_01_01_01_01_01<X5, Y5, Z5> {
@i interface MI002_01_01_01_01_01_01<X6, Y6, Z6> {
@Retention(value=RetentionPolicy.RUNTIME)
@interface iiii{
abstract String author() default "Zapreyev";
};
};
};
};
};
};
};
};
@Retention(value=RetentionPolicy.RUNTIME)
@interface MA001 {
@Retention(value=RetentionPolicy.RUNTIME)
@interface MA001_01 {
@Retention(value=RetentionPolicy.RUNTIME)
@interface MA001_01_01 {
@Retention(value=RetentionPolicy.RUNTIME)
@interface MA001_01_01_01 {
@Retention(value=RetentionPolicy.RUNTIME)
@interface MA001_01_01_01_01 {
@Retention(value=RetentionPolicy.RUNTIME)
@interface MA001_01_01_01_01_01 {
@Retention(value=RetentionPolicy.RUNTIME)
@interface MA001_01_01_01_01_01_01 {
@Retention(value=RetentionPolicy.RUNTIME)
@interface iiii{
abstract String author() default "Zapreyev 1";
};
abstract String author() default "Zapreyev 2";
};
abstract String author() default "Zapreyev 3";
};
abstract String author() default "Zapreyev 4";
};
abstract String author() default "Zapreyev 5";
};
abstract String author() default "Zapreyev 6";
};
abstract String author() default "Zapreyev 7";
};
abstract String author() default "Zapreyev 8";
};
//===================================================================================================
//===================================================================================================
//===================================================================================================
///////////////////////// I:
/**
* member classes
*/
public void test_1() {
if(!MC001.class.getEnclosingClass().equals(ClassHierarchyTest.class)) fail("test_1, case 004 FAILED: "+MC001.class.getEnclosingClass());
if(MC001.class.getEnumConstants()!=null) fail("test_1, case 009 FAILED: "+MC001.class.getEnumConstants());
if(MC001.class.isEnum()) fail("test_1, case 000 FAILED: "+MC001.class.isEnum());
try{MC001.class.asSubclass(ClassHierarchyTest.class); fail("test_1, case 011 FAILED: "+MC001.class.asSubclass(ClassHierarchyTest.class));}catch(Exception e){/*e.printStackTrace();*/}
if(MC001.class.getEnclosingMethod()!=null) fail("test_1, case 013 FAILED: "+MC001.class.getEnclosingMethod());
if(MC001.class.getEnclosingConstructor()!=null) fail("test_1, case 014 FAILED: "+MC001.class.getEnclosingConstructor());
if(!MC001.class.isMemberClass()) fail("test_1, case 017 FAILED: "+MC001.class.isMemberClass());
if(MC001.class.isLocalClass()) fail("test_1, case 018 FAILED: "+MC001.class.isLocalClass());
if(MC001.class.isAnonymousClass()) fail("test_1, case 019 FAILED: "+MC001.class.isAnonymousClass());
if(MC001.class.isSynthetic()) fail("test_1, case 020 FAILED: "+MC001.class.isSynthetic());
if(!MC001.class.getCanonicalName().equals("java.lang.ClassHierarchyTest.MC001")) fail("test_1, case 021 FAILED: "+MC001.class.getCanonicalName());
if(!MC001.class.getSimpleName().equals("MC001")) fail("test_1, case 022 FAILED: "+MC001.class.getSimpleName());
}
/**
* member interface
*/
public void test_1_1() {
if(!MI001.class.getEnclosingClass().equals(ClassHierarchyTest.class)) fail("test_1, case 004 FAILED: "+MI001.class.getEnclosingClass());
if(MI001.class.getEnumConstants()!=null) fail("test_1, case 009 FAILED: "+MI001.class.getEnumConstants());
if(MI001.class.isEnum()) fail("test_1, case 000 FAILED: "+MI001.class.isEnum());
try{MI001.class.asSubclass(ClassHierarchyTest.class); fail("test_1, case 011 FAILED: "+MI001.class.asSubclass(ClassHierarchyTest.class));}catch(Exception e){/*e.printStackTrace();*/}
if(MI001.class.getEnclosingMethod()!=null) fail("test_1, case 013 FAILED: "+MI001.class.getEnclosingMethod());
if(MI001.class.getEnclosingConstructor()!=null) fail("test_1, case 014 FAILED: "+MI001.class.getEnclosingConstructor());
if(!MI001.class.isMemberClass()) fail("test_1, case 017 FAILED: "+MI001.class.isMemberClass());
if(MI001.class.isLocalClass()) fail("test_1, case 018 FAILED: "+MI001.class.isLocalClass());
if(MI001.class.isAnonymousClass()) fail("test_1, case 019 FAILED: "+MI001.class.isAnonymousClass());
if(MI001.class.isSynthetic()) fail("test_1, case 020 FAILED: "+MI001.class.isSynthetic());
if(!MI001.class.getCanonicalName().equals("java.lang.ClassHierarchyTest.MI001")) fail("test_1, case 021 FAILED: "+MI001.class.getCanonicalName());
if(!MI001.class.getSimpleName().equals("MI001")) fail("test_1, case 022 FAILED: "+MI001.class.getSimpleName());
}
/**
* deeply nested member classes
*/
public void test_2() {
Class cuCla = MC001.MC001_01.MC001_01_01.MC001_01_01_01.MC001_01_01_01_01.MC001_01_01_01_01_01.MC001_01_01_01_01_01_01.class;
String caNa = cuCla.getCanonicalName();
//String name[] = caNa.split("\\$");
String name[] = caNa.split("\\.");
int i = name.length - 1;
while (cuCla != null) {
if(cuCla.getEnclosingClass() != null && cuCla.getEnclosingClass().getSimpleName().equals(name[i])) fail("test_2, case 002 FAILED: "+cuCla.getEnclosingClass().getSimpleName());
if(cuCla.getEnumConstants()!=null) fail("test_2, case 009 FAILED: "+cuCla.getEnumConstants());
if(cuCla.isEnum()) fail("test_2, case 000 FAILED: "+cuCla.isEnum());
try{cuCla.asSubclass( cuCla.getEnclosingClass() != null ? cuCla.getEnclosingClass() : cuCla ); if(!cuCla.getCanonicalName().equals("java.lang.ClassHierarchyTest")) fail("test_2, case 011 FAILED: "+ cuCla.asSubclass( cuCla.getEnclosingClass() != null ? cuCla.getEnclosingClass() : cuCla ));}catch(Exception e){/*e.printStackTrace();*/}
if(cuCla.getEnclosingMethod()!=null) fail("test_2, case 013 FAILED: "+cuCla.getEnclosingMethod());
if(cuCla.getEnclosingConstructor()!=null) fail("test_2, case 014 FAILED: "+cuCla.getEnclosingConstructor());
if(cuCla.getEnclosingClass() != null && !cuCla.isMemberClass()) fail("test_1, case 017 FAILED: "+cuCla.isMemberClass());
if(cuCla.isLocalClass()) fail("test_2, case 018 FAILED: "+cuCla.isLocalClass());
if(cuCla.isAnonymousClass()) fail("test_2, case 019 FAILED: "+cuCla.isAnonymousClass());
if(cuCla.isSynthetic()) fail("test_2, case 020 FAILED: "+cuCla.isSynthetic());
if(!cuCla.getCanonicalName().equals(caNa)) fail("test_2, case 021 FAILED: "+cuCla.getCanonicalName());
caNa = caNa.substring(0, caNa.lastIndexOf('.'));
if(!cuCla.getSimpleName().equals(name[i])) fail("test_2, case 022 FAILED: "+cuCla.getSimpleName());
i--;
cuCla = cuCla.getEnclosingClass();
}
}
/**
* deeply nested member interfaces
*/
public void test_2_1() {
Class cuCla = MI001.MI001_01.MI001_01_01.MI001_01_01_01.MI001_01_01_01_01.MI001_01_01_01_01_01.MI001_01_01_01_01_01_01.class;
String caNa = cuCla.getCanonicalName();
//String name[] = caNa.split("\\$");
String name[] = caNa.split("\\.");
int i = name.length - 1;
while (cuCla != null) {
if(cuCla.getEnclosingClass() != null && cuCla.getEnclosingClass().getSimpleName().equals(name[i])) fail("test_2, case 002 FAILED: "+cuCla.getEnclosingClass().getSimpleName());
if(cuCla.getEnumConstants()!=null) fail("test_2, case 009 FAILED: "+cuCla.getEnumConstants());
if(cuCla.isEnum()) fail("test_2, case 000 FAILED: "+cuCla.isEnum());
try{cuCla.asSubclass( cuCla.getEnclosingClass() != null ? cuCla.getEnclosingClass() : cuCla ); if(!cuCla.getCanonicalName().equals("java.lang.ClassHierarchyTest")) fail("test_2, case 011 FAILED: "+ cuCla.asSubclass( cuCla.getEnclosingClass() != null ? cuCla.getEnclosingClass() : cuCla ));}catch(Exception e){/*e.printStackTrace();*/}
if(cuCla.getEnclosingMethod()!=null) fail("test_2, case 013 FAILED: "+cuCla.getEnclosingMethod());
if(cuCla.getEnclosingConstructor()!=null) fail("test_2, case 014 FAILED: "+cuCla.getEnclosingConstructor());
if(cuCla.getEnclosingClass() != null && !cuCla.isMemberClass()) fail("test_1, case 017 FAILED: "+cuCla.isMemberClass());
if(cuCla.isLocalClass()) fail("test_2, case 018 FAILED: "+cuCla.isLocalClass());
if(cuCla.isAnonymousClass()) fail("test_2, case 019 FAILED: "+cuCla.isAnonymousClass());
if(cuCla.isSynthetic()) fail("test_2, case 020 FAILED: "+cuCla.isSynthetic());
if(!cuCla.getCanonicalName().equals(caNa)) fail("test_2, case 021 FAILED: "+cuCla.getCanonicalName());
caNa = caNa.substring(0, caNa.lastIndexOf('.'));
if(!cuCla.getSimpleName().equals(name[i])) fail("test_2, case 022 FAILED: "+cuCla.getSimpleName());
i--;
cuCla = cuCla.getEnclosingClass();
}
}
/**
* unnested local class
*/
public void test_3() {
@i class LC001 {};
if(!LC001.class.getEnclosingClass().equals(ClassHierarchyTest.class)) fail("test_3, case 004 FAILED: "+LC001.class.getEnclosingClass());
if(LC001.class.getEnumConstants()!=null) fail("test_3, case 009 FAILED: "+LC001.class.getEnumConstants());
if(LC001.class.isEnum()) fail("test_3, case 000 FAILED: "+LC001.class.isEnum());
try{LC001.class.asSubclass(ClassHierarchyTest.class); fail("test_3, case 011 FAILED: "+LC001.class.asSubclass(ClassHierarchyTest.class));}catch(Exception e){/*e.printStackTrace();*/}
if(!LC001.class.getEnclosingMethod().getName().equals("test_3")) fail("test_3, case 013 FAILED: "+LC001.class.getEnclosingMethod().getName());
if(LC001.class.getEnclosingConstructor()!=null) fail("test_3, case 014 FAILED: "+LC001.class.getEnclosingConstructor());
if(LC001.class.isMemberClass()) fail("test_3, case 017 FAILED: "+LC001.class.isMemberClass());
if(!LC001.class.isLocalClass()) fail("test_3, case 018 FAILED: "+LC001.class.isLocalClass());
if(LC001.class.isAnonymousClass()) fail("test_3, case 019 FAILED: "+LC001.class.isAnonymousClass());
if(LC001.class.isSynthetic()) fail("test_3, case 020 FAILED: "+LC001.class.isSynthetic());
if(LC001.class.getCanonicalName()!=null) fail("test_3, case 021 FAILED: "+LC001.class.getCanonicalName());
if(!LC001.class.getSimpleName().equals("LC001")) fail("test_3, case 022 FAILED: "+LC001.class.getSimpleName());
}
/**
* local ClassHierarchyTest$1$LC003$1A.class (1)
* anonymous ClassHierarchyTest$1$LC003$1.class (2)
* member of anonymous ClassHierarchyTest$1$LC003$1$A.class (3)
* local ClassHierarchyTest$1$LC003$1AAA.class (4)
*/
static int f = 0;
static Object ooo = null;
public void test_4() { // now it is a class access control bug, so, closed for a while
// It's strange that if we use javac instead of ecj
// then we have no such problem
// <<< A member of the "class java.lang.ClassHierarchyTest$1" with "" modifiers can not be accessed from the "class java.lang.ClassHierarchyTest">>>
// so it should be investigated.
@i
class LC002 {
}
;
class $LC003 {
public Class value() {
class A extends $LC003 { // (1)
}
;
Object o = new LC002() { // (2)
class A { // (3)
}
Class m1() {
return A.class;
}
Class m2() {
return m3() == null? m1():m3();
}
Class m3() {
return m2();
}
};
ooo = o;
if (f < 1) {
f += 1;
return A.class;
}
f += 1;
return o.getClass();
}
public Class value2() {
class AAA { // (4)
}
;
return AAA.class;
}
}
class X$1Y {
}
class X {
Class m2() {
class Y { // it has "X$2Y" name!!! So, compiler provides the
// difference with the previous "X$1Y"
}
return Y.class;
}
Class m4() {
return m5() == null? m2():m5();
}
Class m5() {
return m4();
}
}
Class cuCla = new $LC003().value(); // ClassHierarchyTest$1$LC003$1A.class (1)
if(!cuCla.getEnclosingClass().equals($LC003.class)) fail("test_4, case 004 FAILED: "+cuCla.getEnclosingClass());
if(cuCla.getEnumConstants()!=null) fail("test_4, case 009 FAILED: "+cuCla.getEnumConstants());
if(cuCla.isEnum()) fail("test_4, case 000 FAILED: "+cuCla.isEnum());
try{cuCla.asSubclass(ClassHierarchyTest.class); fail("test_4, case 011 FAILED: "+cuCla.asSubclass(ClassHierarchyTest.class));}catch(Exception e){/*e.printStackTrace();*/}
if(!cuCla.getEnclosingMethod().getName().equals("value")) fail("test_4, case 013 FAILED: "+cuCla.getEnclosingMethod().getName());
if(cuCla.getEnclosingConstructor()!=null) fail("test_4, case 014 FAILED: "+cuCla.getEnclosingConstructor());
if(cuCla.isMemberClass()) fail("test_4, case 017 FAILED: "+cuCla.isMemberClass());
if(!cuCla.isLocalClass()) fail("test_4, case 018 FAILED: "+cuCla.isLocalClass());
if(cuCla.isAnonymousClass()) fail("test_4, case 019 FAILED: "+cuCla.isAnonymousClass());
if(cuCla.isSynthetic()) fail("test_4, case 020 FAILED: "+cuCla.isSynthetic());
if(cuCla.getCanonicalName()!=null) fail("test_4, case 021 FAILED: "+cuCla.getCanonicalName());
if(!cuCla.getSimpleName().equals("A")) fail("test_4, case 022 FAILED: "+cuCla.getSimpleName());
cuCla = new $LC003().value(); // ClassHierarchyTest$1$LC003$1.class (2)
if(!cuCla.getEnclosingClass().equals($LC003.class)) fail("test_4, case 023 FAILED: "+cuCla.getEnclosingClass());
if(cuCla.getEnumConstants()!=null) fail("test_4, case 024 FAILED: "+cuCla.getEnumConstants());
if(cuCla.isEnum()) fail("test_4, case 025 FAILED: "+cuCla.isEnum());
try{cuCla.asSubclass(ClassHierarchyTest.class); fail("test_4, case 026 FAILED: "+cuCla.asSubclass(ClassHierarchyTest.class));}catch(Exception e){/*e.printStackTrace();*/}
if(!cuCla.getEnclosingMethod().getName().equals("value")) fail("test_4, case 027 FAILED: "+cuCla.getEnclosingMethod().getName());
if(cuCla.getEnclosingConstructor()!=null) fail("test_4, case 028 FAILED: "+cuCla.getEnclosingConstructor());
if(cuCla.isMemberClass()) fail("test_4, case 029 FAILED: "+cuCla.isMemberClass());
if(cuCla.isLocalClass()) fail("test_4, case 030 FAILED: "+cuCla.isLocalClass());
if(!cuCla.isAnonymousClass()) fail("test_4, case 031 FAILED: "+cuCla.isAnonymousClass());
if(cuCla.isSynthetic()) fail("test_4, case 032 FAILED: "+cuCla.isSynthetic());
if(cuCla.getCanonicalName()!=null) fail("test_4, case 033 FAILED: "+cuCla.getCanonicalName());
if(!cuCla.getSimpleName().equals("")) fail("test_4, case 034 FAILED: "+cuCla.getSimpleName());
cuCla = new $LC003().value2(); // ClassHierarchyTest$1$LC003$1AAA.class (4)
if(!cuCla.getEnclosingClass().equals($LC003.class)) fail("test_4, case 035 FAILED: "+cuCla.getEnclosingClass());
if(cuCla.getEnumConstants()!=null) fail("test_4, case 036 FAILED: "+cuCla.getEnumConstants());
if(cuCla.isEnum()) fail("test_4, case 037 FAILED: "+cuCla.isEnum());
try{cuCla.asSubclass(ClassHierarchyTest.class); fail("test_4, case 038 FAILED: "+cuCla.asSubclass(ClassHierarchyTest.class));}catch(Exception e){/*e.printStackTrace();*/}
if(!cuCla.getEnclosingMethod().getName().equals("value2")) fail("test_4, case 039 FAILED: "+cuCla.getEnclosingMethod().getName());
if(cuCla.getEnclosingConstructor()!=null) fail("test_4, case 040 FAILED: "+cuCla.getEnclosingConstructor());
if(cuCla.isMemberClass()) fail("test_4, case 041 FAILED: "+cuCla.isMemberClass());
if(!cuCla.isLocalClass()) fail("test_4, case 042 FAILED: "+cuCla.isLocalClass());
if(cuCla.isAnonymousClass()) fail("test_4, case 043 FAILED: "+cuCla.isAnonymousClass());
if(cuCla.isSynthetic()) fail("test_4, case 044 FAILED: "+cuCla.isSynthetic());
if(cuCla.getCanonicalName()!=null) fail("test_4, case 045 FAILED: "+cuCla.getCanonicalName());
if(!cuCla.getSimpleName().equals("AAA")) fail("test_4, case 046 FAILED: "+cuCla.getSimpleName());
try {
cuCla = (Class) new $LC003().value().getDeclaredMethod("m1").invoke(ooo, (Object[])null); // ClassHierarchyTest$1$LC003$1$A.class (3)
Class tc = Class.forName("java.lang.ClassHierarchyTest$1$LC003$1");
if(!cuCla.getEnclosingClass().equals(tc)) fail("test_4, case 047 FAILED: "+cuCla.getEnclosingClass());
if(cuCla.getEnumConstants()!=null) fail("test_4, case 048 FAILED: "+cuCla.getEnumConstants());
if(cuCla.isEnum()) fail("test_4, case 049 FAILED: "+cuCla.isEnum());
try{cuCla.asSubclass(ClassHierarchyTest.class); fail("test_4, case 050 FAILED: "+cuCla.asSubclass(ClassHierarchyTest.class));}catch(Exception e){/*e.printStackTrace();*/}
if(cuCla.getEnclosingMethod()!=null) fail("test_4, case 051 FAILED: "+cuCla.getEnclosingMethod());
if(cuCla.getEnclosingConstructor()!=null) fail("test_4, case 052 FAILED: "+cuCla.getEnclosingConstructor());
if(!cuCla.isMemberClass()) fail("test_4, case 053 FAILED: "+cuCla.isMemberClass());
if(cuCla.isLocalClass()) fail("test_4, case 054 FAILED: "+cuCla.isLocalClass());
if(cuCla.isAnonymousClass()) fail("test_4, case 055 FAILED: "+cuCla.isAnonymousClass());
if(cuCla.isSynthetic()) fail("test_4, case 056 FAILED: "+cuCla.isSynthetic());
if(cuCla.getCanonicalName()!=null) fail("test_4, case 057 FAILED: "+cuCla.getCanonicalName());
if(!cuCla.getSimpleName().equals("A")) fail("test_4, case 058 FAILED: "+cuCla.getSimpleName());
} catch(ClassNotFoundException e) {
fail(e.getMessage());
} catch(IllegalAccessException e) {
fail(e.getMessage());
} catch(IllegalArgumentException e) {
fail(e.getMessage());
} catch(java.lang.reflect.InvocationTargetException e) {
fail(e.getMessage());
} catch(NoSuchMethodException e) {
fail(e.getMessage());
}
cuCla = X$1Y.class; // ClassHierarchyTest$1X$1Y.class (3)
if(!cuCla.getEnclosingClass().equals(ClassHierarchyTest.class)) fail("test_4, case 059 FAILED: "+cuCla.getEnclosingClass());
if(cuCla.getEnumConstants()!=null) fail("test_4, case 060 FAILED: "+cuCla.getEnumConstants());
if(cuCla.isEnum()) fail("test_4, case 061 FAILED: "+cuCla.isEnum());
try{cuCla.asSubclass(ClassHierarchyTest.class); fail("test_4, case 062 FAILED: "+cuCla.asSubclass(ClassHierarchyTest.class));}catch(Exception e){/*e.printStackTrace();*/}
if(!cuCla.getEnclosingMethod().getName().equals("test_4")) fail("test_4, case 063 FAILED: "+cuCla.getEnclosingMethod().getName());
if(cuCla.getEnclosingConstructor()!=null) fail("test_4, case 064 FAILED: "+cuCla.getEnclosingConstructor());
if(cuCla.isMemberClass()) fail("test_4, case 065 FAILED: "+cuCla.isMemberClass());
if(!cuCla.isLocalClass()) fail("test_4, case 066 FAILED: "+cuCla.isLocalClass());
if(cuCla.isAnonymousClass()) fail("test_4, case 067 FAILED: "+cuCla.isAnonymousClass());
if(cuCla.isSynthetic()) fail("test_4, case 068 FAILED: "+cuCla.isSynthetic());
if(cuCla.getCanonicalName()!=null) fail("test_4, case 069 FAILED: "+cuCla.getCanonicalName());
if(!cuCla.getSimpleName().equals("X$1Y")) fail("test_4, case 070 FAILED: "+cuCla.getSimpleName());
try {
cuCla = (Class) X.class.getDeclaredMethod("m2").invoke(new X(), (Object[])null); // ClassHierarchyTest$1$LC003$1$A.class (3)
if(!cuCla.getEnclosingClass().equals(X.class)) fail("test_4, case 071 FAILED: "+cuCla.getEnclosingClass());
if(cuCla.getEnumConstants()!=null) fail("test_4, case 072 FAILED: "+cuCla.getEnumConstants());
if(cuCla.isEnum()) fail("test_4, case 073 FAILED: "+cuCla.isEnum());
try{cuCla.asSubclass(ClassHierarchyTest.class); fail("test_4, case 074 FAILED: "+cuCla.asSubclass(ClassHierarchyTest.class));}catch(Exception e){/*e.printStackTrace();*/}
if(!cuCla.getEnclosingMethod().getName().equals("m2")) fail("test_4, case 075 FAILED: "+cuCla.getEnclosingMethod().getName());
if(cuCla.getEnclosingConstructor()!=null) fail("test_4, case 076 FAILED: "+cuCla.getEnclosingConstructor());
if(cuCla.isMemberClass()) fail("test_4, case 077 FAILED: "+cuCla.isMemberClass());
if(!cuCla.isLocalClass()) fail("test_4, case 078 FAILED: "+cuCla.isLocalClass());
if(cuCla.isAnonymousClass()) fail("test_4, case 079 FAILED: "+cuCla.isAnonymousClass());
if(cuCla.isSynthetic()) fail("test_4, case 080 FAILED: "+cuCla.isSynthetic());
if(cuCla.getCanonicalName()!=null) fail("test_4, case 081 FAILED: "+cuCla.getCanonicalName());
if(!cuCla.getSimpleName().equals("Y")) fail("test_4, case 082 FAILED: "+cuCla.getSimpleName());
} catch(IllegalAccessException e) {
fail(e.getMessage());
} catch(IllegalArgumentException e) {
fail(e.getMessage());
} catch(java.lang.reflect.InvocationTargetException e) {
fail(e.getMessage());
} catch(NoSuchMethodException e) {
fail(e.getMessage());
}
}
/**
* Constructor's local class
*/
public void test_4_1() {
@i class LC001 {
public Class c;
public LC001() {
@i class LC001_01 {
}
c = LC001_01.class;
}
};
LC001 lc = new LC001();
if(!lc.c.getEnclosingClass().getName().equals("java.lang.ClassHierarchyTest$2LC001")) fail("test_3, case 004 FAILED: "+lc.c.getEnclosingClass().getName());
if(lc.c.getEnumConstants()!=null) fail("test_3, case 009 FAILED: "+lc.c.getEnumConstants());
if(lc.c.isEnum()) fail("test_3, case 000 FAILED: "+lc.c.isEnum());
try{lc.c.asSubclass(ClassHierarchyTest.class); fail("test_3, case 011 FAILED: "+lc.c.asSubclass(ClassHierarchyTest.class));}catch(Exception e){/*e.printStackTrace();*/}
if(lc.c.getEnclosingMethod()!=null) fail("test_3, case 013 FAILED: "+lc.c.getEnclosingMethod().getName());
if(!lc.c.getEnclosingConstructor().getName().equals("java.lang.ClassHierarchyTest$2LC001")) fail("test_3, case 014 FAILED: "+lc.c.getEnclosingConstructor());
if(lc.c.isMemberClass()) fail("test_3, case 017 FAILED: "+lc.c.isMemberClass());
if(!lc.c.isLocalClass()) fail("test_3, case 018 FAILED: "+lc.c.isLocalClass());
if(lc.c.isAnonymousClass()) fail("test_3, case 019 FAILED: "+lc.c.isAnonymousClass());
if(lc.c.isSynthetic()) fail("test_3, case 020 FAILED: "+lc.c.isSynthetic());
if(lc.c.getCanonicalName()!=null) fail("test_3, case 021 FAILED: "+lc.c.getCanonicalName());
if(!lc.c.getSimpleName().equals("LC001_01")) fail("test_3, case 022 FAILED: "+lc.c.getSimpleName());
}
/**
* proxy class
*/
public void test_5() {
class LIH implements java.lang.reflect.InvocationHandler {
public Object invoke(Object proxy, java.lang.reflect.Method method, Object[] args) throws Throwable
{
return null;
}
}
Class cuCla = java.lang.reflect.Proxy.newProxyInstance(java.io.Serializable.class.getClassLoader(),
new Class[] { java.io.Serializable.class },
new LIH()).getClass();
if(cuCla.getEnclosingClass()!=null) fail("test_5, case 004 FAILED: "+cuCla.getEnclosingClass());
if(cuCla.getEnumConstants()!=null) fail("test_5, case 009 FAILED: "+cuCla.getEnumConstants());
if(cuCla.isEnum()) fail("test_5, case 000 FAILED: "+cuCla.isEnum());
try{cuCla.asSubclass(ClassHierarchyTest.class); fail("test_5, case 011 FAILED: "+cuCla.asSubclass(ClassHierarchyTest.class));}catch(Exception e){/*e.printStackTrace();*/}
if(cuCla.getEnclosingMethod()!=null) fail("test_5, case 013 FAILED: "+cuCla.getEnclosingMethod());
if(cuCla.getEnclosingConstructor()!=null) fail("test_5, case 014 FAILED: "+cuCla.getEnclosingConstructor());
if(cuCla.isMemberClass()) fail("test_5, case 017 FAILED: "+cuCla.isMemberClass());
if(cuCla.isLocalClass()) fail("test_5, case 018 FAILED: "+cuCla.isLocalClass());
if(cuCla.isAnonymousClass()) fail("test_5, case 019 FAILED: "+cuCla.isAnonymousClass());
if(cuCla.isSynthetic()) fail("test_5, case 020 FAILED: "+cuCla.isSynthetic());
if(!cuCla.getCanonicalName().replaceFirst("\\$Proxy", "").matches("\\d+")) fail("test_5, case 021 FAILED: "+cuCla.getCanonicalName());
if(!cuCla.getSimpleName().replaceFirst("\\$Proxy", "").matches("\\d+")) fail("test_5, case 022 FAILED: "+cuCla.getSimpleName());
}
///////////////////////// II:
/**
* member interfaces
*/
public void test_6() {
if(!MI001.class.getEnclosingClass().equals(ClassHierarchyTest.class)) fail("test_1, case 004 FAILED: "+MI001.class.getEnclosingClass());
if(MI001.class.getEnumConstants()!=null) fail("test_1, case 009 FAILED: "+MI001.class.getEnumConstants());
if(MI001.class.isEnum()) fail("test_1, case 000 FAILED: "+MI001.class.isEnum());
try{MI001.class.asSubclass(ClassHierarchyTest.class); fail("test_1, case 011 FAILED: "+MI001.class.asSubclass(ClassHierarchyTest.class));}catch(Exception e){/*e.printStackTrace();*/}
if(MI001.class.getEnclosingMethod()!=null) fail("test_1, case 013 FAILED: "+MI001.class.getEnclosingMethod());
if(MI001.class.getEnclosingConstructor()!=null) fail("test_1, case 014 FAILED: "+MI001.class.getEnclosingConstructor());
if(!MI001.class.isMemberClass()) fail("test_1, case 017 FAILED: "+MI001.class.isMemberClass());
if(MI001.class.isLocalClass()) fail("test_1, case 018 FAILED: "+MI001.class.isLocalClass());
if(MI001.class.isAnonymousClass()) fail("test_1, case 019 FAILED: "+MI001.class.isAnonymousClass());
if(MI001.class.isSynthetic()) fail("test_1, case 020 FAILED: "+MI001.class.isSynthetic());
if(!MI001.class.getCanonicalName().equals("java.lang.ClassHierarchyTest.MI001")) fail("test_1, case 021 FAILED: "+MI001.class.getCanonicalName());
if(!MI001.class.getSimpleName().equals("MI001")) fail("test_1, case 022 FAILED: "+MI001.class.getSimpleName());
}
/**
* deeply nested member interfaces
*/
public void test_7() {
Class cuCla = MI001.MI001_01.MI001_01_01.MI001_01_01_01.MI001_01_01_01_01.MI001_01_01_01_01_01.MI001_01_01_01_01_01_01.class;
String caNa = cuCla.getCanonicalName();
//String name[] = caNa.split("\\$");
String name[] = caNa.split("\\.");
int i = name.length - 1;
while (cuCla != null) {
if(cuCla.getEnclosingClass() != null && cuCla.getEnclosingClass().getSimpleName().equals(name[i])) fail("test_2, case 002 FAILED: "+cuCla.getEnclosingClass().getSimpleName());
if(cuCla.getEnumConstants()!=null) fail("test_2, case 009 FAILED: "+cuCla.getEnumConstants());
if(cuCla.isEnum()) fail("test_2, case 000 FAILED: "+cuCla.isEnum());
try{cuCla.asSubclass( cuCla.getEnclosingClass() != null ? cuCla.getEnclosingClass() : cuCla ); if(!cuCla.getCanonicalName().equals("java.lang.ClassHierarchyTest")) fail("test_2, case 011 FAILED: "+ cuCla.asSubclass( cuCla.getEnclosingClass() != null ? cuCla.getEnclosingClass() : cuCla ));}catch(Exception e){/*e.printStackTrace();*/}
if(cuCla.getEnclosingMethod()!=null) fail("test_2, case 013 FAILED: "+cuCla.getEnclosingMethod());
if(cuCla.getEnclosingConstructor()!=null) fail("test_2, case 014 FAILED: "+cuCla.getEnclosingConstructor());
if(cuCla.getEnclosingClass() != null && !cuCla.isMemberClass()) fail("test_1, case 017 FAILED: "+cuCla.isMemberClass());
if(cuCla.isLocalClass()) fail("test_2, case 018 FAILED: "+cuCla.isLocalClass());
if(cuCla.isAnonymousClass()) fail("test_2, case 019 FAILED: "+cuCla.isAnonymousClass());
if(cuCla.isSynthetic()) fail("test_2, case 020 FAILED: "+cuCla.isSynthetic());
if(!cuCla.getCanonicalName().equals(caNa)) fail("test_2, case 021 FAILED: "+cuCla.getCanonicalName());
caNa = caNa.substring(0, caNa.lastIndexOf('.'));
if(!cuCla.getSimpleName().equals(name[i])) fail("test_2, case 022 FAILED: "+cuCla.getSimpleName());
i--;
cuCla = cuCla.getEnclosingClass();
}
}
///////////////////////// III:
/**
* member annotations as interfaces
*/
@MA001 @MA001.MA001_01 @MA001.MA001_01.MA001_01_01 @MA001.MA001_01.MA001_01_01.MA001_01_01_01 @MA001.MA001_01.MA001_01_01.MA001_01_01_01.MA001_01_01_01_01 @MA001.MA001_01.MA001_01_01.MA001_01_01_01.MA001_01_01_01_01.MA001_01_01_01_01_01 @MA001.MA001_01.MA001_01_01.MA001_01_01_01.MA001_01_01_01_01.MA001_01_01_01_01_01.MA001_01_01_01_01_01_01 @MA001.MA001_01.MA001_01_01.MA001_01_01_01.MA001_01_01_01_01.MA001_01_01_01_01_01.MA001_01_01_01_01_01_01.iiii public void test_8() {
Class cuCla = MA001.MA001_01.MA001_01_01.MA001_01_01_01.MA001_01_01_01_01.MA001_01_01_01_01_01.MA001_01_01_01_01_01_01.class;
String caNa = cuCla.getCanonicalName();
//String name[] = caNa.split("\\$");
String name[] = caNa.split("\\.");
int i = name.length - 1;
while (cuCla != null) {
if(cuCla.getEnclosingClass() != null && cuCla.getEnclosingClass().getSimpleName().equals(name[i])) fail("test_2, case 002 FAILED: "+cuCla.getEnclosingClass().getSimpleName());
if(cuCla.getEnumConstants()!=null) fail("test_2, case 009 FAILED: "+cuCla.getEnumConstants());
if(cuCla.isEnum()) fail("test_2, case 000 FAILED: "+cuCla.isEnum());
try{cuCla.asSubclass( cuCla.getEnclosingClass() != null ? cuCla.getEnclosingClass() : cuCla ); if(!cuCla.getCanonicalName().equals("java.lang.ClassHierarchyTest")) fail("test_2, case 011 FAILED: "+ cuCla.asSubclass( cuCla.getEnclosingClass() != null ? cuCla.getEnclosingClass() : cuCla ));}catch(Exception e){/*e.printStackTrace();*/}
if(cuCla.getEnclosingMethod()!=null) fail("test_2, case 013 FAILED: "+cuCla.getEnclosingMethod());
if(cuCla.getEnclosingConstructor()!=null) fail("test_2, case 014 FAILED: "+cuCla.getEnclosingConstructor());
if(cuCla.getEnclosingClass() != null && !cuCla.isMemberClass()) fail("test_1, case 017 FAILED: "+cuCla.isMemberClass());
if(cuCla.isLocalClass()) fail("test_2, case 018 FAILED: "+cuCla.isLocalClass());
if(cuCla.isAnonymousClass()) fail("test_2, case 019 FAILED: "+cuCla.isAnonymousClass());
if(cuCla.isSynthetic()) fail("test_2, case 020 FAILED: "+cuCla.isSynthetic());
if(!cuCla.getCanonicalName().equals(caNa)) fail("test_2, case 021 FAILED: "+cuCla.getCanonicalName());
caNa = caNa.substring(0, caNa.lastIndexOf('.'));
if(!cuCla.getSimpleName().equals(name[i])) fail("test_2, case 022 FAILED: "+cuCla.getSimpleName());
i--;
cuCla = cuCla.getEnclosingClass();
}
}
/**
* member annotations as annotations
*/
@MA001 @MA001.MA001_01 @MA001.MA001_01.MA001_01_01 @MA001.MA001_01.MA001_01_01.MA001_01_01_01 @MA001.MA001_01.MA001_01_01.MA001_01_01_01.MA001_01_01_01_01 @MA001.MA001_01.MA001_01_01.MA001_01_01_01.MA001_01_01_01_01.MA001_01_01_01_01_01 @MA001.MA001_01.MA001_01_01.MA001_01_01_01.MA001_01_01_01_01.MA001_01_01_01_01_01.MA001_01_01_01_01_01_01 @MA001.MA001_01.MA001_01_01.MA001_01_01_01.MA001_01_01_01_01.MA001_01_01_01_01_01.MA001_01_01_01_01_01_01.iiii public void test_9() {
Annotation aa[] = null;
try{
aa = ClassHierarchyTest.class.getMethod("test_9").getAnnotations();
} catch (NoSuchMethodException e) {
fail("test_9, case 009 FAILED: "+e.toString());
}
for (int i = 0; i < aa.length; i++) {
Class cuCla = aa[i].annotationType();
String caNa = cuCla.getCanonicalName();
String name[] = caNa.split("\\.");
int j = name.length - 1;
while (cuCla != null) {
if(cuCla.getEnclosingClass() != null && cuCla.getEnclosingClass().getSimpleName().equals(name[j])) fail("test_9, case 002 FAILED: "+cuCla.getEnclosingClass().getSimpleName());
if(cuCla.getEnumConstants()!=null) fail("test_9, case 009 FAILED: "+cuCla.getEnumConstants());
if(cuCla.isEnum()) fail("test_9, case 000 FAILED: "+cuCla.isEnum());
try{cuCla.asSubclass( cuCla.getEnclosingClass() != null ? cuCla.getEnclosingClass() : cuCla ); if(!cuCla.getCanonicalName().equals("java.lang.ClassHierarchyTest")) fail("test_9, case 011 FAILED: "+ cuCla.asSubclass( cuCla.getEnclosingClass() != null ? cuCla.getEnclosingClass() : cuCla ));}catch(Exception e){/*e.printStackTrace();*/}
if(cuCla.getEnclosingMethod()!=null) fail("test_9, case 013 FAILED: "+cuCla.getEnclosingMethod());
if(cuCla.getEnclosingConstructor()!=null) fail("test_9, case 014 FAILED: "+cuCla.getEnclosingConstructor());
if(cuCla.getEnclosingClass() != null && !cuCla.isMemberClass()) fail("test_9, case 017 FAILED: "+cuCla.isMemberClass());
if(cuCla.isLocalClass()) fail("test_9, case 018 FAILED: "+cuCla.isLocalClass());
if(cuCla.isAnonymousClass()) fail("test_9, case 019 FAILED: "+cuCla.isAnonymousClass());
if(cuCla.isSynthetic()) fail("test_9, case 020 FAILED: "+cuCla.isSynthetic());
if(!cuCla.getCanonicalName().equals(caNa)) fail("test_9, case 021 FAILED: "+cuCla.getCanonicalName());
caNa = caNa.substring(0, caNa.lastIndexOf('.'));
if(!cuCla.getSimpleName().equals(name[j])) fail("test_9, case 022 FAILED: "+cuCla.getSimpleName());
j--;
cuCla = cuCla.getEnclosingClass();
}
}
}
///////////////////////// IV:
/**
* member enums
*/
public static enum ME001 {
F_S(2),M_S(3),C_S(4),CL_S(1);
ME001(int value) {
cccccc1 = ME001_01_.class;
this.value = value;
}
private final int value;
public static Class cccc2;
public Class ccccc3;
public Class cccccc1;
{
class XXXX{};
ccccc3 = ME001_01_.class;
}
public int value() {
class XXX{};
cccc2 = ME001_01_.class;
return value;
}
public static enum ME001_01_ {G_A_T, P_T, V_T, W_T;
public static enum ME001_01_1 {G_A_T, P_T, V_T, W_T;
public static enum ME001_01_2 {G_A_T, P_T, V_T, W_T;
public static enum ME001_01_3 {G_A_T, P_T, V_T, W_T;
public static enum ME001_01_4 {G_A_T, P_T, V_T, W_T;
public static enum ME001_01_5 {G_A_T, P_T, V_T, W_T;
private final int value = 0;
public int value() {
return value;
}
public static Class pop() {
class XXX{};
return XXX.class;
}
};
};
};
};
};
};
};
public static enum ME001_01_ {G_A_T, P_T, V_T, W_T};
public void test_10() {
//Class cuCla = ME001.cccc2; - null
//Class cuCla = new ME001(77).cccccc1;
Class cuCla = ME001.ME001_01_.ME001_01_1.ME001_01_2.ME001_01_3.ME001_01_4.ME001_01_5.class;
if(!cuCla.getEnclosingClass().equals(java.lang.ClassHierarchyTest.ME001.ME001_01_.ME001_01_1.ME001_01_2.ME001_01_3.ME001_01_4.class)) fail("test_1, case 004 FAILED: "+cuCla.getEnclosingClass());
if(cuCla.getEnumConstants()==null) fail("test_1, case 009 FAILED: "+cuCla.getEnumConstants());
ME001.ME001_01_.ME001_01_1.ME001_01_2.ME001_01_3.ME001_01_4.ME001_01_5 ae[] = (ME001.ME001_01_.ME001_01_1.ME001_01_2.ME001_01_3.ME001_01_4.ME001_01_5[])cuCla.getEnumConstants();
for (int i = 0; i < ae.length; i++) {
if (!ae[i].equals(ME001.ME001_01_.ME001_01_1.ME001_01_2.ME001_01_3.ME001_01_4.ME001_01_5.G_A_T) &&
!ae[i].equals(ME001.ME001_01_.ME001_01_1.ME001_01_2.ME001_01_3.ME001_01_4.ME001_01_5.P_T) &&
!ae[i].equals(ME001.ME001_01_.ME001_01_1.ME001_01_2.ME001_01_3.ME001_01_4.ME001_01_5.V_T) &&
!ae[i].equals(ME001.ME001_01_.ME001_01_1.ME001_01_2.ME001_01_3.ME001_01_4.ME001_01_5.W_T)) {
fail("test_1, case 001 FAILED: "+ae[i]+" is not this enum's constant");
}
}
if(!cuCla.isEnum()) fail("test_1, case 000 FAILED: "+cuCla.isEnum());
try{cuCla.asSubclass(ME001.ME001_01_.ME001_01_1.ME001_01_2.ME001_01_3.ME001_01_4.class); fail("test_1, case 011 FAILED: "+cuCla.asSubclass(ClassHierarchyTest.class));}catch(Exception e){/*e.printStackTrace();*/}
if(cuCla.getEnclosingMethod()!=null) fail("test_1, case 013 FAILED: "+cuCla.getEnclosingMethod());
if(cuCla.getEnclosingConstructor()!=null) fail("test_1, case 014 FAILED: "+cuCla.getEnclosingConstructor());
if(!cuCla.isMemberClass()) fail("test_1, case 017 FAILED: "+cuCla.isMemberClass());
if(cuCla.isLocalClass()) fail("test_1, case 018 FAILED: "+cuCla.isLocalClass());
if(cuCla.isAnonymousClass()) fail("test_1, case 019 FAILED: "+cuCla.isAnonymousClass());
if(cuCla.isSynthetic()) fail("test_1, case 020 FAILED: "+cuCla.isSynthetic());
if(!cuCla.getCanonicalName().equals("java.lang.ClassHierarchyTest.ME001.ME001_01_.ME001_01_1.ME001_01_2.ME001_01_3.ME001_01_4.ME001_01_5")) fail("test_1, case 021 FAILED: "+cuCla.getCanonicalName());
if(!cuCla.getSimpleName().equals("ME001_01_5")) fail("test_1, case 022 FAILED: "+cuCla.getSimpleName());
if (RuntimeAdditionalSupport1.openingFlag) {
cuCla = ME001.ME001_01_.ME001_01_1.ME001_01_2.ME001_01_3.ME001_01_4.ME001_01_5.pop();
if(!cuCla.getEnclosingClass().equals(java.lang.ClassHierarchyTest.ME001.ME001_01_.ME001_01_1.ME001_01_2.ME001_01_3.ME001_01_4.ME001_01_5.class)) fail("test_1, case 004 FAILED: "+cuCla.getEnclosingClass());
if(cuCla.getEnumConstants()!=null) fail("test_1, case 009 FAILED: "+cuCla.getEnumConstants());
if(cuCla.isEnum()) fail("test_1, case 000 FAILED: "+cuCla.isEnum());
try{cuCla.asSubclass(ClassHierarchyTest.class); fail("test_1, case 011 FAILED: "+cuCla.asSubclass(ClassHierarchyTest.class));}catch(Exception e){/*e.printStackTrace();*/}
if(!cuCla.getEnclosingMethod().getName().equals("pop")) fail("test_1, case 013 FAILED: "+cuCla.getEnclosingMethod());
if(cuCla.getEnclosingConstructor()!=null) fail("test_1, case 014 FAILED: "+cuCla.getEnclosingConstructor());
if(cuCla.isMemberClass()) fail("test_1, case 017 FAILED: "+cuCla.isMemberClass());
if(!cuCla.isLocalClass()) fail("test_1, case 018 FAILED: "+cuCla.isLocalClass());
if(cuCla.isAnonymousClass()) fail("test_1, case 019 FAILED: "+cuCla.isAnonymousClass());
if(cuCla.isSynthetic()) fail("test_1, case 020 FAILED: "+cuCla.isSynthetic());
if(cuCla.getCanonicalName()!=null) fail("test_1, case 021 FAILED: "+cuCla.getCanonicalName());
if(!cuCla.getSimpleName().equals("XXX")) fail("test_1, case 022 FAILED: "+cuCla.getSimpleName());
}
}
///////////////////////// V:
/**
* casting
*/
interface XXX{};
enum tmp15$ implements XXX {
PENNY(1),NICKEL(5),DIME(10),QUARTER(25);
tmp15$(int value) {this.value = value;}
private final int value;
public int value() {
return value;
}
enum yyy$1$2$3 {WHITE, GREY, BLACK};
}
static Object obj;
public void test_11() {
class A {
}
class B extends A {
}
class $tmp15 {
}
class $tmp16 {
}
try {
Object o = new $tmp16();
tmp15$.class.cast(o);
tmp15$ x = (tmp15$) o; obj = x;
fail("test_11, case 001 FAILED: ClassCastException should be risen");
} catch (ClassCastException e) {
}
try {
Object o = new $tmp16();
tmp15$ i = (tmp15$) o; obj = i;
fail("test_11, case 002 FAILED: ClassCastException should be risen");
} catch (ClassCastException e) {
}
class CC<T extends Number> {
}
CC<Integer> io = new CC<Integer>();
CC<Float> fo = new CC<Float>();
fo.getClass().cast(io);
class Str {
}
class CCC<T extends Str & java.io.Serializable> {
}
class CCCc<T1 extends Str & java.io.Serializable, T2> {
}
class Xx extends Str implements java.io.Serializable {static final long serialVersionUID = 0;
}
class Yy extends Str implements java.io.Serializable {static final long serialVersionUID = 0;
}
CCC<?> io2 = new CCC<Xx>();
CCC<? extends Str> fo2 = new CCC<Yy>();
if (!io2.getClass().getName().equals("java.lang.ClassHierarchyTest$1CCC")) {
fail("test_11, case 003 FAILED: "+io2.getClass().getName());
}
if (!fo2.getClass().cast(io2).getClass().getName().equals("java.lang.ClassHierarchyTest$1CCC")) {
fail("test_11, case 004 FAILED: "+io2.getClass().getName());
}
CCCc<Xx, Yy> fo3 = new CCCc<Xx, Yy>();
Object o = new CCCc<Yy, Yy>();
try {
// fo3 = (CCCc<Xx,Yy>) new CCCc<Yy,Yy>(); // inconvertible types: found : CCCc<Yy,Yy> - required: CCCc<Xx,Yy>
fo3 = (CCCc<Xx, Yy>) o; // but it is run (look just above)!
// so, it's expected the exceptions will risen while running deeply
fo3.getClass().cast(new CCCc<Yy, Yy>()); // so, looks like our cast() implementation is not worse
} catch (Exception e) {
fail("test_11, case 005 FAILED: "+e.toString());
}
try {
Object ooo = (Object) fo2;
if (fo3.getClass().isAssignableFrom(fo2.getClass())) {
fail("test_11, case 006 FAILED");
}
if (ooo instanceof CCCc) {
fail("test_11, case 007 FAILEDn");
}
fo3.getClass().cast(fo2);
fail("test_11, case 008 FAILED: ClassCastException should be risen");
} catch (ClassCastException e) {
//e.printStackTrace();
}
try {
Object o1 = new CCCc<Xx, Yy>();
Object o2 = new CCCc<Xx, Yy>();
Object o3 = o1.getClass().cast(o2);obj = o3;
Object o4 = o2.getClass().cast(o1);obj = o4;
Object o5 = o2.getClass().cast(null);obj = o5;
Class cuCla1 = o1.getClass();
Class cuCla2 = o2.getClass();
Class cuCla3 = cuCla1.asSubclass(cuCla2);obj = cuCla3;
} catch (ClassCastException e) {
fail("test_11, case 009 FAILED: ClassCastException should not be risen");
}
try {
Object o1 = new CCCc<Xx, Xx>();
Object o2 = new CCCc<Xx, Yy>();
Object o3 = o1.getClass().cast(o2);obj = o3;
Object o4 = o2.getClass().cast(o1);obj = o4;
Object o5 = o2.getClass().cast(null);obj = o5;
Class cuCla1 = o1.getClass();
Class cuCla2 = o2.getClass();
Class cuCla3 = cuCla1.asSubclass(cuCla2);obj = cuCla3;
} catch (ClassCastException e) {
fail("test_11, case 010 FAILED: ClassCastException should notbe risen");
}
try {
Object o1 = new CCCc<Xx, Xx>();
Object o2 = new CCCc<Yy, Yy>();
Object o3 = o1.getClass().cast(o2);obj = o3;
Object o4 = o2.getClass().cast(o1);obj = o4;
Object o5 = o2.getClass().cast(null);obj = o5;
Class cuCla1 = o1.getClass();
Class cuCla2 = o2.getClass();
Class cuCla3 = cuCla1.asSubclass(cuCla2);obj = cuCla3;
} catch (ClassCastException e) {
fail("test_11, case 011 FAILED: ClassCastException should not be risen");
}
try {
Object o1 = new CCCc<Xx, Xx>();
Object o2 = new CCCc<Yy, Xx>();
Object o3 = o1.getClass().cast(o2);obj = o3;
Object o4 = o2.getClass().cast(o1);obj = o4;
Object o5 = o2.getClass().cast(null);obj = o5;
Class cuCla1 = o1.getClass();
Class cuCla2 = o2.getClass();
Class cuCla3 = cuCla1.asSubclass(cuCla2);obj = cuCla3;
} catch (ClassCastException e) {
fail("test_11, case 012 FAILED: ClassCastException should not be risen");
}
try {
Object o1 = new CCCc();
Object o2 = new CCCc<Xx, Yy>();
Object o3 = o1.getClass().cast(o2);obj = o3;
Object o4 = o2.getClass().cast(o1);obj = o4;
Object o5 = o2.getClass().cast(null);obj = o5;
Class cuCla1 = o1.getClass();
Class cuCla2 = o2.getClass();
Class cuCla3 = cuCla1.asSubclass(cuCla2);obj = cuCla3;
} catch (ClassCastException e) {
fail("test_11, case 013 FAILED: ClassCastException should not be risen");
}
try {
Object o1 = new CCCc<Xx, Yy>();
Object o2 = new CCCc();
Object o3 = o1.getClass().cast(o2);obj = o3;
Object o4 = o2.getClass().cast(o1);obj = o4;
Object o5 = o2.getClass().cast(null);obj = o5;
Class cuCla1 = o1.getClass();
Class cuCla2 = o2.getClass();
Class cuCla3 = cuCla1.asSubclass(cuCla2);obj = cuCla3;
} catch (ClassCastException e) {
fail("test_11, case 014 FAILED: ClassCastException should not be risen");
}
class Str2 {
}
class CCC2<T extends Str & java.io.Serializable> {
}
class CCCc2<T1 extends Str & java.io.Serializable, T2> {
}
class Xx2 extends Str implements java.io.Serializable {static final long serialVersionUID = 0;
}
class Yy2 extends Str implements java.io.Serializable {static final long serialVersionUID = 0;
}
CCC2<? extends Str> fo22 = new CCC2<Yy2>();
CCCc2<Xx2, Yy2> fo33 = new CCCc2<Xx2, Yy2>();
Object o2 = new CCCc2<Yy, Yy>();
try {
fo33 = (CCCc2<Xx2, Yy2>) o2;
fo33.getClass().cast(new CCCc2<Yy2, Yy2>());
try {
fo33.getClass().cast(new CCCc<Yy2, Yy2>());
fail("test_11, case 015 FAILED: ClassCastException should be risen");
} catch (ClassCastException e) {
}
fo33.getClass().cast(new CCCc2<Yy, Yy>());
} catch (Exception e) {
e.printStackTrace();
fail("test_11, case 016 FAILED: "+e.toString());
}
try {
fo33.getClass().cast(fo22);
fail("test_11, case 017 FAILED: ClassCastException should be risen");
} catch (ClassCastException e) {
//e.printStackTrace();
}
}
/**
* generalized member class
*/
@anna public void test_12() {
Class cuCla = new MC002<Object, java.lang.reflect.Proxy, MC002<Integer, Void, Character>.MC002_01<Integer, Void, Character>.MC002_01_01<Integer, Void, Character>.MC002_01_01_01<Integer, Void, Character>.MC002_01_01_01_01<Integer, Void, Character>.MC002_01_01_01_01_01<Integer, Void, Character>.MC002_01_01_01_01_01_01<Integer, Void, Character>>().getClass();
if(!cuCla.getEnclosingClass().equals(ClassHierarchyTest.class)) fail("test_1, case 004 FAILED: "+cuCla.getEnclosingClass());
if(cuCla.getEnumConstants()!=null) fail("test_1, case 009 FAILED: "+cuCla.getEnumConstants());
if(cuCla.isEnum()) fail("test_1, case 000 FAILED: "+cuCla.isEnum());
try{cuCla.asSubclass(ClassHierarchyTest.class); fail("test_1, case 011 FAILED: "+cuCla.asSubclass(ClassHierarchyTest.class));}catch(Exception e){/*e.printStackTrace();*/}
if(cuCla.getEnclosingMethod()!=null) fail("test_1, case 013 FAILED: "+cuCla.getEnclosingMethod());
if(cuCla.getEnclosingConstructor()!=null) fail("test_1, case 014 FAILED: "+cuCla.getEnclosingConstructor());
if(!cuCla.isMemberClass()) fail("test_1, case 017 FAILED: "+cuCla.isMemberClass());
if(cuCla.isLocalClass()) fail("test_1, case 018 FAILED: "+cuCla.isLocalClass());
if(cuCla.isAnonymousClass()) fail("test_1, case 019 FAILED: "+cuCla.isAnonymousClass());
if(cuCla.isSynthetic()) fail("test_1, case 020 FAILED: "+cuCla.isSynthetic());
if(!cuCla.getCanonicalName().equals("java.lang.ClassHierarchyTest.MC002")) fail("test_1, case 021 FAILED: "+cuCla.getCanonicalName());
if(!cuCla.getSimpleName().equals("MC002")) fail("test_1, case 022 FAILED: "+cuCla.getSimpleName());
if(cuCla.getGenericInterfaces().length != 0) fail("test_1, case 022 FAILED: "+cuCla.getGenericInterfaces().length);
if(!((Class)cuCla.getGenericSuperclass()).getName().equals("java.lang.Object")) fail("test_1, case 022 FAILED: "+((Class)cuCla.getGenericSuperclass()).getName());
if(cuCla.getTypeParameters().length == 0) fail("test_1, case 022 FAILED: "+cuCla.getTypeParameters().length);
/* !!! */ System.out.println(111);
Annotation aaa = null;
try{aaa = ClassHierarchyTest.class.getMethod("test_12").getAnnotations()[0];}catch(NoSuchMethodException e){fail("test_1, case 022 FAILED: Internal Error");}
try{if(cuCla.cast(aaa) == null) fail("test_1, case 022 FAILED: "+cuCla.getSimpleName());}catch(Exception e){/*e.printStackTrace();*/}
if(cuCla.getAnnotation(aaa.annotationType()) != null) fail("test_1, case 022 FAILED: "+cuCla.getSimpleName());
if(cuCla.getAnnotations().length == 0) fail("test_1, case 022 FAILED: "+cuCla.getSimpleName());
if(cuCla.getDeclaredAnnotations().length == 0) fail("test_1, case 022 FAILED: "+cuCla.getSimpleName());
if(cuCla.isAnnotation()) fail("test_1, case 022 FAILED: "+cuCla.getSimpleName());
if(cuCla.isAnnotationPresent(aaa.annotationType())) fail("test_1, case 022 FAILED: "+cuCla.getSimpleName());
}
/**
* generalized member interface
*/
//Commented because of the drlvm issue
public void te_st_12_1() { // it is eclipse's bug
// It's strange that if we use javac instead of ecj
// then we have no such problem
// <<< java.lang.NoClassDefFoundError: Ajava/lang/ClassHierarchyTest$1xxx: class name in class data does not match class name passed>>>
// so it should be investigated.
// The wollowing crashes bvm:
//class x implements MI002.MI002_01.MI002_01_01.MI002_01_01_01.MI002_01_01_01_01.MI002_01_01_01_01_01.MI002_01_01_01_01_01_01<java.io.Serializable, java.lang.reflect.Type, java.lang.reflect.InvocationHandler> {};
//Class cuCla = (Class)x.class.getGenericInterfaces()[0];
class xxx implements MI002.MI002_01.MI002_01_01.MI002_01_01_01.MI002_01_01_01_01.MI002_01_01_01_01_01.MI002_01_01_01_01_01_01<java.io.Serializable, java.lang.reflect.Type, java.lang.reflect.InvocationHandler> {};
Class cuCla = (Class)((java.lang.reflect.ParameterizedType)xxx.class.getGenericInterfaces()[0]).getRawType();
if(!cuCla.getEnclosingClass().equals(MI002.MI002_01.MI002_01_01.MI002_01_01_01.MI002_01_01_01_01.MI002_01_01_01_01_01.class)) fail("test_1, case 004 FAILED: "+cuCla.getEnclosingClass());
if(cuCla.getEnumConstants()!=null) fail("test_1, case 009 FAILED: "+cuCla.getEnumConstants());
if(cuCla.isEnum()) fail("test_1, case 000 FAILED: "+cuCla.isEnum());
try{cuCla.asSubclass(ClassHierarchyTest.class); fail("test_1, case 011 FAILED: "+cuCla.asSubclass(ClassHierarchyTest.class));}catch(Exception e){/*e.printStackTrace();*/}
if(cuCla.getEnclosingMethod()!=null) fail("test_1, case 013 FAILED: "+cuCla.getEnclosingMethod());
if(cuCla.getEnclosingConstructor()!=null) fail("test_1, case 014 FAILED: "+cuCla.getEnclosingConstructor());
if(!cuCla.isMemberClass()) fail("test_1, case 017 FAILED: "+cuCla.isMemberClass());
if(cuCla.isLocalClass()) fail("test_1, case 018 FAILED: "+cuCla.isLocalClass());
if(cuCla.isAnonymousClass()) fail("test_1, case 019 FAILED: "+cuCla.isAnonymousClass());
if(cuCla.isSynthetic()) fail("test_1, case 020 FAILED: "+cuCla.isSynthetic());
if(!cuCla.getCanonicalName().equals("java.lang.ClassHierarchyTest.MI002.MI002_01.MI002_01_01.MI002_01_01_01.MI002_01_01_01_01.MI002_01_01_01_01_01.MI002_01_01_01_01_01_01")) fail("test_1, case 021 FAILED: "+cuCla.getCanonicalName());
if(!cuCla.getSimpleName().equals("MI002_01_01_01_01_01_01")) fail("test_1, case 022 FAILED: "+cuCla.getSimpleName());
}
/**
* deeply nested generalized member classes
*/
public void test_13() {
Class cuCla = new MC002<Object, java.lang.reflect.Proxy, MC002<Integer, Void, Character>.MC002_01<Integer, Void, Character>.MC002_01_01<Integer, Void, Character>.MC002_01_01_01<Integer, Void, Character>.MC002_01_01_01_01<Integer, Void, Character>.MC002_01_01_01_01_01<Integer, Void, Character>.MC002_01_01_01_01_01_01<Integer, Void, Character>>().getClass();
String caNa = cuCla.getCanonicalName();
//String name[] = caNa.split("\\$");
String name[] = caNa.split("\\.");
int i = name.length - 1;
while (cuCla != null) {
if(cuCla.getEnclosingClass() != null && cuCla.getEnclosingClass().getSimpleName().equals(name[i])) fail("test_2, case 002 FAILED: "+cuCla.getEnclosingClass().getSimpleName());
if(cuCla.getEnumConstants()!=null) fail("test_2, case 009 FAILED: "+cuCla.getEnumConstants());
if(cuCla.isEnum()) fail("test_2, case 000 FAILED: "+cuCla.isEnum());
try{cuCla.asSubclass( cuCla.getEnclosingClass() != null ? cuCla.getEnclosingClass() : cuCla ); if(!cuCla.getCanonicalName().equals("java.lang.ClassHierarchyTest")) fail("test_2, case 011 FAILED: "+ cuCla.asSubclass( cuCla.getEnclosingClass() != null ? cuCla.getEnclosingClass() : cuCla ));}catch(Exception e){/*e.printStackTrace();*/}
if(cuCla.getEnclosingMethod()!=null) fail("test_2, case 013 FAILED: "+cuCla.getEnclosingMethod());
if(cuCla.getEnclosingConstructor()!=null) fail("test_2, case 014 FAILED: "+cuCla.getEnclosingConstructor());
if(cuCla.getEnclosingClass() != null && !cuCla.isMemberClass()) fail("test_1, case 017 FAILED: "+cuCla.isMemberClass());
if(cuCla.isLocalClass()) fail("test_2, case 018 FAILED: "+cuCla.isLocalClass());
if(cuCla.isAnonymousClass()) fail("test_2, case 019 FAILED: "+cuCla.isAnonymousClass());
if(cuCla.isSynthetic()) fail("test_2, case 020 FAILED: "+cuCla.isSynthetic());
if(!cuCla.getCanonicalName().equals(caNa)) fail("test_2, case 021 FAILED: "+cuCla.getCanonicalName());
caNa = caNa.substring(0, caNa.lastIndexOf('.'));
if(!cuCla.getSimpleName().equals(name[i])) fail("test_2, case 022 FAILED: "+cuCla.getSimpleName());
i--;
cuCla = cuCla.getEnclosingClass();
}
}
/**
* deeply nested generalized member interfaces
*/
//Commented because of the drlvm issue
public void te_st_13_1() { // it is eclipse's bug
// It's strange that if we use javac instead of ecj
// then we have no such problem
// <<< java.lang.NoClassDefFoundError: Ajava/lang/ClassHierarchyTest$1xxx: class name in class data does not match class name passed>>>
// so it should be investigated.
//Class cuCla = MI001.MI001_01.MI001_01_01.MI001_01_01_01.MI001_01_01_01_01.MI001_01_01_01_01_01.MI001_01_01_01_01_01_01.class;
class xxx implements MI002.MI002_01.MI002_01_01.MI002_01_01_01.MI002_01_01_01_01.MI002_01_01_01_01_01.MI002_01_01_01_01_01_01<java.io.Serializable, java.lang.reflect.Type, java.lang.reflect.InvocationHandler> {};
Class cuCla = (Class)((java.lang.reflect.ParameterizedType)xxx.class.getGenericInterfaces()[0]).getRawType();
String caNa = cuCla.getCanonicalName();
//String name[] = caNa.split("\\$");
String name[] = caNa.split("\\.");
int i = name.length - 1;
while (cuCla != null) {
if(cuCla.getEnclosingClass() != null && cuCla.getEnclosingClass().getSimpleName().equals(name[i])) fail("test_2, case 002 FAILED: "+cuCla.getEnclosingClass().getSimpleName());
if(cuCla.getEnumConstants()!=null) fail("test_2, case 009 FAILED: "+cuCla.getEnumConstants());
if(cuCla.isEnum()) fail("test_2, case 000 FAILED: "+cuCla.isEnum());
try{cuCla.asSubclass( cuCla.getEnclosingClass() != null ? cuCla.getEnclosingClass() : cuCla ); if(!cuCla.getCanonicalName().equals("java.lang.ClassHierarchyTest")) fail("test_2, case 011 FAILED: "+ cuCla.asSubclass( cuCla.getEnclosingClass() != null ? cuCla.getEnclosingClass() : cuCla ));}catch(Exception e){/*e.printStackTrace();*/}
if(cuCla.getEnclosingMethod()!=null) fail("test_2, case 013 FAILED: "+cuCla.getEnclosingMethod());
if(cuCla.getEnclosingConstructor()!=null) fail("test_2, case 014 FAILED: "+cuCla.getEnclosingConstructor());
if(cuCla.getEnclosingClass() != null && !cuCla.isMemberClass()) fail("test_1, case 017 FAILED: "+cuCla.isMemberClass());
if(cuCla.isLocalClass()) fail("test_2, case 018 FAILED: "+cuCla.isLocalClass());
if(cuCla.isAnonymousClass()) fail("test_2, case 019 FAILED: "+cuCla.isAnonymousClass());
if(cuCla.isSynthetic()) fail("test_2, case 020 FAILED: "+cuCla.isSynthetic());
if(!cuCla.getCanonicalName().equals(caNa)) fail("test_2, case 021 FAILED: "+cuCla.getCanonicalName());
caNa = caNa.substring(0, caNa.lastIndexOf('.'));
if(!cuCla.getSimpleName().equals(name[i])) fail("test_2, case 022 FAILED: "+cuCla.getSimpleName());
i--;
cuCla = cuCla.getEnclosingClass();
}
}
/**
* unnested generalized local class
*/
public <T0> void test_14() {
@i class LC000<T1 extends T0> {
}
//@i class LC001<T1 extends T0 &java.io.Serializable &java.lang.reflect.Type &java.lang.reflect.GenericDeclaration> {
@i class LC001<T1 extends LC000 &java.io.Serializable &java.lang.reflect.Type &GenericDeclaration> {
java.lang.reflect.TypeVariable<?>[] getTypeParameters() {
return (java.lang.reflect.TypeVariable<?>[])null;
}
};
new LC001().getTypeParameters();
if(!LC001.class.getEnclosingClass().equals(ClassHierarchyTest.class)) fail("test_3, case 004 FAILED: "+LC001.class.getEnclosingClass());
if(LC001.class.getEnumConstants()!=null) fail("test_3, case 009 FAILED: "+LC001.class.getEnumConstants());
if(LC001.class.isEnum()) fail("test_3, case 000 FAILED: "+LC001.class.isEnum());
try{LC001.class.asSubclass(ClassHierarchyTest.class); fail("test_3, case 011 FAILED: "+LC001.class.asSubclass(ClassHierarchyTest.class));}catch(Exception e){/*e.printStackTrace();*/}
if(!LC001.class.getEnclosingMethod().getName().equals("test_14")) fail("test_3, case 013 FAILED: "+LC001.class.getEnclosingMethod().getName());
if(LC001.class.getEnclosingConstructor()!=null) fail("test_3, case 014 FAILED: "+LC001.class.getEnclosingConstructor());
if(LC001.class.isMemberClass()) fail("test_3, case 017 FAILED: "+LC001.class.isMemberClass());
if(!LC001.class.isLocalClass()) fail("test_3, case 018 FAILED: "+LC001.class.isLocalClass());
if(LC001.class.isAnonymousClass()) fail("test_3, case 019 FAILED: "+LC001.class.isAnonymousClass());
if(LC001.class.isSynthetic()) fail("test_3, case 020 FAILED: "+LC001.class.isSynthetic());
if(LC001.class.getCanonicalName()!=null) fail("test_3, case 021 FAILED: "+LC001.class.getCanonicalName());
if(!LC001.class.getSimpleName().equals("LC001")) fail("test_3, case 022 FAILED: "+LC001.class.getSimpleName());
}
/**
* generalized local ClassHierarchyTest$1$LC003$1A.class (1)
* generalized anonymous ClassHierarchyTest$1$LC003$1.class (2)
* generalized member of anonymous ClassHierarchyTest$1$LC003$1$A.class (3)
* generalized local ClassHierarchyTest$1$LC003$1AAA.class (4)
*/
static int f2 = 0;
static Object ooo2 = null;
public <T0 extends MC002> void test_15() { // it is eclipse's bug
// It's strange that if we use javac instead of ecj
// then we have no such problem
// <<< java.lang.NoClassDefFoundError: Ajava/lang/ClassHierarchyTest$1xxx: class name in class data does not match class name passed>>>
// so it should be investigated.
@i
class LC002<T1 extends T0> {
}
;
class $LC003<T2 extends ClassHierarchyTest &java.lang.reflect.ParameterizedType> {
public Class value() {
class A<T3 extends T2> extends $LC003 { // (1)
}
;
Object o = new LC002<T0>() { // (2)
class A<T5, T6, T7, T8, T9> { // (3)
}
Class m1() {
return A.class;
}
Class m2() {
return m1() == null? m3():m1();
}
Class m3() {
return m2() == null? m1():m2();
}
};
ooo2 = o;
if (f2 < 1) {
f2 += 1;
return A.class;
}
f2 += 1;
return o.getClass();
}
public Class value2() {
class AAA<T10> { // (4)
}
;
return AAA.class;
}
}
class X$1Y<T11> {
}
class X<T12, T13 extends ClassHierarchyTest> {
Class m2() {
class Y<T121, T131> { // it has "X$2Y" name!!! So, compiler provides the
// difference with the previous "X$1Y"
}
return Y.class;
}
}
new X().m2();
Class cuCla = new $LC003().value(); // ClassHierarchyTest$1$LC003$1A.class (1)
if(!cuCla.getEnclosingClass().equals($LC003.class)) fail("test_4, case 004 FAILED: "+cuCla.getEnclosingClass());
if(cuCla.getEnumConstants()!=null) fail("test_4, case 009 FAILED: "+cuCla.getEnumConstants());
if(cuCla.isEnum()) fail("test_4, case 000 FAILED: "+cuCla.isEnum());
try{cuCla.asSubclass(ClassHierarchyTest.class); fail("test_4, case 011 FAILED: "+cuCla.asSubclass(ClassHierarchyTest.class));}catch(Exception e){/*e.printStackTrace();*/}
if(!cuCla.getEnclosingMethod().getName().equals("value")) fail("test_4, case 013 FAILED: "+cuCla.getEnclosingMethod().getName());
if(cuCla.getEnclosingConstructor()!=null) fail("test_4, case 014 FAILED: "+cuCla.getEnclosingConstructor());
if(cuCla.isMemberClass()) fail("test_4, case 017 FAILED: "+cuCla.isMemberClass());
if(!cuCla.isLocalClass()) fail("test_4, case 018 FAILED: "+cuCla.isLocalClass());
if(cuCla.isAnonymousClass()) fail("test_4, case 019 FAILED: "+cuCla.isAnonymousClass());
if(cuCla.isSynthetic()) fail("test_4, case 020 FAILED: "+cuCla.isSynthetic());
if(cuCla.getCanonicalName()!=null) fail("test_4, case 021 FAILED: "+cuCla.getCanonicalName());
if(!cuCla.getSimpleName().equals("A")) fail("test_4, case 022 FAILED: "+cuCla.getSimpleName());
cuCla = new $LC003().value(); // ClassHierarchyTest$1$LC003$1.class (2)
if(!cuCla.getEnclosingClass().equals($LC003.class)) fail("test_4, case 023 FAILED: "+cuCla.getEnclosingClass());
if(cuCla.getEnumConstants()!=null) fail("test_4, case 024 FAILED: "+cuCla.getEnumConstants());
if(cuCla.isEnum()) fail("test_4, case 025 FAILED: "+cuCla.isEnum());
try{cuCla.asSubclass(ClassHierarchyTest.class); fail("test_4, case 026 FAILED: "+cuCla.asSubclass(ClassHierarchyTest.class));}catch(Exception e){/*e.printStackTrace();*/}
if(!cuCla.getEnclosingMethod().getName().equals("value")) fail("test_4, case 027 FAILED: "+cuCla.getEnclosingMethod().getName());
if(cuCla.getEnclosingConstructor()!=null) fail("test_4, case 028 FAILED: "+cuCla.getEnclosingConstructor());
if(cuCla.isMemberClass()) fail("test_4, case 029 FAILED: "+cuCla.isMemberClass());
if(cuCla.isLocalClass()) fail("test_4, case 030 FAILED: "+cuCla.isLocalClass());
if(!cuCla.isAnonymousClass()) fail("test_4, case 031 FAILED: "+cuCla.isAnonymousClass());
if(cuCla.isSynthetic()) fail("test_4, case 032 FAILED: "+cuCla.isSynthetic());
if(cuCla.getCanonicalName()!=null) fail("test_4, case 033 FAILED: "+cuCla.getCanonicalName());
if(!cuCla.getSimpleName().equals("")) fail("test_4, case 034 FAILED: "+cuCla.getSimpleName());
cuCla = new $LC003().value2(); // ClassHierarchyTest$1$LC003$1AAA.class (4)
if(!cuCla.getEnclosingClass().equals($LC003.class)) fail("test_4, case 035 FAILED: "+cuCla.getEnclosingClass());
if(cuCla.getEnumConstants()!=null) fail("test_4, case 036 FAILED: "+cuCla.getEnumConstants());
if(cuCla.isEnum()) fail("test_4, case 037 FAILED: "+cuCla.isEnum());
try{cuCla.asSubclass(ClassHierarchyTest.class); fail("test_4, case 038 FAILED: "+cuCla.asSubclass(ClassHierarchyTest.class));}catch(Exception e){/*e.printStackTrace();*/}
if(!cuCla.getEnclosingMethod().getName().equals("value2")) fail("test_4, case 039 FAILED: "+cuCla.getEnclosingMethod().getName());
if(cuCla.getEnclosingConstructor()!=null) fail("test_4, case 040 FAILED: "+cuCla.getEnclosingConstructor());
if(cuCla.isMemberClass()) fail("test_4, case 041 FAILED: "+cuCla.isMemberClass());
if(!cuCla.isLocalClass()) fail("test_4, case 042 FAILED: "+cuCla.isLocalClass());
if(cuCla.isAnonymousClass()) fail("test_4, case 043 FAILED: "+cuCla.isAnonymousClass());
if(cuCla.isSynthetic()) fail("test_4, case 044 FAILED: "+cuCla.isSynthetic());
if(cuCla.getCanonicalName()!=null) fail("test_4, case 045 FAILED: "+cuCla.getCanonicalName());
if(!cuCla.getSimpleName().equals("AAA")) fail("test_4, case 046 FAILED: "+cuCla.getSimpleName());
try {
cuCla = (Class) new $LC003().value().getDeclaredMethod("m1").invoke(ooo2, (Object[])null); // ClassHierarchyTest$1$LC003$1$A.class (3)
Class tc = Class.forName("java.lang.ClassHierarchyTest$2$LC003$1");
if(!cuCla.getEnclosingClass().equals(tc)) fail("test_4, case 047 FAILED: "+cuCla.getEnclosingClass());
if(cuCla.getEnumConstants()!=null) fail("test_4, case 048 FAILED: "+cuCla.getEnumConstants());
if(cuCla.isEnum()) fail("test_4, case 049 FAILED: "+cuCla.isEnum());
try{cuCla.asSubclass(ClassHierarchyTest.class); fail("test_4, case 050 FAILED: "+cuCla.asSubclass(ClassHierarchyTest.class));}catch(Exception e){/*e.printStackTrace();*/}
if(cuCla.getEnclosingMethod()!=null) fail("test_4, case 051 FAILED: "+cuCla.getEnclosingMethod());
if(cuCla.getEnclosingConstructor()!=null) fail("test_4, case 052 FAILED: "+cuCla.getEnclosingConstructor());
if(!cuCla.isMemberClass()) fail("test_4, case 053 FAILED: "+cuCla.isMemberClass());
if(cuCla.isLocalClass()) fail("test_4, case 054 FAILED: "+cuCla.isLocalClass());
if(cuCla.isAnonymousClass()) fail("test_4, case 055 FAILED: "+cuCla.isAnonymousClass());
if(cuCla.isSynthetic()) fail("test_4, case 056 FAILED: "+cuCla.isSynthetic());
if(cuCla.getCanonicalName()!=null) fail("test_4, case 057 FAILED: "+cuCla.getCanonicalName());
if(!cuCla.getSimpleName().equals("A")) fail("test_4, case 058 FAILED: "+cuCla.getSimpleName());
} catch(ClassNotFoundException e) {
fail(e.getMessage());
} catch(IllegalAccessException e) {
fail(e.getMessage());
} catch(IllegalArgumentException e) {
fail(e.getMessage());
} catch(java.lang.reflect.InvocationTargetException e) {
fail(e.getMessage());
} catch(NoSuchMethodException e) {
fail(e.getMessage());
}
cuCla = X$1Y.class; // ClassHierarchyTest$1X$1Y.class (3)
if(!cuCla.getEnclosingClass().equals(ClassHierarchyTest.class)) fail("test_4, case 059 FAILED: "+cuCla.getEnclosingClass());
if(cuCla.getEnumConstants()!=null) fail("test_4, case 060 FAILED: "+cuCla.getEnumConstants());
if(cuCla.isEnum()) fail("test_4, case 061 FAILED: "+cuCla.isEnum());
try{cuCla.asSubclass(ClassHierarchyTest.class); fail("test_4, case 062 FAILED: "+cuCla.asSubclass(ClassHierarchyTest.class));}catch(Exception e){/*e.printStackTrace();*/}
if(!cuCla.getEnclosingMethod().getName().equals("test_15")) fail("test_4, case 063 FAILED: "+cuCla.getEnclosingMethod().getName());
if(cuCla.getEnclosingConstructor()!=null) fail("test_4, case 064 FAILED: "+cuCla.getEnclosingConstructor());
if(cuCla.isMemberClass()) fail("test_4, case 065 FAILED: "+cuCla.isMemberClass());
if(!cuCla.isLocalClass()) fail("test_4, case 066 FAILED: "+cuCla.isLocalClass());
if(cuCla.isAnonymousClass()) fail("test_4, case 067 FAILED: "+cuCla.isAnonymousClass());
if(cuCla.isSynthetic()) fail("test_4, case 068 FAILED: "+cuCla.isSynthetic());
if(cuCla.getCanonicalName()!=null) fail("test_4, case 069 FAILED: "+cuCla.getCanonicalName());
if(!cuCla.getSimpleName().equals("X$1Y")) fail("test_4, case 070 FAILED: "+cuCla.getSimpleName());
try {
cuCla = (Class) X.class.getDeclaredMethod("m2").invoke(new X(), (Object[])null); // ClassHierarchyTest$1$LC003$1$A.class (3)
if(!cuCla.getEnclosingClass().equals(X.class)) fail("test_4, case 071 FAILED: "+cuCla.getEnclosingClass());
if(cuCla.getEnumConstants()!=null) fail("test_4, case 072 FAILED: "+cuCla.getEnumConstants());
if(cuCla.isEnum()) fail("test_4, case 073 FAILED: "+cuCla.isEnum());
try{cuCla.asSubclass(ClassHierarchyTest.class); fail("test_4, case 074 FAILED: "+cuCla.asSubclass(ClassHierarchyTest.class));}catch(Exception e){/*e.printStackTrace();*/}
if(!cuCla.getEnclosingMethod().getName().equals("m2")) fail("test_4, case 075 FAILED: "+cuCla.getEnclosingMethod().getName());
if(cuCla.getEnclosingConstructor()!=null) fail("test_4, case 076 FAILED: "+cuCla.getEnclosingConstructor());
if(cuCla.isMemberClass()) fail("test_4, case 077 FAILED: "+cuCla.isMemberClass());
if(!cuCla.isLocalClass()) fail("test_4, case 078 FAILED: "+cuCla.isLocalClass());
if(cuCla.isAnonymousClass()) fail("test_4, case 079 FAILED: "+cuCla.isAnonymousClass());
if(cuCla.isSynthetic()) fail("test_4, case 080 FAILED: "+cuCla.isSynthetic());
if(cuCla.getCanonicalName()!=null) fail("test_4, case 081 FAILED: "+cuCla.getCanonicalName());
if(!cuCla.getSimpleName().equals("Y")) fail("test_4, case 082 FAILED: "+cuCla.getSimpleName());
} catch(IllegalAccessException e) {
fail(e.getMessage());
} catch(IllegalArgumentException e) {
fail(e.getMessage());
} catch(java.lang.reflect.InvocationTargetException e) {
fail(e.getMessage());
} catch(NoSuchMethodException e) {
fail(e.getMessage());
}
}
/**
* Constructor's generalized local class
*/
public <T0> void test_16() {
@i class LC000<T1 extends T0> {
}
@i class LC001<T1 extends LC000 &java.io.Serializable &java.lang.reflect.Type &GenericDeclaration> {
public Class c;
java.lang.reflect.TypeVariable<?>[] getTypeParameters() {
return (java.lang.reflect.TypeVariable<?>[])null;
}
public <T2 extends T0, T3 extends T1, T4 extends LC000<T0>>LC001() {
@i class LC001_01 {
}
c = LC001_01.class;
}
};
LC001 lc = new LC001();
lc.getTypeParameters();
if(!lc.c.getEnclosingClass().getName().equals("java.lang.ClassHierarchyTest$4LC001")) fail("test_3, case 004 FAILED: "+lc.c.getEnclosingClass().getName());
if(lc.c.getEnumConstants()!=null) fail("test_3, case 009 FAILED: "+lc.c.getEnumConstants());
if(lc.c.isEnum()) fail("test_3, case 000 FAILED: "+lc.c.isEnum());
try{lc.c.asSubclass(ClassHierarchyTest.class); fail("test_3, case 011 FAILED: "+lc.c.asSubclass(ClassHierarchyTest.class));}catch(Exception e){/*e.printStackTrace();*/}
if(lc.c.getEnclosingMethod()!=null) fail("test_3, case 013 FAILED: "+lc.c.getEnclosingMethod().getName());
if(!lc.c.getEnclosingConstructor().getName().equals("java.lang.ClassHierarchyTest$4LC001")) fail("test_3, case 014 FAILED: "+lc.c.getEnclosingConstructor());
if(lc.c.isMemberClass()) fail("test_3, case 017 FAILED: "+lc.c.isMemberClass());
if(!lc.c.isLocalClass()) fail("test_3, case 018 FAILED: "+lc.c.isLocalClass());
if(lc.c.isAnonymousClass()) fail("test_3, case 019 FAILED: "+lc.c.isAnonymousClass());
if(lc.c.isSynthetic()) fail("test_3, case 020 FAILED: "+lc.c.isSynthetic());
if(lc.c.getCanonicalName()!=null) fail("test_3, case 021 FAILED: "+lc.c.getCanonicalName());
if(!lc.c.getSimpleName().equals("LC001_01")) fail("test_3, case 022 FAILED: "+lc.c.getSimpleName());
}
}