@@ -1243,4 +1243,210 @@ public unsafe partial class SampleViewModel : ObservableObject
1243
1243
1244
1244
await CSharpAnalyzerWithLanguageVersionTest < InvalidPointerTypeObservablePropertyAttributeAnalyzer > . VerifyAnalyzerAsync ( source , LanguageVersion . Preview ) ;
1245
1245
}
1246
+
1247
+ [ TestMethod ]
1248
+ public async Task UseObservablePropertyOnSemiAutoPropertyAnalyzer_NormalProperty_DoesNotWarn ( )
1249
+ {
1250
+ const string source = """
1251
+ using CommunityToolkit.Mvvm.ComponentModel;
1252
+
1253
+ namespace MyApp;
1254
+
1255
+ public partial class SampleViewModel : ObservableObject
1256
+ {
1257
+ public string Name { get; set; }
1258
+ }
1259
+ """ ;
1260
+
1261
+ await CSharpAnalyzerWithLanguageVersionTest < UseObservablePropertyOnSemiAutoPropertyAnalyzer > . VerifyAnalyzerAsync ( source , LanguageVersion . Preview ) ;
1262
+ }
1263
+
1264
+ [ TestMethod ]
1265
+ public async Task UseObservablePropertyOnSemiAutoPropertyAnalyzer_SimilarProperty_NotObservableObject_DoesNotWarn ( )
1266
+ {
1267
+ const string source = """
1268
+ using CommunityToolkit.Mvvm.ComponentModel;
1269
+
1270
+ namespace MyApp;
1271
+
1272
+ public partial class SampleViewModel : MyBaseViewModel
1273
+ {
1274
+ public string Name
1275
+ {
1276
+ get => field;
1277
+ set => SetProperty(ref field, value);
1278
+ }
1279
+ }
1280
+
1281
+ public abstract class MyBaseViewModel
1282
+ {
1283
+ protected void SetProperty<T>(ref T location, T value, string propertyName = null)
1284
+ {
1285
+ }
1286
+ }
1287
+ """ ;
1288
+
1289
+ await CSharpAnalyzerWithLanguageVersionTest < UseObservablePropertyOnSemiAutoPropertyAnalyzer > . VerifyAnalyzerAsync ( source , LanguageVersion . Preview ) ;
1290
+ }
1291
+
1292
+ [ TestMethod ]
1293
+ public async Task UseObservablePropertyOnSemiAutoPropertyAnalyzer_NoGetter_DoesNotWarn ( )
1294
+ {
1295
+ const string source = """
1296
+ using CommunityToolkit.Mvvm.ComponentModel;
1297
+
1298
+ namespace MyApp;
1299
+
1300
+ public partial class SampleViewModel : ObservableObject
1301
+ {
1302
+ public string Name
1303
+ {
1304
+ set => SetProperty(ref field, value);
1305
+ }
1306
+ }
1307
+ """ ;
1308
+
1309
+ await CSharpAnalyzerWithLanguageVersionTest < UseObservablePropertyOnSemiAutoPropertyAnalyzer > . VerifyAnalyzerAsync ( source , LanguageVersion . Preview ) ;
1310
+ }
1311
+
1312
+ [ TestMethod ]
1313
+ public async Task UseObservablePropertyOnSemiAutoPropertyAnalyzer_NoSetter_DoesNotWarn ( )
1314
+ {
1315
+ const string source = """
1316
+ using CommunityToolkit.Mvvm.ComponentModel;
1317
+
1318
+ namespace MyApp;
1319
+
1320
+ public partial class SampleViewModel : ObservableObject
1321
+ {
1322
+ public string Name
1323
+ {
1324
+ get => field;
1325
+ }
1326
+ }
1327
+ """ ;
1328
+
1329
+ await CSharpAnalyzerWithLanguageVersionTest < UseObservablePropertyOnSemiAutoPropertyAnalyzer > . VerifyAnalyzerAsync ( source , LanguageVersion . Preview ) ;
1330
+ }
1331
+
1332
+ [ TestMethod ]
1333
+ public async Task UseObservablePropertyOnSemiAutoPropertyAnalyzer_OtherLocation_DoesNotWarn ( )
1334
+ {
1335
+ const string source = """
1336
+ using CommunityToolkit.Mvvm.ComponentModel;
1337
+
1338
+ namespace MyApp;
1339
+
1340
+ public partial class SampleViewModel : ObservableObject
1341
+ {
1342
+ public string Name
1343
+ {
1344
+ get => field;
1345
+ set
1346
+ {
1347
+ string test = field;
1348
+
1349
+ SetProperty(ref test, value);
1350
+ }
1351
+ }
1352
+ }
1353
+ """ ;
1354
+
1355
+ await CSharpAnalyzerWithLanguageVersionTest < UseObservablePropertyOnSemiAutoPropertyAnalyzer > . VerifyAnalyzerAsync ( source , LanguageVersion . Preview ) ;
1356
+ }
1357
+
1358
+ [ TestMethod ]
1359
+ public async Task UseObservablePropertyOnSemiAutoPropertyAnalyzer_OtherValue_DoesNotWarn ( )
1360
+ {
1361
+ const string source = """
1362
+ using CommunityToolkit.Mvvm.ComponentModel;
1363
+
1364
+ namespace MyApp;
1365
+
1366
+ public partial class SampleViewModel : ObservableObject
1367
+ {
1368
+ public string Name
1369
+ {
1370
+ get => field;
1371
+ set
1372
+ {
1373
+ string test = "Bob";
1374
+
1375
+ SetProperty(ref field, test);
1376
+ }
1377
+ }
1378
+ }
1379
+ """ ;
1380
+
1381
+ await CSharpAnalyzerWithLanguageVersionTest < UseObservablePropertyOnSemiAutoPropertyAnalyzer > . VerifyAnalyzerAsync ( source , LanguageVersion . Preview ) ;
1382
+ }
1383
+
1384
+ [ TestMethod ]
1385
+ public async Task UseObservablePropertyOnSemiAutoPropertyAnalyzer_ValidProperty_Warns ( )
1386
+ {
1387
+ const string source = """
1388
+ using CommunityToolkit.Mvvm.ComponentModel;
1389
+
1390
+ namespace MyApp;
1391
+
1392
+ public partial class SampleViewModel : ObservableObject
1393
+ {
1394
+ public string {|MVVMTK0056:Name|}
1395
+ {
1396
+ get => field;
1397
+ set => SetProperty(ref field, value);
1398
+ }
1399
+ }
1400
+ """ ;
1401
+
1402
+ await CSharpAnalyzerWithLanguageVersionTest < UseObservablePropertyOnSemiAutoPropertyAnalyzer > . VerifyAnalyzerAsync ( source , LanguageVersion . Preview ) ;
1403
+ }
1404
+
1405
+ [ TestMethod ]
1406
+ public async Task UseObservablePropertyOnSemiAutoPropertyAnalyzer_ValidProperty_WithModifiers_Warns ( )
1407
+ {
1408
+ const string source = """
1409
+ using CommunityToolkit.Mvvm.ComponentModel;
1410
+
1411
+ namespace MyApp;
1412
+
1413
+ public partial class SampleViewModel : ObservableObject
1414
+ {
1415
+ public new string {|MVVMTK0056:Name|}
1416
+ {
1417
+ get => field;
1418
+ private set => SetProperty(ref field, value);
1419
+ }
1420
+ }
1421
+ """ ;
1422
+
1423
+ await CSharpAnalyzerWithLanguageVersionTest < UseObservablePropertyOnSemiAutoPropertyAnalyzer > . VerifyAnalyzerAsync ( source , LanguageVersion . Preview ) ;
1424
+ }
1425
+
1426
+ [ TestMethod ]
1427
+ public async Task UseObservablePropertyOnSemiAutoPropertyAnalyzer_ValidProperty_WithBlocks_Warns ( )
1428
+ {
1429
+ const string source = """
1430
+ using CommunityToolkit.Mvvm.ComponentModel;
1431
+
1432
+ namespace MyApp;
1433
+
1434
+ public partial class SampleViewModel : ObservableObject
1435
+ {
1436
+ public new string {|MVVMTK0056:Name|}
1437
+ {
1438
+ get
1439
+ {
1440
+ return field;
1441
+ }
1442
+ private set
1443
+ {
1444
+ SetProperty(ref field, value);
1445
+ }
1446
+ }
1447
+ }
1448
+ """ ;
1449
+
1450
+ await CSharpAnalyzerWithLanguageVersionTest < UseObservablePropertyOnSemiAutoPropertyAnalyzer > . VerifyAnalyzerAsync ( source , LanguageVersion . Preview ) ;
1451
+ }
1246
1452
}
0 commit comments