Skip to content

Commit fb0facd

Browse files
committed
Add unit tests for new scenarios
1 parent a6f517e commit fb0facd

File tree

1 file changed

+175
-0
lines changed

1 file changed

+175
-0
lines changed

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

Lines changed: 175 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2049,6 +2049,111 @@ await CSharpAnalyzerWithLanguageVersionTest<WinRTRelayCommandIsNotGeneratedBinda
20492049
editorconfig: [("_MvvmToolkitIsUsingWindowsRuntimePack", true)]);
20502050
}
20512051

2052+
[TestMethod]
2053+
public async Task WinRTRelayCommandIsNotGeneratedBindableCustomPropertyCompatibleAnalyzer_TargetingWindows_NotIncluded1_DoesNotWarn()
2054+
{
2055+
const string source = """
2056+
using System;
2057+
using CommunityToolkit.Mvvm.ComponentModel;
2058+
using CommunityToolkit.Mvvm.Input;
2059+
using WinRT;
2060+
2061+
namespace MyApp
2062+
{
2063+
[GeneratedBindableCustomProperty([], [])]
2064+
public partial class SampleViewModel : ObservableObject
2065+
{
2066+
[RelayCommand]
2067+
private void DoStuff()
2068+
{
2069+
}
2070+
}
2071+
}
2072+
2073+
namespace WinRT
2074+
{
2075+
public class GeneratedBindableCustomPropertyAttribute(string[] a, string[] b) : Attribute
2076+
{
2077+
}
2078+
}
2079+
""";
2080+
2081+
await CSharpAnalyzerWithLanguageVersionTest<WinRTRelayCommandIsNotGeneratedBindableCustomPropertyCompatibleAnalyzer>.VerifyAnalyzerAsync(
2082+
source,
2083+
LanguageVersion.CSharp12,
2084+
editorconfig: [("_MvvmToolkitIsUsingWindowsRuntimePack", true)]);
2085+
}
2086+
2087+
[TestMethod]
2088+
public async Task WinRTRelayCommandIsNotGeneratedBindableCustomPropertyCompatibleAnalyzer_TargetingWindows_NotIncluded2_DoesNotWarn()
2089+
{
2090+
const string source = """
2091+
using System;
2092+
using CommunityToolkit.Mvvm.ComponentModel;
2093+
using CommunityToolkit.Mvvm.Input;
2094+
using WinRT;
2095+
2096+
namespace MyApp
2097+
{
2098+
[GeneratedBindableCustomProperty(["OtherCommand"], [])]
2099+
public partial class SampleViewModel : ObservableObject
2100+
{
2101+
[RelayCommand]
2102+
private void DoStuff()
2103+
{
2104+
}
2105+
}
2106+
}
2107+
2108+
namespace WinRT
2109+
{
2110+
public class GeneratedBindableCustomPropertyAttribute(string[] a, string[] b) : Attribute
2111+
{
2112+
}
2113+
}
2114+
""";
2115+
2116+
await CSharpAnalyzerWithLanguageVersionTest<WinRTRelayCommandIsNotGeneratedBindableCustomPropertyCompatibleAnalyzer>.VerifyAnalyzerAsync(
2117+
source,
2118+
LanguageVersion.CSharp12,
2119+
editorconfig: [("_MvvmToolkitIsUsingWindowsRuntimePack", true)]);
2120+
}
2121+
2122+
[TestMethod]
2123+
public async Task WinRTRelayCommandIsNotGeneratedBindableCustomPropertyCompatibleAnalyzer_TargetingWindows_NotIncluded3_DoesNotWarn()
2124+
{
2125+
const string source = """
2126+
using System;
2127+
using CommunityToolkit.Mvvm.ComponentModel;
2128+
using CommunityToolkit.Mvvm.Input;
2129+
using WinRT;
2130+
2131+
namespace MyApp
2132+
{
2133+
[GeneratedBindableCustomProperty(["OtherCommand"], ["DoStuffCommand"])]
2134+
public partial class SampleViewModel : ObservableObject
2135+
{
2136+
[RelayCommand]
2137+
private void DoStuff()
2138+
{
2139+
}
2140+
}
2141+
}
2142+
2143+
namespace WinRT
2144+
{
2145+
public class GeneratedBindableCustomPropertyAttribute(string[] a, string[] b) : Attribute
2146+
{
2147+
}
2148+
}
2149+
""";
2150+
2151+
await CSharpAnalyzerWithLanguageVersionTest<WinRTRelayCommandIsNotGeneratedBindableCustomPropertyCompatibleAnalyzer>.VerifyAnalyzerAsync(
2152+
source,
2153+
LanguageVersion.CSharp12,
2154+
editorconfig: [("_MvvmToolkitIsUsingWindowsRuntimePack", true)]);
2155+
}
2156+
20522157
[TestMethod]
20532158
public async Task WinRTRelayCommandIsNotGeneratedBindableCustomPropertyCompatibleAnalyzer_TargetingWindows_Bindable_Warns()
20542159
{
@@ -2084,6 +2189,76 @@ await CSharpAnalyzerWithLanguageVersionTest<WinRTRelayCommandIsNotGeneratedBinda
20842189
editorconfig: [("_MvvmToolkitIsUsingWindowsRuntimePack", true)]);
20852190
}
20862191

