/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/EditorFeatures/CSharpTest/CommentSelection/CSharpToggleLineCommentCommandHandlerTests.cs
878 строк
19 KB
Cyrus Najmabadi
Cleanup test methods
24 июл 2025, 11:15
24 июл 2025, 11:15
9b3e554
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. #nullable disable using System; using System.Linq; using Microsoft.CodeAnalysis.CommentSelection; using Microsoft.CodeAnalysis.Test.Utilities; using Microsoft.CodeAnalysis.Test.Utilities.CommentSelection; using Microsoft.VisualStudio.Commanding; using Roslyn.Test.Utilities; using Xunit; namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.CommentSelection; [UseExportProvider] [Trait(Traits.Feature, Traits.Features.ToggleLineComment)] public sealed class CSharpToggleLineCommentCommandHandlerTests : AbstractToggleCommentTestBase { [WpfFact] public void AddComment_EmptyCaret() => ToggleComment(@"$$", @"[||]"); [WpfFact] public void AddComment_EmptySelection() => ToggleComment(@"[| |]", @"[||]"); [WpfFact] public void AddComment_CaretInUncommentedLine() => ToggleComment(""" class C { void M() { var$$ i = 1; } } """, """ class C { void M() { //var[||] i = 1; } } """); [WpfFact] public void AddComment_CaretBeforeUncommentedLine() => ToggleComment(""" class C { void M() { $$ var i = 1; } } """, """ class C { void M() { [||] //var i = 1; } } """); [WpfFact] public void AddComment_SingleLineSelected() => ToggleComment(""" class C { void M() { [|var i = 1;|] } } """, """ class C { void M() { [|//var i = 1;|] } } """); [WpfFact] public void AddComment_PartialSingleLineSelected() => ToggleComment(""" class C { void M() { var [|i = 1;|] } } """, """ class C { void M() { //var [|i = 1;|] } } """); [WpfFact] public void AddComment_SingleLineWithWhitespaceSelected() => ToggleComment(""" class C { void M() { [| var i = 1; |] } } """, """ class C { void M() { [| //var i = 1; |] } } """); [WpfFact] public void AddComment_SelectionInsideCommentAtEndOfLine() => ToggleComment(""" class C { void M() { var i = 1; // A [|comment|]. } } """, """ class C { void M() { //var i = 1; // A [|comment|]. } } """); [WpfFact] public void AddComment_SelectionAroundCommentAtEndOfLine() => ToggleComment(""" class C { void M() { var i = 1; [|// A comment.|] } } """, """ class C { void M() { //var i = 1; [|// A comment.|] } } """); [WpfFact] public void AddComment_SelectionOutsideCommentAtEndOfLine() => ToggleComment(""" class C { void M() { [|var i = 1; // A comment.|] } } """, """ class C { void M() { [|//var i = 1; // A comment.|] } } """); [WpfFact] public void AddComment_CaretOutsideCommentAtEndOfLine() => ToggleComment(""" class C { void M() { var $$i = 1; // A comment. } } """, """ class C { void M() { //var [||]i = 1; // A comment. } } """); [WpfFact] public void AddComment_CaretInsideCommentAtEndOfLine() => ToggleComment(""" class C { void M() { var i = 1; // A $$comment. } } """, """ class C { void M() { //var i = 1; // A [||]comment. } } """); [WpfFact] public void AddComment_CommentMarkerInString() => ToggleComment(""" class C { void M() { [|string s = '\\';|] } } """, """ class C { void M() { [|//string s = '\\';|] } } """); [WpfFact] public void AddComment_MultipleLinesSelected() => ToggleComment(""" class C { void M() { [|var i = 1; var j = 2;|] } } """, """ class C { void M() { [|//var i = 1; //var j = 2;|] } } """); [WpfFact] public void AddComment_MultipleLinesWithWhitespaceSelected() => ToggleComment(""" class C { void M() { [| var i = 1; var j = 2; |] } } """, """ class C { void M() { [| //var i = 1; //var j = 2; |] } } """); [WpfFact] public void AddComment_MultipleLinesPartiallyCommentedSelected() => ToggleComment(""" class C { void M() { [|//var i = 1; var j = 2;|] } } """, """ class C { void M() { [|////var i = 1; //var j = 2;|] } } """); [WpfFact] public void AddComment_MultipleLinesWithCommentsInLineSelected() => ToggleComment(""" class C { void M() { [|var i = 1; // A comment. var j = 2;|] } } """, """ class C { void M() { [|//var i = 1; // A comment. //var j = 2;|] } } """); [WpfFact] public void AddComment_MultipleLinesWithDifferentIndentationsSelected() => ToggleComment(""" class C { [| void M() { var i = 1; var j = 2; }|] } """, """ class C { [| //void M() //{ // var i = 1; // var j = 2; //}|] } """); [WpfFact] public void AddComment_MultiCaret() => ToggleComment(""" class C { void M() { var [||]i = 1; var [||]j = 2; } } """, """ class C { void M() { //var [||]i = 1; //var [||]j = 2; } } """); [WpfFact] public void AddComment_MultiSeletion() => ToggleComment(""" class C { void M() { [|var i = 1;|] [|var j = 2;|] } } """, """ class C { void M() { [|//var i = 1;|] [|//var j = 2;|] } } """); [WpfFact] public void AddComment_MultiSeletionPartiallyCommented() => ToggleComment(""" class C { void M() { [|//var i = |]1; [|var j = 2;|] } } """, """ class C { void M() { [|////var i = |]1; [|//var j = 2;|] } } """); [WpfFact] public void AddComment_WithProjectionBuffer() => ToggleCommentWithProjectionBuffer(@"< html >@{|S1:|}", """ {|S1:class C { void M() { [|var i = 1;|] } }|} """, """ < html >@class C { void M() { [|//var i = 1;|] } } """); [WpfFact] public void RemoveComment_CaretInCommentedLine() => ToggleComment(""" class C { void M() { //var$$ i = 1; } } """, """ class C { void M() { var[||] i = 1; } } """); [WpfFact] public void RemoveComment_CaretBeforeCommentedLine() => ToggleComment(""" class C { void M() { $$ //var i = 1; } } """, """ class C { void M() { [||] var i = 1; } } """); [WpfFact] public void RemoveComment_CaretInCommentedLineWithEndComment() => ToggleComment(""" class C { void M() { //var i = 1; // A $$comment. } } """, """ class C { void M() { var i = 1; // A [||]comment. } } """); [WpfFact] public void RemoveComment_CaretInDoubleCommentedLine() => ToggleComment(""" class C { void M() { ////var$$ i = 1; } } """, """ class C { void M() { //var[||] i = 1; } } """); [WpfFact] public void RemoveComment_CommentedLineSelected() => ToggleComment(""" class C { void M() { [|//var i = 1;|] } } """, """ class C { void M() { [|var i = 1;|] } } """); [WpfFact] public void RemoveComment_InsideCommentSelected() => ToggleComment(""" class C { void M() { //var [|i = 1;|] } } """, """ class C { void M() { var [|i = 1;|] } } """); [WpfFact] public void RemoveComment_CommentedLineWithWhitespaceSelected() => ToggleComment(""" class C { void M() { [| //var i = 1; |] } } """, """ class C { void M() { [| var i = 1; |] } } """); [WpfFact] public void RemoveComment_CommentMarkerInString() => ToggleComment(""" class C { void M() { [|//string s = '\\';|] } } """, """ class C { void M() { [|string s = '\\';|] } } """); [WpfFact] public void RemoveComment_MultipleCommentedLinesSelected() => ToggleComment(""" class C { void M() { [|//var i = 1; //var j = 2;|] } } """, """ class C { void M() { [|var i = 1; var j = 2;|] } } """); [WpfFact] public void RemoveComment_MultipleCommentedLinesAndWhitespaceSelected() => ToggleComment(""" class C { void M() { [| //var i = 1; //var j = 2; |] } } """, """ class C { void M() { [| var i = 1; var j = 2; |] } } """); [WpfFact] public void RemoveComment_MultipleCommentedLinesWithEndCommentSelected() => ToggleComment(""" class C { void M() { [|//var i = 1; // A comment. //var j = 2;|] } } """, """ class C { void M() { [|var i = 1; // A comment. var j = 2;|] } } """); [WpfFact] public void RemoveComment_MultipleLinesWithDifferentIndentationsSelected() => ToggleComment(""" class C { [| //void M() //{ // var i = 1; // var j = 2; //}|] } """, """ class C { [| void M() { var i = 1; var j = 2; }|] } """); [WpfFact] public void RemoveComment_MultiCaret() => ToggleComment(""" class C { void M() { //var [||]i = 1; [||] //var [||]j = 2; } } """, """ class C { void M() { var [||]i = 1; [||] var [||]j = 2; } } """); [WpfFact] public void RemoveComment_MultiSeletion() => ToggleComment(""" class C { void M() { [|//var i = 1;|] [| |] [|//var j = 2;|] } } """, """ class C { void M() { [|var i = 1;|] [||] [|var j = 2;|] } } """); [WpfFact] public void RemoveComment_WithProjectionBuffer() => ToggleCommentWithProjectionBuffer(@"< html >@{|S1:|}", """ {|S1:class C { void M() { [|//var i = 1;|] } }|} """, """ < html >@class C { void M() { [|var i = 1;|] } } """); [WpfFact] public void ToggleComment_MultipleLinesSelected() { var expected = new string[] { """ class C { void M() { [|////var i = 1; //var j = 2;|] } } """, """ class C { void M() { [|//var i = 1; var j = 2;|] } } """ }; ToggleCommentMultiple(""" class C { void M() { [|//var i = 1; var j = 2;|] } } """, expected); } [WpfFact] public void ToggleComment_MultipleSelection() { var expected = new string[] { """ class C { void M() { [|////var i = |]1; [||] [|//var j = 2;|] } } """, """ class C { void M() { [|//var i = |]1; [||] [|var j = 2;|] } } """ }; ToggleCommentMultiple(""" class C { void M() { [|//var i = |]1; [||] [|var j = 2;|] } } """, expected); } internal override AbstractCommentSelectionBase<ValueTuple> GetToggleCommentCommandHandler(EditorTestWorkspace workspace) { return (AbstractCommentSelectionBase<ValueTuple>)workspace.ExportProvider.GetExportedValues<ICommandHandler>() .First(export => typeof(ToggleLineCommentCommandHandler).Equals(export.GetType())); } internal override EditorTestWorkspace GetWorkspace(string markup, TestComposition composition) => EditorTestWorkspace.CreateCSharp(markup, composition: composition); }