| /******************************************************************************* |
| * Copyright (c) 2000, 2015 IBM Corporation and others. |
| * 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: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.jdt.ui.tests.refactoring; |
| |
| import java.util.ArrayList; |
| import java.util.Collections; |
| import java.util.Iterator; |
| import java.util.Set; |
| |
| import org.eclipse.jdt.internal.corext.refactoring.rename.RefactoringScanner; |
| import org.eclipse.jdt.internal.corext.refactoring.rename.RefactoringScanner.TextMatch; |
| |
| import org.eclipse.jdt.ui.tests.refactoring.infra.TextRangeUtil; |
| |
| import junit.framework.Test; |
| import junit.framework.TestSuite; |
| |
| public class RefactoringScannerTests extends RefactoringTest{ |
| |
| private static class Position { |
| private final int fLine; |
| private final int fColumn; |
| Position(int line, int column) { |
| fLine= line; |
| fColumn= column; |
| } |
| } |
| |
| |
| public RefactoringScannerTests(String name){ |
| super(name); |
| } |
| |
| private RefactoringScanner fScanner; |
| private static Class<RefactoringScannerTests> clazz= RefactoringScannerTests.class; |
| |
| @Override |
| protected String getRefactoringPath() { |
| return "RefactoringScanner/"; |
| } |
| |
| public static Test suite() { |
| return new RefactoringTestSetup(new TestSuite(clazz)); |
| } |
| |
| @Override |
| protected void setUp() throws Exception { |
| //no need to call super.setUp(); |
| fScanner= new RefactoringScanner("TestPattern", "org.eclipse"); |
| } |
| |
| @Override |
| protected void tearDown() throws Exception { |
| //no need to call super.tearDown(); |
| } |
| |
| private void helper(String fileName, int expectedMatchCount) throws Exception{ |
| String text= getFileContents(getRefactoringPath() + fileName); |
| fScanner.scan(text); |
| assertEquals("results.length", expectedMatchCount, fScanner.getMatches().size()); |
| } |
| |
| private void helper2(String fileName, Position[] expectedMatches) throws Exception{ |
| String text= getFileContents(getRefactoringPath() + fileName); |
| fScanner.scan(text); |
| |
| ArrayList<Integer> expectedMatchesList= new ArrayList<>(expectedMatches.length); |
| for (int i= 0; i < expectedMatches.length; i++) |
| expectedMatchesList.add(new Integer(TextRangeUtil.getOffset(text, expectedMatches[i].fLine, expectedMatches[i].fColumn))); |
| ArrayList<Integer> matchesList= new ArrayList<>(); |
| Set<TextMatch> matches= fScanner.getMatches(); |
| for (Iterator<TextMatch> iter= matches.iterator(); iter.hasNext();) { |
| TextMatch element= iter.next(); |
| matchesList.add(new Integer(element.getStartPosition())); |
| } |
| Collections.sort(matchesList); |
| assertEquals("results", expectedMatchesList.toString(), matchesList.toString()); |
| } |
| |
| //-- tests |
| public void test0() throws Exception{ |
| String text= ""; |
| fScanner.scan(text); |
| assertEquals("results.length", 0, fScanner.getMatches().size()); |
| } |
| |
| public void test1() throws Exception{ |
| helper("A.java", 8); |
| } |
| |
| public void testWord1() throws Exception{ |
| helper("B.java", 6); |
| } |
| |
| public void testQualifier() throws Exception{ |
| helper2("C.java", new Position[] { |
| new Position(4, 21), |
| new Position(17, 21), |
| |
| new Position(28, 21), |
| new Position(29, 20), |
| |
| new Position(32, 20), |
| |
| new Position(37, 21), |
| new Position(38, 20), |
| }); |
| } |
| } |
| |