public void TestReplaceTarget()
        {
            string value1 = "Testing Value - 1";
            string value2 = "Testing Value - 2";
            Utils.WeakReference<string> r = new Utils.WeakReference<string>(value1);

            string tmp;
            Assert.IsTrue(r.TryGetTarget(out tmp) && tmp == value1);

            r.Target = value2;
            Assert.IsTrue(r.TryGetTarget(out tmp) && tmp == value2);
        }
Пример #2
0
        public void TestReplaceTarget()
        {
            string value1 = "Testing Value - 1";
            string value2 = "Testing Value - 2";

            Utils.WeakReference <string> r = new Utils.WeakReference <string>(value1);

            string tmp;

            Assert.IsTrue(r.TryGetTarget(out tmp) && tmp == value1);

            r.Target = value2;
            Assert.IsTrue(r.TryGetTarget(out tmp) && tmp == value2);
        }
        public void TestDestoryed()
        {
            Utils.WeakReference<MyObject> r;
            if (true)
            {
                MyObject obj = new MyObject();

                r = new Utils.WeakReference<MyObject>(obj);
                Assert.IsTrue(r.IsAlive);
                Assert.IsNotNull(r.Target);
                MyObject test;
                Assert.IsTrue(r.TryGetTarget(out test));
                Assert.IsTrue(ReferenceEquals(obj, test));
                test = null;
                _destroyed = false;

                GC.KeepAlive(obj);
                obj = null;
            }

            GC.GetTotalMemory(true);
            GC.WaitForPendingFinalizers();

            Assert.IsTrue(_destroyed);

            MyObject tmp;
            Assert.IsFalse(r.IsAlive);
            Assert.IsNull(r.Target);
            Assert.IsFalse(r.TryGetTarget(out tmp));
        }
Пример #4
0
        public void TestDestoryed()
        {
            Utils.WeakReference <MyObject> r;
            if (true)
            {
                MyObject obj = new MyObject();

                r = new Utils.WeakReference <MyObject>(obj);
                Assert.IsTrue(r.IsAlive);
                Assert.IsNotNull(r.Target);
                MyObject test;
                Assert.IsTrue(r.TryGetTarget(out test));
                Assert.IsTrue(ReferenceEquals(obj, test));
                test       = null;
                _destroyed = false;

                GC.KeepAlive(obj);
                obj = null;
            }

            GC.GetTotalMemory(true);
            GC.WaitForPendingFinalizers();

            Assert.IsTrue(_destroyed);

            MyObject tmp;

            Assert.IsFalse(r.IsAlive);
            Assert.IsNull(r.Target);
            Assert.IsFalse(r.TryGetTarget(out tmp));
        }
Пример #5
0
        public void TestReplaceBadTypeTarget()
        {
            string value1 = "Testing Value - 1";
            object value2 = new MyObject();

            Utils.WeakReference <string> r = new Utils.WeakReference <string>(value1);

            string tmp;

            Assert.IsTrue(r.TryGetTarget(out tmp) && tmp == value1);

            ((WeakReference)r).Target = value2; //incorrect type...
            Assert.IsFalse(r.IsAlive);
            Assert.IsNull(r.Target);
            Assert.IsFalse(r.TryGetTarget(out tmp));

            Assert.IsTrue(ReferenceEquals(value2, ((WeakReference)r).Target));
        }
        public void TestReplaceBadTypeTarget()
        {
            string value1 = "Testing Value - 1";
            object value2 = new MyObject();
            Utils.WeakReference<string> r = new Utils.WeakReference<string>(value1);

            string tmp;
            Assert.IsTrue(r.TryGetTarget(out tmp) && tmp == value1);

            ((WeakReference)r).Target = value2; //incorrect type...
            Assert.IsFalse(r.IsAlive);
            Assert.IsNull(r.Target);
            Assert.IsFalse(r.TryGetTarget(out tmp));

            Assert.IsTrue(ReferenceEquals(value2, ((WeakReference)r).Target));
        }