コード例 #1
0
        public void SetAttachesParent()
        {
            var parent = new SimpleParent();
            var child  = new Lists.ListMonitors.NotifyChildBase <SimpleParent>();
            var list   = new ParentList <Lists.ListMonitors.NotifyChildBase <SimpleParent>, SimpleParent>(parent);

            Assert.Null(child.Parent);

            list.Add(null);
            list[0] = child;

            Assert.Equal(parent, child.Parent);
        }
コード例 #2
0
        public void SetReleasesOutgoingParent()
        {
            var parent = new SimpleParent();
            var child1 = new Lists.ListMonitors.NotifyChildBase <SimpleParent>();
            var child2 = new Lists.ListMonitors.NotifyChildBase <SimpleParent>();
            var list   = new ParentList <Lists.ListMonitors.NotifyChildBase <SimpleParent>, SimpleParent>(parent);

            Assert.Null(child2.Parent);

            list.Add(child1);
            Assert.Equal(parent, child1.Parent);

            list[0] = child2;

            Assert.Null(child1.Parent);
            Assert.Equal(parent, child2.Parent);
        }
コード例 #3
0
        public void ClearSemantics()
        {
            var parent = new SimpleParent();
            var child1 = new Lists.ListMonitors.NotifyChildBase <SimpleParent>();
            var child2 = new Lists.ListMonitors.NotifyChildBase <SimpleParent>();
            var list   = new ParentList <Lists.ListMonitors.NotifyChildBase <SimpleParent>, SimpleParent>(parent);

            Assert.Null(child2.Parent);

            list.Add(child1);
            Assert.Equal(parent, child1.Parent);

            list.Add(child2);
            Assert.Equal(parent, child2.Parent);

            list.Clear();

            Assert.Null(child1.Parent);
            Assert.Null(child2.Parent);
        }
コード例 #4
0
        public void TransferBetweenLists()
        {
            var parent1 = new SimpleParent();
            var parent2 = new SimpleParent();
            var list1   = parent1.List;
            var list2   = parent2.List;
            var item    = new Lists.ListMonitors.NotifyChildBase <SimpleParent>();

            Assert.Null(item.Parent);

            list1.Add(item);
            Assert.Equal(parent1, item.Parent);
            Assert.Contains(item, list1);
            Assert.DoesNotContain(item, list2);

            list2.Add(item);
            Assert.Equal(parent2, item.Parent);
            Assert.DoesNotContain(item, list1);
            Assert.Contains(item, list2);
        }
コード例 #5
0
        public void AddAndReleaseSemantics()
        {
            var parent = new SimpleParent();
            var child  = new Lists.ListMonitors.NotifyChildBase <SimpleParent>();
            var list   = new ParentList <Lists.ListMonitors.NotifyChildBase <SimpleParent>, SimpleParent>(parent);

            Assert.Null(child.Parent);

            using (var foo = INPCCounter.VerifyInpcFired(child, o => o.Parent))
            {
                list.Add(child);
            }

            Assert.Equal(parent, child.Parent);

            using (var foo = INPCCounter.VerifyInpcFired(child, o => o.Parent))
            {
                list.RemoveAt(0);
            }

            Assert.Null(child.Parent);
        }
コード例 #6
0
 public void LosingChild(Lists.ListMonitors.NotifyChildBase <SimpleParent> child)
 {
     List.Remove(child);
 }