ArgsTests.CLI.Observability.ObservabilityTests.SubscribeToChildren C# (CSharp) Method

SubscribeToChildren() private method

private SubscribeToChildren ( ) : void
return void
        public void SubscribeToChildren()
        {
            var observable = new SomeObservable();
            var existinChild = new SomeOtherObservable();
            observable.Children.Add(existinChild);

            int numChildrenChanged = 0;
            int numChildrenAdded = 0;
            int numChildrenRemoved = 0;
            observable.Children.SynchronizeForLifetime(
                (c) =>
                {
                    c.SynchronizeForLifetime(nameof(SomeOtherObservable.Name), () =>
                    {
                        numChildrenChanged++;
                    }
                    , observable.Children.GetMembershipLifetime(c));
                    numChildrenAdded++;
                },
                (c) =>
                {
                    numChildrenRemoved++;
                },
                () =>
                {
                }, observable.LifetimeManager);

            var newItem = new SomeOtherObservable();

            observable.Children.Add(newItem);

            Assert.AreEqual(2, numChildrenChanged);
            existinChild.Name = "Change";
            Assert.AreEqual(3, numChildrenChanged);

            newItem.Name = "Second change";
            Assert.AreEqual(4, numChildrenChanged);

            observable.Children.Remove(existinChild);
            existinChild.Name = "Ignored change";
            Assert.AreEqual(4, numChildrenChanged);

            observable.Children.Remove(newItem);
            newItem.Name = "Ignored change";
            Assert.AreEqual(4, numChildrenChanged);

            Assert.AreEqual(2, numChildrenAdded);
            Assert.AreEqual(2, numChildrenRemoved);
        }