void TestCollectFiles(Project project, IEnumerable <IEntity> entities, IEnumerable <Tuple <Project, IEnumerable <FilePath> > > expected) { VerifyResult(SearchCollector.CollectFiles(project, entities).ToList(), expected.ToList()); }
static IEnumerable <SearchCollector.FileList> GetFileNames(Solution solution, object node, RefactoryScope scope, IProgressMonitor monitor, IEnumerable <object> searchNodes) { if (!(node is IField) && node is IVariable || scope == RefactoryScope.File) { string fileName; if (node is IEntity) { fileName = ((IEntity)node).Region.FileName; } else if (node is ITypeParameter) { fileName = ((ITypeParameter)node).Region.FileName; } else { fileName = ((IVariable)node).Region.FileName; } var fileList = GetFileList(fileName); if (fileList != null) { yield return(fileList); } yield break; } if (node is ITypeParameter) { var typeParameter = node as ITypeParameter; if (typeParameter.Owner != null) { yield return(SearchCollector.CollectDeclaringFiles(typeParameter.Owner)); yield break; } var fileList = GetFileList(typeParameter.Region.FileName); if (fileList != null) { yield return(fileList); } yield break; } var compilationProvider = (ICompilationProvider)node; switch (scope) { case RefactoryScope.DeclaringType: var entity = (IEntity)compilationProvider; if (entity.DeclaringTypeDefinition != null) { yield return(SearchCollector.CollectDeclaringFiles(entity.DeclaringTypeDefinition)); } else { yield return(SearchCollector.CollectDeclaringFiles(entity)); } break; case RefactoryScope.Project: var sourceProject = TypeSystemService.GetProject(compilationProvider.Compilation.MainAssembly.UnresolvedAssembly.Location); foreach (var file in SearchCollector.CollectFiles(sourceProject, searchNodes)) { yield return(file); } break; default: var files = SearchCollector.CollectFiles(solution, searchNodes).ToList(); if (monitor != null) { monitor.BeginTask(GettextCatalog.GetString("Searching for references in solution..."), files.Count); } foreach (var file in files) { if (monitor != null && monitor.IsCancelRequested) { yield break; } yield return(file); if (monitor != null) { monitor.Step(1); } } if (monitor != null) { monitor.EndTask(); } break; } }