2192+
[TestMethod]
2193+
public async Task WinRTRelayCommandIsNotGeneratedBindableCustomPropertyCompatibleAnalyzer_TargetingWindows_Bindable_Included1_Warns()
2194+
{
2195+
const string source = """
2196+
using System;
2197+
using CommunityToolkit.Mvvm.ComponentModel;
2198+
using CommunityToolkit.Mvvm.Input;
2199+
using WinRT;
2200+
2201+
namespace MyApp
2202+
{
2203+
[GeneratedBindableCustomProperty(["DoStuffCommand"], [])]
2204+
public partial class SampleViewModel : ObservableObject
2205+
{
2206+
[RelayCommand]
2207+
private void {|MVVMTK0046:DoStuff|}()
2208+
{
2209+
}
2210+
}
2211+
}
2212+
2213+
namespace WinRT
2214+
{
2215+
public class GeneratedBindableCustomPropertyAttribute(string[] a, string[] b) : Attribute
2216+
{
2217+
}
2218+
}
2219+
""";
2220+
2221+
await CSharpAnalyzerWithLanguageVersionTest<WinRTRelayCommandIsNotGeneratedBindableCustomPropertyCompatibleAnalyzer>.VerifyAnalyzerAsync(
2222+
source,
2223+
LanguageVersion.CSharp12,
2224+
editorconfig: [("_MvvmToolkitIsUsingWindowsRuntimePack", true)]);
2225+
}
2226+
2227+
[TestMethod]
2228+
public async Task WinRTRelayCommandIsNotGeneratedBindableCustomPropertyCompatibleAnalyzer_TargetingWindows_Bindable_Included2_Warns()
2229+
{
2230+
const string source = """
2231+
using System;
2232+
using CommunityToolkit.Mvvm.ComponentModel;
2233+
using CommunityToolkit.Mvvm.Input;
2234+
using WinRT;
2235+
2236+
namespace MyApp
2237+
{
2238+
[GeneratedBindableCustomProperty(["Blah", "", "DoStuffCommand"], [])]
2239+
public partial class SampleViewModel : ObservableObject
2240+
{
2241+
[RelayCommand]
2242+
private void {|MVVMTK0046:DoStuff|}()
2243+
{
2244+
}
2245+
}
2246+
}
2247+
2248+
namespace WinRT
2249+
{
2250+
public class GeneratedBindableCustomPropertyAttribute(string[] a, string[] b) : Attribute
2251+
{
2252+
}
2253+
}
2254+
""";
2255+
2256+
await CSharpAnalyzerWithLanguageVersionTest<WinRTRelayCommandIsNotGeneratedBindableCustomPropertyCompatibleAnalyzer>.VerifyAnalyzerAsync(
2257+
source,
2258+
LanguageVersion.CSharp12,
2259+
editorconfig: [("_MvvmToolkitIsUsingWindowsRuntimePack", true)]);
2260+
}
2261+
20872262
[TestMethod]
20882263
public async Task WinRTClassUsingNotifyPropertyChangedAttributesAnalyzer_NotTargetingWindows_DoesNotWarn()
20892264
{

0 commit comments

Comments
 (0)