コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }