public void TestMultipleUnlistenWeak() { StreamSink <int> s = Stream.CreateSink <int>(); List <int> @out = new List <int>(); ((Action)(() => { // ReSharper disable once UnusedVariable IWeakListener l = s.ListenWeak(@out.Add); s.Send(1); l.Unlisten(); l.Unlisten(); s.Send(2); l.Unlisten(); }))(); s.Send(3); s.Send(4); Assert.AreEqual(1, @out.Count); }
public void TestListenWeak() { StreamSink <int> s = Stream.CreateSink <int>(); List <int> @out = new List <int>(); ((Action)(() => { // ReSharper disable once UnusedVariable IWeakListener l = s.ListenWeak(@out.Add); s.Send(1); s.Send(2); }))(); GC.Collect(0, GCCollectionMode.Forced); s.Send(3); s.Send(4); Assert.AreEqual(2, @out.Count); }