Skip to content

Commit 5fb9f70

Browse files
committed
Add unit tests for trimming annotations
1 parent 1e033f4 commit 5fb9f70

File tree

2 files changed

+43
-0
lines changed

2 files changed

+43
-0
lines changed

tests/CommunityToolkit.Mvvm.UnitTests/Test_ObservableRecipient.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,18 @@
33
// See the LICENSE file in the project root for more information.
44

55
using System;
6+
#if !NET6_0_OR_GREATER
7+
using System.Collections.Generic;
8+
using System.Linq;
9+
#endif
10+
using System.Reflection;
611
using CommunityToolkit.Mvvm.ComponentModel;
712
using CommunityToolkit.Mvvm.Messaging;
813
using CommunityToolkit.Mvvm.Messaging.Messages;
914
using Microsoft.VisualStudio.TestTools.UnitTesting;
1015

16+
#pragma warning disable CS0618
17+
1118
namespace CommunityToolkit.Mvvm.UnitTests;
1219

1320
[TestClass]
@@ -85,6 +92,23 @@ public void Test_ObservableRecipient_Broadcast(Type type)
8592
Assert.AreEqual(message.PropertyName, nameof(SomeRecipient<int>.Data));
8693
}
8794

95+
[TestMethod]
96+
public void Test_IRecipient_VerifyTrimmingAnnotation()
97+
{
98+
#if NET6_0_OR_GREATER
99+
System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute? attribute =
100+
typeof(Messaging.__Internals.__IMessengerExtensions)
101+
.GetCustomAttribute<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute>();
102+
103+
Assert.IsNotNull(attribute);
104+
Assert.AreEqual(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods, attribute.MemberTypes);
105+
#else
106+
IEnumerable<Attribute> attributes = typeof(Messaging.__Internals.__IMessengerExtensions).GetCustomAttributes();
107+
108+
Assert.IsFalse(attributes.Any(static a => a.GetType().Name is "DynamicallyAccessedMembersAttribute"));
109+
#endif
110+
}
111+
88112
public class SomeRecipient<T> : ObservableRecipient
89113
{
90114
public SomeRecipient()

tests/CommunityToolkit.Mvvm.UnitTests/Test_ObservableValidator.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
using CommunityToolkit.Mvvm.ComponentModel;
1313
using Microsoft.VisualStudio.TestTools.UnitTesting;
1414

15+
#pragma warning disable CS0618
16+
1517
namespace CommunityToolkit.Mvvm.UnitTests;
1618

1719
[TestClass]
@@ -477,6 +479,23 @@ public void Test_ObservableRecipient_ValidationOnNonValidatableProperties_WithFa
477479
validationFunc(viewmodel.GetType())(viewmodel);
478480
}
479481

482+
[TestMethod]
483+
public void Test_ObservableValidator_VerifyTrimmingAnnotation()
484+
{
485+
#if NET6_0_OR_GREATER
486+
System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute? attribute =
487+
typeof(ComponentModel.__Internals.__ObservableValidatorExtensions)
488+
.GetCustomAttribute<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute>();
489+
490+
Assert.IsNotNull(attribute);
491+
Assert.AreEqual(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods, attribute.MemberTypes);
492+
#else
493+
IEnumerable<Attribute> attributes = typeof(ComponentModel.__Internals.__ObservableValidatorExtensions).GetCustomAttributes();
494+
495+
Assert.IsFalse(attributes.Any(static a => a.GetType().Name is "DynamicallyAccessedMembersAttribute"));
496+
#endif
497+
}
498+
480499
public class Person : ObservableValidator
481500
{
482501
private string? name;

0 commit comments

Comments
 (0)