Skip to content

Commit 4222078

Browse files
committed
Add analyzer tests for C# 14 language version
Introduces new unit tests under the ROSLYN_5_0_0_OR_GREATER conditional to verify analyzer diagnostics and code generation behavior when using C# 14. These tests ensure correct warnings are produced for observable properties and WinRT compatibility in this language version.
1 parent ee5e84a commit 4222078

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

tests/CommunityToolkit.Mvvm.SourceGenerators.Roslyn4120.UnitTests/Test_SourceGeneratorsDiagnostics.cs

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,27 @@ public partial class SampleViewModel : ObservableObject
188188
await VerifyAnalyzerDiagnosticsAndSuccessfulGeneration<UseObservablePropertyOnPartialPropertyAnalyzer>(source, LanguageVersion.Preview);
189189
}
190190

191+
#if ROSLYN_5_0_0_OR_GREATER
192+
[TestMethod]
193+
public async Task UseObservablePropertyOnPartialPropertyAnalyzer_LanguageVersionIsCSharp14_Warns()
194+
{
195+
const string source = """
196+
using CommunityToolkit.Mvvm.ComponentModel;
197+
198+
namespace MyApp
199+
{
200+
public partial class SampleViewModel : ObservableObject
201+
{
202+
[ObservableProperty]
203+
private string {|MVVMTK0042:name|};
204+
}
205+
}
206+
""";
207+
208+
await VerifyAnalyzerDiagnosticsAndSuccessfulGeneration<UseObservablePropertyOnPartialPropertyAnalyzer>(source, LanguageVersion.CSharp14);
209+
}
210+
#endif
211+
191212
[TestMethod]
192213
public async Task UseObservablePropertyOnPartialPropertyAnalyzer_LanguageVersionIsPreview_OnPartialProperty_DoesNotWarn()
193214
{
@@ -503,6 +524,30 @@ await CSharpAnalyzerWithLanguageVersionTest<WinRTObservablePropertyOnFieldsIsNot
503524
editorconfig: [("_MvvmToolkitIsUsingWindowsRuntimePack", true), ("CsWinRTAotOptimizerEnabled", "auto")]);
504525
}
505526

527+
#if ROSLYN_5_0_0_OR_GREATER
528+
[TestMethod]
529+
public async Task WinRTObservablePropertyOnFieldsIsNotAotCompatibleAnalyzer_TargetingWindows_CsWinRTAotOptimizerEnabled_Auto_LanguageVersionIsCSharp14_Warns()
530+
{
531+
const string source = """
532+
using CommunityToolkit.Mvvm.ComponentModel;
533+
534+
namespace MyApp
535+
{
536+
public partial class SampleViewModel : ObservableObject
537+
{
538+
[ObservableProperty]
539+
private string {|MVVMTK0045:name|};
540+
}
541+
}
542+
""";
543+
544+
await CSharpAnalyzerWithLanguageVersionTest<WinRTObservablePropertyOnFieldsIsNotAotCompatibleAnalyzer>.VerifyAnalyzerAsync(
545+
source,
546+
LanguageVersion.CSharp14,
547+
editorconfig: [("_MvvmToolkitIsUsingWindowsRuntimePack", true), ("CsWinRTAotOptimizerEnabled", "auto")]);
548+
}
549+
#endif
550+
506551
[TestMethod]
507552
public async Task WinRTObservablePropertyOnFieldsIsNotAotCompatibleAnalyzer_TargetingWindows_CsWinRTAotOptimizerEnabled_Auto_NotCSharpPreview_Warns_WithCompilationWarning()
508553
{
@@ -1471,6 +1516,29 @@ public partial class SampleViewModel : ObservableObject
14711516
await CSharpAnalyzerWithLanguageVersionTest<UseObservablePropertyOnSemiAutoPropertyAnalyzer>.VerifyAnalyzerAsync(source, LanguageVersion.Preview);
14721517
}
14731518

1519+
#if ROSLYN_5_0_0_OR_GREATER
1520+
[TestMethod]
1521+
public async Task UseObservablePropertyOnSemiAutoPropertyAnalyzer_ValidProperty_LanguageVersionIsCSharp14_Warns()
1522+
{
1523+
const string source = """
1524+
using CommunityToolkit.Mvvm.ComponentModel;
1525+
1526+
namespace MyApp;
1527+
1528+
public partial class SampleViewModel : ObservableObject
1529+
{
1530+
public string {|MVVMTK0056:Name|}
1531+
{
1532+
get => field;
1533+
set => SetProperty(ref field, value);
1534+
}
1535+
}
1536+
""";
1537+
1538+
await CSharpAnalyzerWithLanguageVersionTest<UseObservablePropertyOnSemiAutoPropertyAnalyzer>.VerifyAnalyzerAsync(source, LanguageVersion.CSharp14);
1539+
}
1540+
#endif
1541+
14741542
[TestMethod]
14751543
public async Task UseObservablePropertyOnSemiAutoPropertyAnalyzer_ValidProperty_WithModifiers_Warns()
14761544
{

0 commit comments

Comments
 (0)