blob: 5b65090ffecab948f4e6f56ece2d11127e28d205 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006 BEA Systems, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* sbandow@bea.com - initial API and implementation
*
*******************************************************************************/
package org.eclipse.jdt.apt.tests;
import java.io.File;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IPath;
import org.eclipse.jdt.apt.core.internal.util.ScannerUtil;
public class ScannerTests extends APTTestBase {
public ScannerTests(final String name) {
super( name );
}
public static Test suite() {
return new TestSuite( ScannerTests.class );
}
public void testHasAnnotation() throws Exception
{
IProject project = env.getProject( getProjectName() );
IPath srcRoot = getSourcePath();
String code =
"package test;" + "\n" +
"import org.eclipse.jdt.apt.tests.annotations.noop.NoOpAnnotation;" + "\n" +
"@NoOpAnnotation" + "\n" +
"public class Has" + "\n" +
"{" + "\n" +
"}";
env.addClass(srcRoot, "test", "Has", code);
IFile file = project.getFile(P + "src" + P + "test" + P + "Has.java");
assertTrue("Expected annotation instance", ScannerUtil.hasAnnotationInstance(file));
assertTrue("Expected annotation instance", ScannerUtil.hasAnnotationInstance(code.toCharArray()));
}
public void testHasNoAnnotation() throws Exception
{
IProject project = env.getProject( getProjectName() );
IPath srcRoot = getSourcePath();
String code =
"package test;" + "\n" +
"public class No" + "\n" +
"{" + "\n" +
"}";
env.addClass(srcRoot, "test", "No", code);
IFile file = project.getFile(P + "src" + P + "test" + P + "No.java");
assertFalse("Expected no annotation instance", ScannerUtil.hasAnnotationInstance(file));
assertFalse("Expected no annotation instance", ScannerUtil.hasAnnotationInstance(code.toCharArray()));
}
public void testHasAnnotationInComment() throws Exception
{
IProject project = env.getProject( getProjectName() );
IPath srcRoot = getSourcePath();
String code =
"package test;" + "\n" +
"/**" + "\n" +
" * @author Joe Bob" + "\n" +
" */" + "\n" +
"public class Comments" + "\n" +
"{" + "\n" +
" // @Foo" + "\n" +
" /* @Bar */" + "\n" +
"}";
env.addClass(srcRoot, "test", "Comments", code);
IFile file = project.getFile(P + "src" + P + "test" + P + "Comments.java");
assertFalse("Expected no annotation instance", ScannerUtil.hasAnnotationInstance(file));
assertFalse("Expected no annotation instance", ScannerUtil.hasAnnotationInstance(code.toCharArray()));
}
/*
* Test currently disabled due to Bugzilla 140232
* https://bugs.eclipse.org/bugs/show_bug.cgi?id=140232
*/
public void _testHasAnnotationDeclaration() throws Exception
{
IProject project = env.getProject( getProjectName() );
IPath srcRoot = getSourcePath();
String code =
"package test;" + "\n" +
"public @interface AnnoDecl" + "\n" +
"{" + "\n" +
"}";
env.addClass(srcRoot, "test", "AnnoDecl", code);
IFile file = project.getFile(P + "src" + P + "test" + P + "AnnoDecl.java");
assertFalse("Expected no annotation instance", ScannerUtil.hasAnnotationInstance(file));
assertFalse("Expected no annotation instance", ScannerUtil.hasAnnotationInstance(code.toCharArray()));
}
private String P = File.separator;
}