public void GetSemanticTokens_Razor_OnlyDifferences_NewLines()
        {
            var txt          = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1></test1>";
            var expectedData = new List <uint> {
                1, 1, 5, 0, 0, //line, character pos, length, tokenType, modifier
                0, 8, 5, 0, 0
            };

            var previousResultId = AssertSemanticTokens(txt, expectedData, isRazor: false, out var service);

            var newTxt = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1></test1>{Environment.NewLine}" +
                         $"<test1></test1>";
            var newExpectedData = new SemanticTokensEditCollection
            {
                Edits = new List <SemanticTokensEdit> {
                    new SemanticTokensEdit
                    {
                        Start = 10,
                        Data  = new uint[] {
                            1, 1, 5, 0, 0,
                            0, 8, 5, 0, 0,
                        },
                        DeleteCount = 0,
                    }
                }
            };
            var newResultId = AssertSemanticTokenEdits(newTxt, newExpectedData, isRazor: false, previousResultId: previousResultId, out _, service);

            Assert.NotEqual(previousResultId, newResultId);
        }
        public void GetSemanticTokens_Razor_SomeTagHelpers_ThenNone()
        {
            var txt          = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1></test1>";
            var expectedData = new uint[] {
                1, 1, 5, 0, 0,
                0, 8, 5, 0, 0,
            };

            var previousResultId = AssertSemanticTokens(txt, expectedData, isRazor: false, out var service);

            var newTxt          = $"addTagHelper *, TestAssembly{Environment.NewLine}<p></p>";
            var newExpectedData = new SemanticTokensEditCollection
            {
                Edits = new List <SemanticTokensEdit>
                {
                    new SemanticTokensEdit
                    {
                        Start       = 0,
                        Data        = Array.Empty <uint>(),
                        DeleteCount = 10,
                    }
                }
            };

            var newResultId = AssertSemanticTokenEdits(newTxt, newExpectedData, isRazor: false, previousResultId: previousResultId, out var _, service);

            Assert.NotEqual(previousResultId, newResultId);
        }
Пример #3
0
        public static SemanticTokensOrSemanticTokensEdits ComputeSemanticTokensEdits(
            SemanticTokens newTokens,
            IReadOnlyList <uint> previousResults)
        {
            var differ = new SemanticTokensEditsDiffer(previousResults.ToArray(), newTokens.Data);
            var diffs  = differ.ComputeDiff();
            var edits  = differ.ProcessEdits(diffs);
            var result = new SemanticTokensEditCollection
            {
                ResultId = newTokens.ResultId,
                Edits    = edits,
            };

            return(result);
        }
        public void GetSemanticTokens_Razor_CoalesceDeleteAndAdd()
        {
            var txt          = $"@addTagHelper *, TestAssembly{Environment.NewLine}<test1 />";
            var expectedData = new List <uint>
            {
                1, 1, 5, 0, 0, //line, character pos, length, tokenType, modifier
            };

            var previousResultId = AssertSemanticTokens(txt, expectedData, isRazor: false, out var service);

            var newTxt          = $"@addTagHelper *, TestAssembly{Environment.NewLine}{Environment.NewLine}  <p @minimized></p>";
            var newExpectedData = new SemanticTokensEditCollection {
                Edits = new SemanticTokensEdit[] {
                    new SemanticTokensEdit
                    {
                        Start       = 0,
                        DeleteCount = 0,
                        Data        = new List <uint> {
                            2, 5,
                        },
                    },
                    new SemanticTokensEdit
                    {
                        Start       = 1,
                        DeleteCount = 0,
                        Data        = new List <uint>
                        {
                            2, 0, 0,
                        },
                    },
                    new SemanticTokensEdit
                    {
                        Start       = 2,
                        DeleteCount = 2,
                        Data        = new List <uint>
                        {
                            9, 4,
                        }
                    }
                }
            };

            var newResultId = AssertSemanticTokenEdits(newTxt, newExpectedData, isRazor: true, previousResultId: previousResultId, out var _, service);

            Assert.NotEqual(previousResultId, newResultId);
        }
        public void GetSemanticTokens_Razor_Modify()
        {
            var txt = $"@addTagHelper *, TestAssembly{Environment.NewLine}" +
                      $"<test1 bool-val=\"true\" />{Environment.NewLine}" +
                      $"<test1 bool-val=\"true\" />{Environment.NewLine}" +
                      $"<test1 bool-val=\"true\" />{Environment.NewLine}";
            var expectedData = new List <uint> {
                1, 1, 5, 0, 0, //line, character pos, length, tokenType, modifier
                0, 6, 8, 1, 0,
                1, 1, 5, 0, 0,
                0, 6, 8, 1, 0,
                1, 1, 5, 0, 0,
                0, 6, 8, 1, 0,
            };

            var previousResultId = AssertSemanticTokens(txt, expectedData, isRazor: false, out var service);

            var newTxt = $"@addTagHelper *, TestAssembly{Environment.NewLine}" +
                         $"<test1 bool-va=\"true\" />{Environment.NewLine}" +
                         $"<test1 bool-val=\"true\" />{Environment.NewLine}" +
                         $"<test1 bool-val=\"true\" />{Environment.NewLine}";
            var newExpectedData = new SemanticTokensEditCollection
            {
                Edits = new List <SemanticTokensEdit>
                {
                    new SemanticTokensEdit
                    {
                        Start       = 5,
                        Data        = Array.Empty <uint>(),
                        DeleteCount = 5,
                    },
                }
            };
            var newResultId = AssertSemanticTokenEdits(newTxt, newExpectedData, isRazor: false, previousResultId: previousResultId, out _, service);

            Assert.NotEqual(previousResultId, newResultId);
        }
Пример #6
0
 public SemanticTokensOrSemanticTokensEdits(SemanticTokensEditCollection semanticTokensEdits)
 {
     SemanticTokensEdits = semanticTokensEdits;
     SemanticTokens      = null;
 }