blob: de894d3ee6a24d105f530acfebdef22442349c7b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2019 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.core.tests.dom;
import junit.framework.Test;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.SourceRange;
import org.eclipse.jdt.core.compiler.CharOperation;
import org.eclipse.jdt.core.dom.AST;
import org.eclipse.jdt.core.dom.ASTNode;
import org.eclipse.jdt.core.dom.NodeFinder;
public class ASTNodeFinderTest extends ConverterTestSetup {
ICompilationUnit workingCopy;
@Override
public void setUpSuite() throws Exception {
super.setUpSuite();
this.ast = AST.newAST(getJLS3(), false);
}
public ASTNodeFinderTest(String name) {
super(name);
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
if (this.workingCopy != null) {
this.workingCopy.discardWorkingCopy();
this.workingCopy = null;
}
}
static {
// TESTS_NUMBERS = new int[] { 9 };
}
public static Test suite() {
return buildModelTestSuite(ASTNodeFinderTest.class);
}
public void test0001() throws JavaModelException {
this.workingCopy = getWorkingCopy("/NodeFinder/src/test0001/Test.java", false);
String contents =
"package test0001;\n" +
"import java.util.*;\n" +
"public class Test {\n" +
" public static void main(String[] args) {\n" +
" System.out.println(\"Hello\" + \" world\");\n" +
" }\n" +
"}";
ASTNode result = buildAST(
contents,
this.workingCopy);
char[] source = contents.toCharArray();
char[] className = "Test".toCharArray();
int index = CharOperation.indexOf(className, source, true);
int index2 = CharOperation.indexOf('{', source, index + 1, source.length);
ASTNode node = NodeFinder.perform(result, index, index2 - index + 1);
NodeFinder nodeFinder = new NodeFinder(result, index, index2 - index + 1);
assertTrue("Different node", nodeFinder.getCoveringNode() == node);
}
public void test0002() throws JavaModelException {
this.workingCopy = getWorkingCopy("/NodeFinder/src/test0001/Test.java", false);
String contents =
"package test0001;\n" +
"import java.util.*;\n" +
"public class Test {\n" +
" public static void main(String[] args) {\n" +
" System.out.println(\"Hello\" + \" world\");\n" +
" }\n" +
"}";
ASTNode result = buildAST(
contents,
this.workingCopy);
char[] source = contents.toCharArray();
char[] className = "Test".toCharArray();
int index = CharOperation.indexOf(className, source, true);
ASTNode node = NodeFinder.perform(result, index, className.length);
NodeFinder nodeFinder = new NodeFinder(result, index, className.length);
assertTrue("Different node", nodeFinder.getCoveredNode() == node);
}
public void test0003() throws JavaModelException {
this.workingCopy = getWorkingCopy("/NodeFinder/src/test0001/Test.java", false);
String contents =
"package test0001;\n" +
"import java.util.*;\n" +
"public class Test {\n" +
" public static void main(String[] args) {\n" +
" System.out.println(\"Hello\" + \" world\");\n" +
" }\n" +
"}";
ASTNode result = buildAST(
contents,
this.workingCopy);
char[] source = contents.toCharArray();
char[] className = "Test".toCharArray();
int index = CharOperation.indexOf(className, source, true);
int index2 = CharOperation.indexOf('{', source, index + 1, source.length);
SourceRange range = new SourceRange(index, index2 - index + 1);
ASTNode node = NodeFinder.perform(result, range);
NodeFinder nodeFinder = new NodeFinder(result, index, index2 - index + 1);
assertTrue("Different node", nodeFinder.getCoveringNode() == node);
}
public void test0004() throws JavaModelException {
this.workingCopy = getWorkingCopy("/NodeFinder/src/test0001/Test.java", false);
String contents =
"package test0001;\n" +
"import java.util.*;\n" +
"public class Test {\n" +
" public static void main(String[] args) {\n" +
" System.out.println(\"Hello\" + \" world\");\n" +
" }\n" +
"}";
ASTNode result = buildAST(
contents,
this.workingCopy);
char[] source = contents.toCharArray();
char[] className = "Test".toCharArray();
int index = CharOperation.indexOf(className, source, true);
SourceRange range = new SourceRange(index, className.length);
ASTNode node = NodeFinder.perform(result, range);
NodeFinder nodeFinder = new NodeFinder(result, index, className.length);
assertTrue("Different node", nodeFinder.getCoveredNode() == node);
}
public void test0005() throws JavaModelException {
this.workingCopy = getWorkingCopy("/NodeFinder/src/test0001/Test.java", false);
String contents =
"package test0001;\n" +
"import java.util.*;\n" +
"public class Test {\n" +
" public static void main(String[] args) {\n" +
" System.out.println(\"Hello\" + \" world\");\n" +
" }\n" +
"}";
ASTNode result = buildAST(
contents,
this.workingCopy);
char[] source = contents.toCharArray();
char[] className = "Test".toCharArray();
int index = CharOperation.indexOf(className, source, true);
int index2 = CharOperation.indexOf('{', source, index + 1, source.length);
ASTNode node = NodeFinder.perform(result, index, index2 - index + 1, this.workingCopy);
NodeFinder nodeFinder = new NodeFinder(result, index, index2 - index + 1);
assertTrue("Different node", nodeFinder.getCoveringNode() == node);
}
public void test0006() throws JavaModelException {
this.workingCopy = getWorkingCopy("/NodeFinder/src/test0001/Test.java", false);
String contents =
"package test0001;\n" +
"import java.util.*;\n" +
"public class Test {\n" +
" public static void main(String[] args) {\n" +
" System.out.println(\"Hello\" + \" world\");\n" +
" }\n" +
"}";
ASTNode result = buildAST(
contents,
this.workingCopy);
char[] source = contents.toCharArray();
char[] className = "Test".toCharArray();
int index = CharOperation.indexOf(className, source, true);
ASTNode node = NodeFinder.perform(result, index, className.length, this.workingCopy);
NodeFinder nodeFinder = new NodeFinder(result, index, className.length);
assertTrue("Different node", nodeFinder.getCoveredNode() == node);
}
public void test0007() throws JavaModelException {
this.workingCopy = getWorkingCopy("/NodeFinder/src/test0001/Test.java", false);
String contents =
"package test0001;\n" +
"import java.util.*;\n" +
"public class Test {\n" +
" public static void main(String[] args) {\n" +
" System.out.println(\"Hello\" + \" world\");\n" +
" }\n" +
"}";
ASTNode result = buildAST(
contents,
this.workingCopy);
char[] source = contents.toCharArray();
char[] className = "Test".toCharArray();
int index = CharOperation.indexOf(className, source, true);
ASTNode node = NodeFinder.perform(result, index - 1, 1);
NodeFinder nodeFinder = new NodeFinder(result, index - 1, 1);
assertNull("No covered node", nodeFinder.getCoveredNode());
assertNotNull("Got a covering node", node);
}
public void test0008() throws JavaModelException {
this.workingCopy = getWorkingCopy("/NodeFinder/src/test0001/Test.java", false);
String contents =
"package test0001;\n" +
"import java.util.*;\n" +
"public class Test {\n" +
" public static void main(String[] args) {\n" +
" System.out.println(\"Hello\" + \" world\");\n" +
" }\n" +
"}";
ASTNode result = buildAST(
contents,
this.workingCopy);
char[] source = contents.toCharArray();
char[] className = "Test".toCharArray();
int index = CharOperation.indexOf(className, source, true);
SourceRange range = new SourceRange(index - 1, 1);
ASTNode node = NodeFinder.perform(result, range);
NodeFinder nodeFinder = new NodeFinder(result, index - 1, 1);
assertNull("No covered node", nodeFinder.getCoveredNode());
assertNotNull("Got a covering node", node);
}
public void test0009() throws JavaModelException {
this.workingCopy = getWorkingCopy("/NodeFinder/src/test0001/Test.java", false);
String contents =
"package test0001;\n" +
"import java.util.*;\n" +
"public class Test {\n" +
" public static void main(String[] args) {\n" +
" System.out.println(\"Hello\" + \" world\");\n" +
" }\n" +
"}";
ASTNode result = buildAST(
contents,
this.workingCopy);
char[] source = contents.toCharArray();
char[] className = "Test".toCharArray();
int index = CharOperation.indexOf(className, source, true);
ASTNode node = NodeFinder.perform(result, index - 1, 1, this.workingCopy);
NodeFinder nodeFinder = new NodeFinder(result, index - 1, 1);
assertNull("No covered node", nodeFinder.getCoveredNode());
assertNull("No covering node", node);
}
}