File tree Expand file tree Collapse file tree 1 file changed +30
-0
lines changed
UnitTests/UnitTests.Shared/Mvvm Expand file tree Collapse file tree 1 file changed +30
-0
lines changed Original file line number Diff line number Diff line change @@ -360,6 +360,36 @@ public void Test_Messenger_RegisterWithTypeParameter(Type type)
360
360
Assert . AreEqual ( number , 42 ) ;
361
361
}
362
362
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
+
363
393
public sealed class RecipientWithNoMessages
364
394
{
365
395
public int Number { get ; set ; }
You can’t perform that action at this time.
0 commit comments