/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Features/CSharpTest/Copilot/CSharpImplementNotImplementedExceptionFixProviderTests.CodeBlockSuggestions.cs
223 строки
6 KB
Cyrus Najmabadi
Use raw strings in tests
09 июл 2025, 08:52
09 июл 2025, 08:52
f265dce
Код
Авторство
О чём код?
// 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.Collections.Generic; using System.Threading.Tasks; using Microsoft.CodeAnalysis.Test.Utilities; using Microsoft.CodeAnalysis.Testing; using Xunit; namespace Microsoft.CodeAnalysis.CSharp.Copilot.UnitTests; [Trait(Traits.Feature, Traits.Features.CopilotImplementNotImplementedException)] public sealed partial class CSharpImplementNotImplementedExceptionFixProviderTests { public static IEnumerable<object[]> TestMethodCodeBlockSuggestions() { foreach (var kvp in s_codeBlockSuggestions) { var notImplementedMember = kvp.Key; var codeBlocks = kvp.Value; foreach (var codeBlock in codeBlocks) { yield return new object[] { notImplementedMember, codeBlock }; } } } [Theory] [MemberData(nameof(TestMethodCodeBlockSuggestions))] public Task FixerResponse_ReplacesCodeBlockCorrectly(string notImplementedCodeBlock, string replacementCodeBlock) => new CustomCompositionCSharpTest { CodeFixTestBehaviors = CodeFixTestBehaviors.FixOne | CodeFixTestBehaviors.SkipLocalDiagnosticCheck, TestCode = $$""" using System; using System.Threading.Tasks; public class TestService { {{notImplementedCodeBlock}} } """, FixedCode = $$""" using System; using System.Threading.Tasks; public class TestService { {{replacementCodeBlock}} } """, LanguageVersion = LanguageVersion.CSharp11, ReferenceAssemblies = ReferenceAssemblies.Net.Net60, } .WithMockCopilotService(copilotService => { copilotService.PrepareUsingSingleFakeResult = new() { ReplacementNode = SyntaxFactory.ParseMemberDeclaration(replacementCodeBlock), }; }) .RunAsync(); private static readonly Dictionary<string, object[]> s_codeBlockSuggestions = new() { // Single statement with NotImplementedException [ """ public void {|IDE3000:TestMethod|}() { {|IDE3000:throw new NotImplementedException();|} } """ ] = [ @"public void TestMethod() => Console.WriteLine(""Hello, World!"");", """ public void TestMethod() { Console.WriteLine("This is a single statement"); } """, """ public void TestMethod() { int x = 10; int y = 20; Console.WriteLine(x + y); } """, """ public void TestMethod() { /* Comment before */ Console.WriteLine("First line"); /* Comment after */ Console.WriteLine("Second line"); } """, """ public void TestMethod() { // Initialize variables int a = 5; int b = 10; // Perform calculation int result = a + b; Console.WriteLine(result); } """, """ public void TestMethod() { var list = new int[] { 1, 2, 3, 4, 5 }; foreach (var item in list) { Console.WriteLine(item); } } """, """ public void TestMethod() { try { // Try block Console.WriteLine("This is a test method."); } catch (Exception ex) { Console.WriteLine(ex.Message); } } """, """ public void TestMethod() { if (DateTime.Now.DayOfWeek == DayOfWeek.Friday) { Console.WriteLine("It's Friday!"); } else { Console.WriteLine("It's not Friday."); } } """, """ public void TestMethod() { Console.WriteLine("Start"); // Comment at the end } """, """ public void TestMethod() { /* Multi-line comment at the beginning */ Console.WriteLine("Middle"); } """, """ public void TestMethod() { Console.WriteLine("End"); /* Multi-line comment at the end */ } """, """ public void TestMethod() { // Single-line comment at the beginning Console.WriteLine("Middle"); } """, """ public void TestMethod() { Console.WriteLine("End"); // Single-line comment at the end } """, """ public void TestMethod() { Console.WriteLine("Hi"); throw new InvalidOperationException(); } """ ], // Async method with NotImplementedException [ """ public async Task {|IDE3000:TestMethodAsync|}() { {|IDE3000:throw new NotImplementedException();|} } """ ] = [ """ public async Task TestMethodAsync() { await Task.Delay(1000); Console.WriteLine("Async operation completed"); } """, """ public async Task TestMethodAsync() => await Task.Run(() => Console.WriteLine("Running async task")); """ ], // Property with NotImplementedException in expression-bodied member [ @"public int TestProperty => {|IDE3000:throw new NotImplementedException()|};" ] = [ @"public int TestProperty => 42;", """ public int TestProperty => DateTime.Now.Year; """ ] }; }