Skip to content

Commit 8c17b0a

Browse files
committed
Added recipient garbage collect test
1 parent f583a66 commit 8c17b0a

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

UnitTests/UnitTests.Shared/Mvvm/Test_Messenger.cs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,36 @@ public void Test_Messenger_RegisterWithTypeParameter(Type type)
360360
Assert.AreEqual(number, 42);
361361
}
362362

363+
[TestCategory("Mvvm")]
364+
[TestMethod]
365+
[DataRow(typeof(Messenger), false)]
366+
[DataRow(typeof(WeakRefMessenger), true)]
367+
public void Test_Messenger_Collect_Test(Type type, bool isWeak)
368+
{
369+
var messenger = (IMessenger)Activator.CreateInstance(type);
370+
371+
WeakReference weakRecipient;
372+
373+
void Test()
374+
{
375+
var recipient = new RecipientWithNoMessages { Number = 42 };
376+
weakRecipient = new WeakReference(recipient);
377+
378+
messenger.Register<MessageA>(recipient, (r, m) => { });
379+
380+
Assert.IsTrue(messenger.IsRegistered<MessageA>(recipient));
381+
Assert.IsTrue(weakRecipient.IsAlive);
382+
383+
GC.KeepAlive(recipient);
384+
}
385+
386+
Test();
387+
388+
GC.Collect();
389+
390+
Assert.AreEqual(!isWeak, weakRecipient.IsAlive);
391+
}
392+
363393
public sealed class RecipientWithNoMessages
364394
{
365395
public int Number { get; set; }

0 commit comments

Comments
 (0)