コード例 #1
0
        public void NullIsAValidValue()
        {
            WeakRefDictionary <object, object> dict = new WeakRefDictionary <object, object>();

            dict.Add("foo", null);
            Assert.IsNull(dict["foo"]);
        }
コード例 #2
0
        public void RegistrationDoesNotPreventGarbageCollection()
        {
            WeakRefDictionary <object, object> dict = new WeakRefDictionary <object, object>();

            dict.Add("foo", new object());
            GC.Collect();
            object unused = dict["foo"];
        }
コード例 #3
0
        public void AddingToSameKeyTwiceAlwaysThrows()
        {
            object o = new object();
            WeakRefDictionary <object, object> dict = new WeakRefDictionary <object, object>();

            dict.Add("foo1", o);
            dict.Add("foo1", o);
        }
コード例 #4
0
        public void CanFindOutIfContainsAKey()
        {
            WeakRefDictionary <object, object> dict = new WeakRefDictionary <object, object>();

            dict.Add("foo", null);
            Assert.IsTrue(dict.ContainsKey("foo"));
            Assert.IsFalse(dict.ContainsKey("foo2"));
        }
コード例 #5
0
        public void AddingToSameKeyTwiceAlwaysThrows()
        {
            object o = new object();
            WeakRefDictionary<object, object> dict = new WeakRefDictionary<object, object>();

            dict.Add("foo1", o);
            dict.Add("foo1", o);
        }
コード例 #6
0
        public void CanRegisterObjectAndFindItByID()
        {
            object o = new object();
            WeakRefDictionary <object, object> dict = new WeakRefDictionary <object, object>();

            dict.Add("foo", o);
            Assert.IsNotNull(dict["foo"]);
            Assert.AreSame(o, dict["foo"]);
        }
コード例 #7
0
        public void CanRemoveAnObjectThatWasAlreadyAdded()
        {
            object o = new object();
            WeakRefDictionary <object, object> dict = new WeakRefDictionary <object, object>();

            dict.Add("foo", o);
            dict.Remove("foo");
            object unused = dict["foo"];
        }
コード例 #8
0
        public void CanAddItemAfterPreviousItemIsCollected()
        {
            WeakRefDictionary<object, object> dict = new WeakRefDictionary<object, object>();
            dict.Add("foo", new object());

            GC.Collect();

            dict.Add("foo", new object());
        }
コード例 #9
0
		public void CanRegisterObjectAndFindItByID()
		{
			object o = new object();
			WeakRefDictionary<object, object> dict = new WeakRefDictionary<object, object>();

			dict.Add("foo", o);
			Assert.IsNotNull(dict["foo"]);
			Assert.AreSame(o, dict["foo"]);
		}
コード例 #10
0
		public void CanAddSameObjectTwiceWithDifferentKeys()
		{
			object o = new object();
			WeakRefDictionary<object, object> dict = new WeakRefDictionary<object, object>();

			dict.Add("foo1", o);
			dict.Add("foo2", o);

			Assert.AreSame(dict["foo1"], dict["foo2"]);
		}
コード例 #11
0
        public void KeyCanBeOfArbitraryType()
        {
            object oKey = new object();
            object oVal = new object();
            WeakRefDictionary <object, object> dict = new WeakRefDictionary <object, object>();

            dict.Add(oKey, oVal);

            Assert.AreSame(oVal, dict[oKey]);
        }
コード例 #12
0
        public void CanAddItemAfterPreviousItemIsCollected()
        {
            WeakRefDictionary <object, object> dict = new WeakRefDictionary <object, object>();

            dict.Add("foo", new object());

            GC.Collect();

            dict.Add("foo", new object());
        }
コード例 #13
0
		public void KeyCanBeOfArbitraryType()
		{
			object oKey = new object();
			object oVal = new object();
			WeakRefDictionary<object, object> dict = new WeakRefDictionary<object, object>();

			dict.Add(oKey, oVal);

			Assert.AreSame(oVal, dict[oKey]);
		}
コード例 #14
0
        public void CanAddSameObjectTwiceWithDifferentKeys()
        {
            object o = new object();
            WeakRefDictionary <object, object> dict = new WeakRefDictionary <object, object>();

            dict.Add("foo1", o);
            dict.Add("foo2", o);

            Assert.AreSame(dict["foo1"], dict["foo2"]);
        }
