Exemplo n.º 1
0
        public void CopyToWorks()
        {
            var arr    = new[] { "a", "b", "c", "d" };
            var wc     = new WeakCollection <string>(arr);
            var target = new string[5];

            wc.CopyTo(target, 0);
            Assert.True(arr.SequenceEqual(target.Take(4)));
            Assert.Null(target[4]);
            target[0] = null;
            wc.CopyTo(target, 1);
            Assert.True(arr.SequenceEqual(target.Skip(1)));
        }
Exemplo n.º 2
0
        public void CopyToWorksAfterCollect()
        {
            var arr = new[] { "a", "b" };
            var wc  = new WeakCollection <string>(arr);

            {
                wc.Add(new string('c', 1));
                wc.Add(new string('d', 1));
            }
            GCEx.CollectAndWait();
            var target = new string[5];

            wc.CopyTo(target, 1);
            Assert.True(arr.SequenceEqual(target.Skip(1).Take(2)));
            Assert.Null(target[0]);
            Assert.Null(target[3]);
            Assert.Null(target[4]);
        }
Exemplo n.º 3
0
        public void TestBasics()
        {
            WeakCollection<object> c = new WeakCollection<object>();
            c.Add(new object());
            c.Add(new object());
            c.Add(new object());
            c.Add(new object());
            c.Add(this);
            Assert.AreEqual(5, c.Count);
            Assert.IsTrue(c.Contains(this));
            int n = 0;
            foreach (object o in c)
            {
                Assert.IsTrue(o.GetType() == typeof(object) || o.GetType() == this.GetType());
                n++;
            }
            Assert.AreEqual(5, n);

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

            Assert.AreEqual(1, c.Count);
            Assert.IsTrue(c.Contains(this));
            n = 0;
            foreach (object o in c)
            {
                Assert.IsTrue(o.GetType() == this.GetType());
                Assert.IsTrue(o == this);
                n++;
            }
            Assert.AreEqual(1, n);
            c.CopyTo(new object[1], 0);
        }