diff -r 000000000000 -r 9a66ca7c79fa test/tools/apt/mirror/declaration/InterfaceDecl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/apt/mirror/declaration/InterfaceDecl.java Sat Dec 01 00:00:00 2007 +0000 @@ -0,0 +1,243 @@ +/* + * Copyright 2004-2007 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + + +/* + * @test + * @bug 4853450 4993303 5004618 5010746 + * @summary InterfaceDeclaration tests + * @library ../../lib + * @compile -source 1.5 InterfaceDecl.java + * @run main InterfaceDecl + */ + + +import java.util.*; +import com.sun.mirror.declaration.*; +import com.sun.mirror.type.*; +import com.sun.mirror.util.*; + + +/** + * Sed Quis custodiet ipsos custodes? + */ +@AT1 +@AT2 +public class InterfaceDecl extends Tester { + + public static void main(String[] args) { + (new InterfaceDecl()).run(); + } + + + private InterfaceDeclaration iDecl = null; // an interface + private InterfaceDeclaration nested = null; // a nested interface + + protected void init() { + iDecl = (InterfaceDeclaration) env.getTypeDeclaration("I"); + nested = (InterfaceDeclaration) + iDecl.getNestedTypes().iterator().next(); + } + + + // Declaration methods + + @Test(result="interface") + Collection accept() { + final Collection res = new ArrayList(); + + iDecl.accept(new SimpleDeclarationVisitor() { + public void visitTypeDeclaration(TypeDeclaration t) { + res.add("type"); + } + public void visitClassDeclaration(ClassDeclaration c) { + res.add("class"); + } + public void visitInterfaceDeclaration(InterfaceDeclaration e) { + res.add("interface"); + } + public void visitAnnotationTypeDeclaration( + AnnotationTypeDeclaration e) { + res.add("annotation type"); + } + }); + return res; + } + + @Test(result="true") + boolean equals1() { + return iDecl.equals(iDecl); + } + + @Test(result="false") + boolean equals2() { + return iDecl.equals(nested); + } + + @Test(result="true") + boolean equals3() { + return iDecl.equals(env.getTypeDeclaration("I")); + } + + + @Test(result={"@AT1", "@AT2"}) + Collection getAnnotationMirrors() { + return iDecl.getAnnotationMirrors(); + } + + @Test(result=" Sed Quis custodiet ipsos custodes?\n") + String getDocComment() { + return iDecl.getDocComment(); + } + + // Check that interface has "abstract" modifier, even though it's implict + // in the source code. + @Test(result={"abstract"}) + Collection getModifiers1() { + return iDecl.getModifiers(); + } + + // Check that nested interface has "static" modifier, even though + // it's implicit in the source code and the VM doesn't set that bit. + @Test(result={"public", "abstract", "static"}) + Collection getModifiers2() { + return nested.getModifiers(); + } + + @Test(result="InterfaceDecl.java") + String getPosition() { + return iDecl.getPosition().file().getName(); + } + + @Test(result="I") + String getSimpleName1() { + return iDecl.getSimpleName(); + } + + @Test(result="Nested") + String getSimpleName2() { + return nested.getSimpleName(); + } + + + // MemberDeclaration method + + @Test(result="null") + TypeDeclaration getDeclaringType1() { + return iDecl.getDeclaringType(); + } + + @Test(result="I") + TypeDeclaration getDeclaringType2() { + return nested.getDeclaringType(); + } + + + // TypeDeclaration methods + + @Test(result={"i"}) + Collection getFields() { + return iDecl.getFields(); + } + + @Test(result={"T extends java.lang.Number"}) + Collection getFormalTypeParameters1() { + return iDecl.getFormalTypeParameters(); + } + + @Test(result={}) + Collection getFormalTypeParameters2() { + return nested.getFormalTypeParameters(); + } + + // 4993303: verify policy on Object methods being visible + @Test(result={"m()", "toString()"}) + Collection getMethods() { + return nested.getMethods(); + } + + @Test(result="I.Nested") + Collection getNestedTypes() { + return iDecl.getNestedTypes(); + } + + @Test(result="") + PackageDeclaration getPackage1() { + return iDecl.getPackage(); + } + + @Test(result="java.util") + PackageDeclaration getPackage2() { + InterfaceDeclaration set = + (InterfaceDeclaration) env.getTypeDeclaration("java.util.Set"); + return set.getPackage(); + } + + @Test(result="I") + String getQualifiedName1() { + return iDecl.getQualifiedName(); + } + + @Test(result="I.Nested") + String getQualifiedName2() { + return nested.getQualifiedName(); + } + + @Test(result="java.util.Set") + String getQualifiedName3() { + InterfaceDeclaration set = + (InterfaceDeclaration) env.getTypeDeclaration("java.util.Set"); + return set.getQualifiedName(); + } + + @Test(result="java.lang.Runnable") + Collection getSuperinterfaces() { + return iDecl.getSuperinterfaces(); + } +} + + +// Interfaces used for testing. + +/** + * Sed Quis custodiet ipsos custodes? + */ +@AT1 +@AT2 +interface I extends Runnable { + int i = 6; + void m1(); + void m2(); + void m2(int j); + + interface Nested { + void m(); + String toString(); + } +} + +@interface AT1 { +} + +@interface AT2 { +}