コード例 #15
0
        public void RegistrationDoesNotPreventGarbageCollection()
        {
            WeakRefDictionary <object, object> dict = new WeakRefDictionary <object, object>();

            RegistrationDoesNotPreventGarbageCollection_TestHelper(dict);
            GC.Collect();
            GC.WaitForPendingFinalizers();

            object unused = dict["foo"];
        }
コード例 #16
0
        public void CanAddItemAfterPreviousItemIsCollected()
        {
            WeakRefDictionary <object, object> dict = new WeakRefDictionary <object, object>();

            CanAddItemAfterPreviousItemIsCollected_TestHelper(dict);

            GC.Collect();
            GC.WaitForPendingFinalizers();

            dict.Add("foo", new object());
        }
コード例 #17
0
        public void RemovingAKeyOfOneObjectDoesNotAffectOtherKeysForSameObject()
        {
            object o = new object();
            WeakRefDictionary <object, object> dict = new WeakRefDictionary <object, object>();

            dict.Add("foo1", o);
            dict.Add("foo2", o);
            dict.Remove("foo1");

            Assert.AreSame(o, dict["foo2"]);
        }
コード例 #18
0
		public void CanRegisterTwoObjectsAndGetThemBoth()
		{
			object o1 = new object();
			object o2 = new object();
			WeakRefDictionary<object, object> dict = new WeakRefDictionary<object, object>();

			dict.Add("foo1", o1);
			dict.Add("foo2", o2);

			Assert.AreSame(o1, dict["foo1"]);
			Assert.AreSame(o2, dict["foo2"]);
		}
コード例 #19
0
        public void CountReturnsNumberOfKeysWithLiveValues()
        {
            WeakRefDictionary <object, object> dict = new WeakRefDictionary <object, object>();

            CountReturnsNumberOfKeysWithLiveValues_TestHelper(out object o, dict);

            o = null;
            GC.Collect();
            GC.WaitForPendingFinalizers();

            Assert.AreEqual(0, dict.Count);
        }
コード例 #20
0
        public void RemovingAKeyDoesNotAffectOtherKeys()
        {
            object o1 = new object();
            object o2 = new object();
            WeakRefDictionary <object, object> dict = new WeakRefDictionary <object, object>();

            dict.Add("foo1", o1);
            dict.Add("foo2", o2);
            dict.Remove("foo1");

            Assert.AreSame(o2, dict["foo2"]);
        }
コード例 #21
0
        public void CanRegisterTwoObjectsAndGetThemBoth()
        {
            object o1 = new object();
            object o2 = new object();
            WeakRefDictionary <object, object> dict = new WeakRefDictionary <object, object>();

            dict.Add("foo1", o1);
            dict.Add("foo2", o2);

            Assert.AreSame(o1, dict["foo1"]);
            Assert.AreSame(o2, dict["foo2"]);
        }
コード例 #22
0
        public void CountReturnsNumberOfKeysWithLiveValues()
        {
            object o = new object();
            WeakRefDictionary <object, object> dict = new WeakRefDictionary <object, object>();

            dict.Add("foo1", o);
            dict.Add("foo2", o);

            Assert.AreEqual(2, dict.Count);

            o = null;
            GC.Collect();

            Assert.AreEqual(0, dict.Count);
        }
コード例 #23
0
        public void CanEnumerate()
        {
            object o1 = new object();
            object o2 = new object();
            WeakRefDictionary<object, object> dict = new WeakRefDictionary<object, object>();

            dict.Add("foo1", o1);
            dict.Add("foo2", o2);

            foreach (KeyValuePair<object, object> kvp in dict)
            {
                Assert.IsNotNull(kvp);
                Assert.IsNotNull(kvp.Key);
                Assert.IsNotNull(kvp.Value);
            }
        }
コード例 #24
0
        public void CanEnumerate()
        {
            object o1 = new object();
            object o2 = new object();
            WeakRefDictionary <object, object> dict = new WeakRefDictionary <object, object>();

            dict.Add("foo1", o1);
            dict.Add("foo2", o2);

            foreach (KeyValuePair <object, object> kvp in dict)
            {
                Assert.IsNotNull(kvp);
                Assert.IsNotNull(kvp.Key);
                Assert.IsNotNull(kvp.Value);
            }
        }
