|
// 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.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Testing;
using Xunit;
using VerifyCS = Test.Utilities.CSharpCodeRefactoringVerifier<Roslyn.Diagnostics.Analyzers.NumberCommentsRefactoring>;
namespace Roslyn.Diagnostics.Analyzers.UnitTests
{
public class NumberCommentsRefactoringTests
{
[Fact]
public async Task TestAsync()
{
const string source = """
public class C
{
string s = @"
[||]class D { } //
";
}
""";
const string fixedSource = """
public class C
{
string s = @"
class D { } // 1
";
}
""";
await VerifyCS.VerifyRefactoringAsync(source, fixedSource);
}
[Fact]
public async Task TestAsync_RawStringLiteral()
{
const string source = """"
public class C
{
string s = """
[||]class D { } //
""";
}
"""";
const string fixedSource = """"
public class C
{
string s = """
class D { } // 1
""";
}
"""";
await VerifyCSharp11Async(source, fixedSource);
}
[Fact]
public async Task TestAsync_RawStringLiteral_Indented()
{
const string source = """"
public class C
{
string s = """
[||]class D { } //
""";
}
"""";
const string fixedSource = """"
public class C
{
string s = """
class D { } // 1
""";
}
"""";
await VerifyCSharp11Async(source, fixedSource);
}
[Fact]
public async Task TestAsync_RawStringLiteral_Indented_Multiple()
{
const string source = """"
public class C
{
string s = """
[||]class D { } //
class E { } //,
""";
}
"""";
const string fixedSource = """"
public class C
{
string s = """
class D { } // 1
class E { } // 2, 3
""";
}
"""";
await VerifyCSharp11Async(source, fixedSource);
}
[Fact]
public async Task CSharp_VerifyFix_WithTriviaAsync()
{
const string source = """
public class C
{
string s =
[||]/*before*/ @"
class D { } //
" /*after*/ ;
}
""";
const string fixedSource = """
public class C
{
string s =
/*before*/ @"
class D { } // 1
" /*after*/ ;
}
""";
await VerifyCS.VerifyRefactoringAsync(source, fixedSource);
}
[Fact]
public async Task CSharp_VerifyFix_NonNumberCommentsLeftAloneAsync()
{
const string source = """
public class C
{
string s = @"
[||]//
class D //
{//
} // test
";
}
""";
const string fixedSource = """
public class C
{
string s = @"
//
class D // 1
{//
} // test
";
}
""";
await VerifyCS.VerifyRefactoringAsync(source, fixedSource);
}
[Fact]
public async Task CSharp_VerifyFix_MultipleCommasAsync()
{
const string source = """
public class C
{
string s = @"
[||]class D //1
{ //,
} //
";
}
""";
const string fixedSource = """
public class C
{
string s = @"
class D // 1
{ // 2, 3
} // 4
";
}
""";
await VerifyCS.VerifyRefactoringAsync(source, fixedSource);
}
[Fact]
public async Task CSharp_VerifyFix_LastLineAsync()
{
const string source = """
public class C
{
string s = @"[||]class D { } //";
}
""";
const string fixedSource = """
public class C
{
string s = @"class D { } // 1";
}
""";
await VerifyCS.VerifyRefactoringAsync(source, fixedSource);
}
[Fact]
public async Task CountOverTenAsync()
{
const string source = """
public class C
{
string s = @"
[||]class D { } // ,,,,,,,,,,,,
";
}
""";
const string fixedSource = """
public class C
{
string s = @"
class D { } // 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
";
}
""";
await VerifyCS.VerifyRefactoringAsync(source, fixedSource);
}
[Fact]
public async Task EmptyNumberIsImproperAsync()
{
const string source = """
public class C
{
string s = @"
[||]class D // 1
{ // 2, 3
} //
";
}
""";
const string fixedSource = """
public class C
{
string s = @"
class D // 1
{ // 2, 3
} // 4
";
}
""";
await VerifyCS.VerifyRefactoringAsync(source, fixedSource);
}
[Fact]
public async Task EmptyNumberBeforeCommaIsImproperAsync()
{
const string source = """
public class C
{
string s = @"
[||]class C // 1
{ // , 3
}
";
}
""";
const string fixedSource = """
public class C
{
string s = @"
class C // 1
{ // 2, 3
}
";
}
""";
await VerifyCS.VerifyRefactoringAsync(source, fixedSource);
}
[Fact]
public async Task EmptyCommentOnEmptyLineIsProperAsync()
{
const string source = """
public class C
{
string s = @"
// much stuff
//
// more stuff
[||]class C // 1
{ // 2, 3
} //
";
}
""";
const string fixedSource = """
public class C
{
string s = @"
// much stuff
//
// more stuff
class C // 1
{ // 2, 3
} // 4
";
}
""";
await VerifyCS.VerifyRefactoringAsync(source, fixedSource);
}
#region Utilities
private async Task VerifyCSharp11Async(string source, string fixedSource)
{
var test = new VerifyCS.Test
{
TestCode = source,
FixedCode = fixedSource,
LanguageVersion = Microsoft.CodeAnalysis.CSharp.LanguageVersion.CSharp11,
};
test.ExpectedDiagnostics.AddRange(DiagnosticResult.EmptyDiagnosticResults);
await test.RunAsync();
}
#endregion
}
}
|