static ParsedDocument Test(string code) { var parser = new CSharpFoldingParser(); var sb = new StringBuilder(); var openStack = new Stack <DocumentLocation> (); int line = 1; int col = 1; var foldingList = new List <DocumentRegion> (); for (int i = 0; i < code.Length; i++) { char ch = code [i]; switch (ch) { case '[': openStack.Push(new DocumentLocation(line, col)); break; case ']': foldingList.Add(new DocumentRegion(openStack.Pop(), new DocumentLocation(line, col))); break; default: if (ch == '\n') { line++; col = 1; } else { col++; } sb.Append(ch); break; } } var doc = parser.Parse("a.cs", sb.ToString()); var generatedFoldings = doc.GetFoldingsAsync().Result; Assert.AreEqual(foldingList.Count, generatedFoldings.Count, "Folding count differs."); foreach (var generated in generatedFoldings) { Assert.IsTrue(foldingList.Any(f => f == generated.Region), "fold not found:" + generated.Region); } return(doc); }
static ParsedDocument GetDocument(string code) { var parser = new CSharpFoldingParser(); return(parser.Parse("a.cs", code)); }