/******************************************************************************* * Copyright (c) 2005-2012 eBay Inc. * 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 * *******************************************************************************/ package org.eclipse.vjet.eclipse.core.test.parser; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import org.eclipse.dltk.mod.core.IField; import org.eclipse.dltk.mod.core.IModelElement; import org.eclipse.dltk.mod.core.ModelException; import org.eclipse.dltk.mod.core.search.SearchEngine; import org.eclipse.dltk.mod.core.search.SearchPattern; import org.eclipse.vjet.eclipse.core.IJSField; import org.eclipse.vjet.eclipse.core.IJSSourceModule; import org.eclipse.vjet.eclipse.core.search.SearchQueryParameters; import org.eclipse.vjet.eclipse.core.search.VjoMatch; import org.eclipse.vjet.eclipse.core.search.VjoSearchEngine; import org.eclipse.vjet.eclipse.core.test.contentassist.TestConstants; public class AbstractSearchModelTests extends AbstractVjoModelTests{ protected void basicTest(IJSSourceModule module, int matches, int limitTo, int searchScope, IModelElement element) throws ModelException { List<VjoMatch> results = new ArrayList<VjoMatch>(); SearchQueryParameters params = new SearchQueryParameters(); createSearchParams(params, module, element, searchScope, limitTo); VjoSearchEngine c = new VjoSearchEngine(); results = c.search(params); VjoMatch[] vjoMatchs = removeDuplicates(results); //assertNotNull("Empty result", results); assertEquals("Wrong number of matches", matches, vjoMatchs.length); } protected VjoMatch[] removeDuplicates(List<VjoMatch> matches){ Set<VjoMatch> matchSet=new HashSet<VjoMatch>(); matchSet.addAll(matches); return (VjoMatch[]) matchSet.toArray(new VjoMatch[matchSet.size()]); } protected void createSearchParams(SearchQueryParameters params, IJSSourceModule module, IModelElement element, int searchScope, int limitTo) { SearchPattern pattern = null; params.setElement(element); params.setElementSpecification(true); params.setLimitTo(searchScope); params.setScope(SearchEngine.createSearchScope(module.getScriptProject())); pattern = SearchPattern.createPattern(element, limitTo | searchScope); assertNotNull("Invalid search pattern", pattern); params.setPattern(pattern); } protected static List<IJSField> findFieldByName(IField[] fields, String name) { List<IJSField> foundFields = new ArrayList<IJSField>(); for (IModelElement modelElement : fields) { if (name.equals(modelElement.getElementName())) { foundFields.add((IJSField) modelElement); } } return foundFields; } protected String getProjectName() { return TestConstants.PROJECT_NAME_VJETPROJECT; } }