コード例 #25
0
        private static void CountReturnsNumberOfKeysWithLiveValues_TestHelper(out object o, WeakRefDictionary <object, object> dict)
        {
            o = new object();
            dict.Add("foo1", o);
            dict.Add("foo2", o);

            Assert.AreEqual(2, dict.Count);
        }
コード例 #26
0
		public void RemovingAKeyDoesNotAffectOtherKeys()
		{
			object o1 = new object();
			object o2 = new object();
			WeakRefDictionary<object, object> dict = new WeakRefDictionary<object, object>();

			dict.Add("foo1", o1);
			dict.Add("foo2", o2);
			dict.Remove("foo1");

			Assert.AreSame(o2, dict["foo2"]);
		}
コード例 #27
0
        public void AskingForAKeyThatDoesntExistThrows()
        {
            WeakRefDictionary <object, object> dict = new WeakRefDictionary <object, object>();

            object unused = dict["foo"];
        }
コード例 #28
0
        public void RemovingANonExistantKeyDoesntThrow()
        {
            WeakRefDictionary <object, object> dict = new WeakRefDictionary <object, object>();

            dict.Remove("foo1");
        }
コード例 #29
0
		public void CountReturnsNumberOfKeysWithLiveValues()
		{
			object o = new object();
			WeakRefDictionary<object, object> dict = new WeakRefDictionary<object, object>();

			dict.Add("foo1", o);
			dict.Add("foo2", o);

			Assert.AreEqual(2, dict.Count);

			o = null;
			GC.Collect();

			Assert.AreEqual(0, dict.Count);
		}
コード例 #30
0
		public void RegistrationDoesNotPreventGarbageCollection()
		{
			WeakRefDictionary<object, object> dict = new WeakRefDictionary<object, object>();
			dict.Add("foo", new object());
			GC.Collect();
			object unused = dict["foo"];
		}
コード例 #31
0
ファイル: ObjectManager.cs プロジェクト: markgould/Punch
 /// <summary>Initializes a new ObjectManager</summary>
 public ObjectManager()
 {
     _objects = new WeakRefDictionary <TKey, T>();
     _factory = Composition.GetInstanceFactory <T>();
 }
コード例 #32
0
		public void RemovingANonExistantKeyDoesntThrow()
		{
			WeakRefDictionary<object, object> dict = new WeakRefDictionary<object, object>();
			dict.Remove("foo1");
		}
コード例 #33
0
		public void CanFindOutIfContainsAKey()
		{
			WeakRefDictionary<object, object> dict = new WeakRefDictionary<object, object>();

			dict.Add("foo", null);
			Assert.IsTrue(dict.ContainsKey("foo"));
			Assert.IsFalse(dict.ContainsKey("foo2"));
		}
コード例 #34
0
		public void RemovingAKeyOfOneObjectDoesNotAffectOtherKeysForSameObject()
		{
			object o = new object();
			WeakRefDictionary<object, object> dict = new WeakRefDictionary<object, object>();

			dict.Add("foo1", o);
			dict.Add("foo2", o);
			dict.Remove("foo1");

			Assert.AreSame(o, dict["foo2"]);
		}
コード例 #35
0
 private static void CanAddItemAfterPreviousItemIsCollected_TestHelper(WeakRefDictionary <object, object> dict)
 {
     dict.Add("foo", new object());
 }
コード例 #36
0
		public void AskingForAKeyThatDoesntExistThrows()
		{
			WeakRefDictionary<object, object> dict = new WeakRefDictionary<object, object>();
			object unused = dict["foo"];
		}
コード例 #37
0
 private static void RegistrationDoesNotPreventGarbageCollection_TestHelper(WeakRefDictionary <object, object> dict)
 {
     dict.Add("foo", new object());
 }
コード例 #38
0
		public void CanRemoveAnObjectThatWasAlreadyAdded()
		{
			object o = new object();
			WeakRefDictionary<object, object> dict = new WeakRefDictionary<object, object>();

			dict.Add("foo", o);
			dict.Remove("foo");
			object unused = dict["foo"];
		}
コード例 #39
0
		public void NullIsAValidValue()
		{
			WeakRefDictionary<object, object> dict = new WeakRefDictionary<object, object>();
			dict.Add("foo", null);
			Assert.IsNull(dict["foo"]);
		}