private void AssertTagsOnBracesOrSemicolonsTokens(string contents, int[] tokenIndices, CSharpParseOptions options = null) { using (var workspace = CSharpWorkspaceFactory.CreateWorkspaceFromFile(contents, options)) { var document = workspace.CurrentSolution.GetDocument(workspace.Documents.First().Id); var spans = new CSharpLineSeparatorService().GetLineSeparatorsAsync(document, document.GetSyntaxTreeAsync().Result.GetRoot().FullSpan, CancellationToken.None).Result; var tokens = document.GetCSharpSyntaxRootAsync(CancellationToken.None).Result.DescendantTokens().Where(t => t.Kind() == SyntaxKind.CloseBraceToken || t.Kind() == SyntaxKind.SemicolonToken); Assert.Equal(tokenIndices.Length, spans.Count()); int i = 0; foreach (var span in spans.OrderBy(t => t.Start)) { var expectedToken = tokens.ElementAt(tokenIndices[i]); var expectedSpan = expectedToken.Span; var message = string.Format("Expected to match curly {0} at span {1}. Actual span {2}", tokenIndices[i], expectedSpan, span); Assert.True(expectedSpan == span, message); ++i; } } }
private void AssertTagsOnBracesOrSemicolonsTokens(string contents, int[] tokenIndices, CSharpParseOptions options = null) { using (var workspace = CSharpWorkspaceFactory.CreateWorkspaceFromFile(contents, options)) { var document = workspace.CurrentSolution.GetDocument(workspace.Documents.First().Id); var spans = new CSharpLineSeparatorService().GetLineSeparatorsAsync(document, document.GetSyntaxTreeAsync().Result.GetRoot().FullSpan, CancellationToken.None).Result; var tokens = document.GetSyntaxRootAsync(CancellationToken.None).Result.DescendantTokens().Where(t => t.Kind() == SyntaxKind.CloseBraceToken || t.Kind() == SyntaxKind.SemicolonToken); Assert.Equal(tokenIndices.Length, spans.Count()); int i = 0; foreach (var span in spans.OrderBy(t => t.Start)) { var expectedToken = tokens.ElementAt(tokenIndices[i]); var expectedSpan = expectedToken.Span; var message = string.Format("Expected to match curly {0} at span {1}. Actual span {2}", tokenIndices[i], expectedSpan, span); Assert.True(expectedSpan == span, message); ++i; } } }