public void RoslynDefinitionFinder_Basic() { // Add references in the MSTest directory itself List <string> referencePaths = new List <string>(); referencePaths.Add(typeof(object).Assembly.Location); referencePaths.AddRange(Directory.GetFiles(".", "*.dll")); referencePaths.AddRange(Directory.GetFiles(".", "*.exe")); RoslynReferencesWrapper references = new RoslynReferencesWrapper(referencePaths); RoslynDefinitionFinder finder = new RoslynDefinitionFinder(GetSampleDefinitionPath(), references); // Return Type FindAndVerifyReference("private static RsDs|Signature GetAssemblyDebugSignature(string binaryFilePath)", s_rsDsSignatureNamespace + ".RsDsSignature", finder); // Method Argument Type FindAndVerifyReference("private static RsDsSignature GetAssemblyDebugSignature(st|ring binaryFilePath)", "System.String", finder); // var declaration FindAndVerifyReference("va|r stream = new FileStream(binaryFilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)", "System.IO.FileStream", finder); // Constructor [on argument list] FindAndVerifyReference("var stream = new FileStream|(binaryFilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)", "System.IO.FileStream.FileStream(string, FileMode, FileAccess, FileShare)", finder); // Constructor [on type name] FindAndVerifyReference("var stream = new FileStr|eam(binaryFilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)", "System.IO.FileStream.FileStream(string, FileMode, FileAccess, FileShare)", finder); // Enum type FindAndVerifyReference("var stream = new FileStream(binaryFilePath, File|Mode.Open, FileAccess.Read, FileShare.ReadWrite)", "System.IO.FileMode", finder); // Enum item FindAndVerifyReference("var stream = new FileStream(binaryFilePath, FileMode.Op|en, FileAccess.Read, FileShare.ReadWrite)", "System.IO.FileMode.Open", finder); // Static Type in static call FindAndVerifyReference("return |Assembly.ReadRsDsSignature(stream);", s_assemblyNamespace + ".Assembly", finder); // Static Method in call FindAndVerifyReference("return Assembly.R|eadRsDsSignature(stream);", s_assemblyNamespace + ".Assembly.ReadRsDsSignature(Stream)", finder); // Instance type declaration FindAndVerifyReference("R|sDsSignature signature", s_rsDsSignatureNamespace + ".RsDsSignature", finder); // Instance call FindAndVerifyReference("signature.ToS|tring()", s_rsDsSignatureNamespace + ".RsDsSignature.ToString", finder); // Instance property call FindAndVerifyReference("signature.Gu|id.ToString()", s_rsDsSignatureNamespace + ".RsDsSignature.Guid", finder); // Instance field reference FindAndVerifyReference("Path.Combine(_ca|chePath,", s_sampleDefinitionsNamespace + ".SampleDefinitions._cachePath", finder); // Statement [not a method with a return value] FindAndVerifyReference("SetCache|Path(Environment.ExpandEnvironmentVariables(", s_sampleDefinitionsNamespace + ".SampleDefinitions.SetCachePath(string)", finder); }
public void FindAndVerifyReference(string searchTextWithCursor, string expectedFullyQualifiedName, RoslynDefinitionFinder finder) { string foundFullyQualifiedName = ""; int lineNumber, charInLine; if (TryFindTextWithCursor(searchTextWithCursor, out lineNumber, out charInLine)) { MemberQuery query = finder.BuildQueryForMemberUsedAt(lineNumber, charInLine); if (query != null) { foundFullyQualifiedName = query.SymbolName; if (!string.IsNullOrEmpty(query.Parameters)) { foundFullyQualifiedName += "(" + query.Parameters + ")"; } } } Assert.AreEqual(expectedFullyQualifiedName, foundFullyQualifiedName); }