Пример #1
0
        public async Task FoundFactsBasedTest(string projectName, string fileName, int line, int column, bool found, string expectedFeatureName)
        {
            using (var testProject = await this._testAssets.GetTestProjectAsync(projectName))
                using (var host = CreateOmniSharpHost(testProject.Directory, dotNetCliVersion: DotNetCliVersion.Legacy))
                {
                    var filePath   = Path.Combine(testProject.Directory, fileName);
                    var solution   = host.Workspace.CurrentSolution;
                    var documentId = solution.GetDocumentIdsWithFilePath(filePath).First();
                    var document   = solution.GetDocument(documentId);

                    var semanticModel = await document.GetSemanticModelAsync();

                    var text     = semanticModel.SyntaxTree.GetText();
                    var position = text.Lines.GetPosition(new LinePosition(line, column));

                    var root = semanticModel.SyntaxTree.GetRoot();
                    var methodDeclaration = root.DescendantNodes()
                                            .OfType <MethodDeclarationSyntax>()
                                            .Single(node => node.Span.Contains(position));

                    var methodSymbol = semanticModel.GetDeclaredSymbol(methodDeclaration);

                    var discover = new TestFeaturesDiscover();
                    var features = discover.Discover(methodDeclaration, semanticModel);

                    if (found)
                    {
                        var feature = features.Single();
                        Assert.Equal(expectedFeatureName, feature.Name);

                        var symbolName = methodSymbol.ToDisplayString();
                        symbolName = symbolName.Substring(0, symbolName.IndexOf('('));
                        Assert.Equal(symbolName, feature.Data);
                    }
                    else
                    {
                        Assert.Empty(features);
                    }
                }
        }
        public async Task FoundFactsBasedTest(string projectName, string filename, int line, int column, bool found)
        {
            var sampleProject = TestsContext.Default.GetTestSample(projectName);
            var workspace     = WorkspaceHelper.Create(sampleProject).FirstOrDefault();

            var docId = workspace.CurrentSolution.GetDocumentIdsWithFilePath(Path.Combine(sampleProject, filename)).First();
            var doc   = workspace.CurrentSolution.GetDocument(docId);

            var root = await doc.GetSyntaxRootAsync();

            var text = await doc.GetTextAsync();

            var semanticModel = await doc.GetSemanticModelAsync();

            var position   = text.Lines.GetPosition(new LinePosition(line, column));
            var syntaxNode = root.DescendantNodes()
                             .OfType <MethodDeclarationSyntax>()
                             .Single(node => node.Span.Contains(position));

            var symbol   = semanticModel.GetDeclaredSymbol(syntaxNode);
            var discover = new TestFeaturesDiscover();
            var features = discover.Discover(syntaxNode, await doc.GetSemanticModelAsync());

            if (found)
            {
                var feature = features.Single();
                Assert.Equal("XunitTestMethod", feature.Name);

                var symbolName = symbol.ToDisplayString();
                symbolName = symbolName.Substring(0, symbolName.IndexOf('('));
                Assert.Equal(symbolName, feature.Data);
            }
            else
            {
                Assert.Empty(features);
            }
        }