Пример #1
0
        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);
        }
Пример #2
0
        static ParsedDocument GetDocument(string code)
        {
            var parser = new CSharpFoldingParser();

            return(parser.Parse("a.cs", code));
        }