public void Test() { // Collection with 1 item to make this test simple Items = new ContinuousCollection <NotifiableItem> { new NotifiableItem { TestValue1 = 3, TestValue2 = 10 }, }; // Start with TestValue1 MaxValueCV = Items.ContinuousMax(item => item.TestValue1, value => Max = value); Console.WriteLine("MaxValueCV = " + MaxValueCV.CurrentValue); Console.WriteLine("Max = " + Max); Console.WriteLine(); // Switch to TestValue2 MaxValueCV = Items.ContinuousMax(item => item.TestValue2, value => Max = value); Console.WriteLine("MaxValueCV = " + MaxValueCV.CurrentValue); Console.WriteLine("Max = " + Max); Console.WriteLine(); GC.Collect(); WeakPropertyChangedEventManager.RemoveCollectedEntries(); GC.Collect(); // Now set TestValue1 Items[0].TestValue1 = 20; Console.WriteLine("(BUG)"); Console.WriteLine("MaxValueCV = " + MaxValueCV.CurrentValue); // BUG: Max is set to 20 when it should be 10 Console.WriteLine("Max = " + Max); Assert.AreEqual(10, Max); Console.Write("Hit enter to continue..."); Console.ReadLine(); }
public void CleanupReferences() { RegisterOnPersonName(); WeakReference personRef = new WeakReference(_person); _person = null; GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); Assert.IsFalse(personRef.IsAlive); WeakPropertyChangedEventManager.RemoveCollectedEntries(); for (int i = 0; i < 10; i++) { GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); WeakPropertyChangedEventManager.RemoveCollectedEntries(); } Assert.AreEqual(0, WeakPropertyChangedEventManager.SourceToBridgeTable.Count); }