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); }
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); }
public SemanticTokensOrSemanticTokensEdits(SemanticTokensEditCollection semanticTokensEdits) { SemanticTokensEdits = semanticTokensEdits; SemanticTokens = null; }