package org.eclipse.dltk.xotcl.testing.internal.xounit; import org.eclipse.dltk.ast.ASTNode; import org.eclipse.dltk.ast.ASTVisitor; import org.eclipse.dltk.ast.declarations.MethodDeclaration; import org.eclipse.dltk.ast.declarations.ModuleDeclaration; import org.eclipse.dltk.core.DLTKCore; import org.eclipse.dltk.tcl.core.TclParseUtil; import org.eclipse.dltk.testing.AbstractTestingElementResolver; import org.eclipse.dltk.testing.ITestingElementResolver; import org.eclipse.dltk.xotcl.core.ast.xotcl.XOTclMethodDeclaration; public class XOUnitMemberResolver extends AbstractTestingElementResolver implements ITestingElementResolver { protected ASTNode findNode(final String testName, final ModuleDeclaration decl, String method) { final ASTNode result[] = new ASTNode[1]; final String tname = testName.replaceAll("\\.", "::"); try { decl.traverse(new ASTVisitor() { public boolean visit(MethodDeclaration s) throws Exception { if (s instanceof XOTclMethodDeclaration && s.getName().startsWith("test")) { String fqn = TclParseUtil.getElementFQN(s, "::", decl); if (!fqn.startsWith("::")) { fqn = "::" + fqn; } if (fqn.equals(tname)) { result[0] = s; return false; } } return super.visit(s); } }); } catch (Exception e) { if (DLTKCore.DEBUG) { e.printStackTrace(); } } return result[0]; } }