/* * 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 5031168 * @summary PackageDeclaration tests * @library ../../lib * @compile -source 1.5 PackageDecl.java * @run main/othervm PackageDecl */ import java.io.File; import java.util.*; import com.sun.mirror.declaration.*; import com.sun.mirror.type.*; import com.sun.mirror.util.*; import pkg1.pkg2.*; /** * Sed Quis custodiet ipsos custodes? */ public class PackageDecl extends Tester { public PackageDecl() { super(System.getProperty("test.src", ".") + File.separator + "pkg1" + File.separator + "package-info.java"); } public static void main(String[] args) { (new PackageDecl()).run(); } private PackageDeclaration pkg1 = null; // a package private PackageDeclaration pkg2 = null; // a subpackage protected void init() { pkg1 = env.getPackage("pkg1"); pkg2 = env.getPackage("pkg1.pkg2"); } // Declaration methods @Test(result="package") Collection<String> accept() { final Collection<String> res = new ArrayList<String>(); pkg1.accept(new SimpleDeclarationVisitor() { public void visitTypeDeclaration(TypeDeclaration t) { res.add("type"); } public void visitPackageDeclaration(PackageDeclaration p) { res.add("package"); } }); return res; } @Test(result={"@pkg1.AnAnnoType"}) Collection<AnnotationMirror> getAnnotationMirrors() { return pkg1.getAnnotationMirrors(); } @Test(result=" Herein lieth the package comment.\n" + " A doc comment it be, and wonderous to behold.\n") String getDocCommentFromPackageInfoFile() { return pkg1.getDocComment(); } @Test(result="\nHerein lieth the package comment.\n" + "An HTML file it be, and wonderous to behold.\n\n") @Ignore("Not yet supported") String getDocCommentFromHtmlFile() { return pkg2.getDocComment(); } @Test(result={}) Collection<Modifier> getModifiers() { return pkg1.getModifiers(); } @Test(result="null") SourcePosition getPosition() { return thisClassDecl.getPackage().getPosition(); } @Test(result="package-info.java") String getPositionFromPackageInfoFile() { return pkg1.getPosition().file().getName(); } @Test(result="pkg1/pkg2/package.html") @Ignore("Not yet supported") String getPositionFromHtmlFile() { return pkg2.getPosition().file().getName() .replace(File.separatorChar, '/'); } @Test(result="pkg1") String getSimpleName1() { return pkg1.getSimpleName(); } @Test(result="pkg2") String getSimpleName2() { return pkg2.getSimpleName(); } // PackageDeclaration methods @Test(result="pkg1.AnAnnoType") Collection<AnnotationTypeDeclaration> getAnnotationTypes() { return pkg1.getAnnotationTypes(); } @Test(result={"pkg1.AClass", "pkg1.AnEnum"}) Collection<ClassDeclaration> getClasses() { return pkg1.getClasses(); } @Test(result="pkg1.AnEnum") Collection<EnumDeclaration> getEnums() { return pkg1.getEnums(); } @Test(result={"pkg1.AnInterface", "pkg1.AnAnnoType"}) Collection<InterfaceDeclaration> getInterfaces() { return pkg1.getInterfaces(); } @Test(result="pkg1") String getQualifiedName1() { return pkg1.getQualifiedName(); } @Test(result="pkg1.pkg2") String getQualifiedName2() { return pkg2.getQualifiedName(); } }