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)
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 ; }
You can’t perform that action at this time.
0 commit comments