| /******************************************************************************* |
| * Copyright (c) 2009, 2017 xored software, Inc. 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: |
| * xored software, Inc. - initial API and Implementation (Alex Panchenko) |
| *******************************************************************************/ |
| package org.eclipse.dltk.tcl.core.tests.model; |
| |
| import static org.junit.Assert.assertEquals; |
| import static org.junit.Assert.assertNotNull; |
| |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.dltk.core.IDLTKLanguageToolkit; |
| import org.eclipse.dltk.core.search.IDLTKSearchConstants; |
| import org.eclipse.dltk.core.search.IDLTKSearchScope; |
| import org.eclipse.dltk.core.search.SearchEngine; |
| import org.eclipse.dltk.core.search.SearchParticipant; |
| import org.eclipse.dltk.core.search.SearchPattern; |
| import org.eclipse.dltk.core.tests.IDLTKSearchConstantsForTests; |
| import org.eclipse.dltk.core.tests.ProjectSetup; |
| import org.eclipse.dltk.core.tests.WorkspaceSetup; |
| import org.eclipse.dltk.core.tests.model.TestSearchResults; |
| import org.junit.ClassRule; |
| import org.junit.Test; |
| |
| public class SearchVarTests implements IDLTKSearchConstants { |
| |
| public static final WorkspaceSetup WORKSPACE = new WorkspaceSetup( |
| Activator.PLUGIN_ID); |
| @ClassRule |
| public static final ProjectSetup PROJECT = new ProjectSetup(WORKSPACE, |
| "SearchVar"); |
| |
| @Test |
| public void testSearchVariable() throws CoreException { |
| final TestSearchResults results = search("name", FIELD, REFERENCES); |
| assertEquals(1, results.size()); |
| results.assertMethod("hello"); |
| } |
| |
| @Test |
| public void testSearchVariableSubstitution() throws CoreException { |
| final TestSearchResults results = search("name2", FIELD, REFERENCES); |
| assertEquals(1, results.size()); |
| results.assertMethod("hello2"); |
| } |
| |
| public static TestSearchResults search(String patternString, int searchFor, |
| int limitTo) throws CoreException { |
| final IDLTKSearchScope scope = SearchEngine |
| .createSearchScope(PROJECT.getScriptProject()); |
| int matchRule = IDLTKSearchConstantsForTests.EXACT_RULE; |
| if (patternString.indexOf('*') != -1 |
| || patternString.indexOf('?') != -1) { |
| matchRule |= SearchPattern.R_PATTERN_MATCH; |
| } |
| final IDLTKLanguageToolkit toolkit = scope.getLanguageToolkit(); |
| final SearchPattern pattern = SearchPattern.createPattern(patternString, |
| searchFor, limitTo, matchRule, toolkit); |
| assertNotNull("Pattern should not be null", pattern); |
| final TestSearchResults results = new TestSearchResults(); |
| final SearchParticipant[] participants = new SearchParticipant[] { |
| SearchEngine.getDefaultSearchParticipant() }; |
| new SearchEngine().search(pattern, participants, scope, results, null); |
| return results; |
| } |
| |
| } |