package test; import static org.junit.Assert.*; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.ASTParser; import org.eclipse.jdt.core.dom.ASTVisitor; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.EnumConstantDeclaration; import org.eclipse.jdt.core.dom.Message; import org.junit.Test; public class EnumTestCase { private int enumCount; @Test public void testSetSource() throws Exception { String enumString = "enum A { E1, E2; }"; ASTParser parser = ASTParser.newParser(AST.JLS3); // If the following lines are activated test passes. // Hashtable options = JavaCore.getOptions(); // options.put("org.eclipse.jdt.core.compiler.source", "1.6"); // parser.setCompilerOptions(options); parser.setKind(ASTParser.K_COMPILATION_UNIT); parser.setSource(enumString.toCharArray()); parser.setResolveBindings(false); final CompilationUnit compU = (CompilationUnit) parser .createAST((IProgressMonitor) null); compU.accept(new ASTVisitor() { @Override public boolean visit(EnumConstantDeclaration node) { enumCount++; return super.visit(node); } /* * Just to display the error message. */ @Override public void endVisit(CompilationUnit node) { Message[] messages = node.getMessages(); for (Message message : messages) { System.out.println(message.getMessage()); } super.endVisit(node); } }); assertEquals("Expected 2 enum constants", 2, enumCount); } }