1 // -----------------------------------------------------------------------
\r
2 // Copyright (c) Microsoft Corporation. All rights reserved.
\r
3 // -----------------------------------------------------------------------
\r
5 using System.Collections;
\r
6 using System.Collections.Generic;
\r
7 using System.UnitTesting;
\r
8 using Microsoft.VisualStudio.TestTools.UnitTesting;
\r
10 namespace Microsoft.Internal.Collections
\r
13 public class WeakReferenceCollectionTests
\r
16 public void Add_ObjectShouldGetCollected()
\r
18 var obj = new object();
\r
19 var wrc = new WeakReferenceCollection<object>();
\r
23 var wr = new WeakReference(obj);
\r
26 Assert.IsNotNull(wr.Target, "Object should NOT have been collected yet!");
\r
29 GC.WaitForPendingFinalizers();
\r
31 Assert.IsNull(wr.Target, "Object should have been collected!");
\r
37 public void Remove_ObjectShouldGetRemoved()
\r
39 var obj = new object();
\r
40 var wrc = new WeakReferenceCollection<object>();
\r
44 Assert.AreEqual(1, wrc.AliveItemsToList().Count, "Should have 1 item!");
\r
48 Assert.AreEqual(0, wrc.AliveItemsToList().Count, "Should have 0 item!");
\r
52 public void AliveItemsToList_ShouldReturnAllItems()
\r
54 var list = new object[] {new object(), new object(), new object()};
\r
55 var wrc = new WeakReferenceCollection<object>();
\r
57 foreach (object obj in list)
\r
62 Assert.AreEqual(list.Length, wrc.AliveItemsToList().Count, "Should have same number of items!");
\r
66 public void AliveItemsToList_ShouldReturnAllAliveItems()
\r
68 var list = new object[] { new object(), new object(), new object() };
\r
69 var wrc = new WeakReferenceCollection<object>();
\r
71 var obj1 = new object();
\r
74 foreach (object obj in list)
\r
79 var obj2 = new object();
\r
82 Assert.AreEqual(list.Length + 2, wrc.AliveItemsToList().Count, "Should have same number of items!");
\r
87 GC.WaitForPendingFinalizers();
\r
89 var aliveItems = wrc.AliveItemsToList();
\r
90 Assert.AreEqual(list.Length, aliveItems.Count, "Should have 2 less items!");
\r
92 Assert.AreEqual(list[0], aliveItems[0]);
\r
93 Assert.AreEqual(list[1], aliveItems[1]);
\r
94 Assert.AreEqual(list[2], aliveItems[2]);
\r
98 public void AliveItemsToList_ShouldReturnEmpty()
\r
100 var wrc = new WeakReferenceCollection<object>();
\r
101 Assert.AreEqual(0, wrc.AliveItemsToList().Count, "Should have 0 items!");
\r