示例#1
0
        public void GetBranch_OK_WithNoRoot_AlsoSecondLineInheriting()
        {
            var crumbRoot = new Crumb();
            //B
            var crumbB     = new Crumb();
            var crumbB_A   = new Crumb();
            var crumbB_B   = new Crumb();
            var crumbB_C   = new Crumb();
            var crumbB_C_A = new Crumb();
            //C
            var crumbC = new Crumb();

            crumbRoot.RegisterObserver(crumbB);
            crumbRoot.RegisterObserver(crumbC);

            crumbB.RegisterObserver(crumbB_A);
            crumbB.RegisterObserver(crumbB_B);

            crumbB_C.RegisterObserver(crumbB_C_A);
            crumbB.RegisterObserver(crumbB_C);

            //act
            var crumbBBranch = crumbB.GetBranch().ToArray();
            var crumbCBranch = crumbC.GetBranch().ToArray();

            Assert.Equal(5, crumbBBranch.Length);
            Assert.Contains(crumbB, crumbBBranch);
            Assert.Contains(crumbB_A, crumbBBranch);
            Assert.Contains(crumbB_B, crumbBBranch);
            Assert.Contains(crumbB_C, crumbBBranch);
            Assert.Contains(crumbB_C_A, crumbBBranch);

            Assert.Single(crumbCBranch);
            Assert.Contains(crumbC, crumbCBranch);
        }
示例#2
0
        public void GetBranch_OK_WithNoRoot_OnlyFirstLineInheriting()
        {
            var crumbRoot = new Crumb();
            //A
            var crumbA   = new Crumb();
            var crumbA_A = new Crumb();
            var crumbA_B = new Crumb();
            //C
            var crumbC = new Crumb();

            crumbRoot.RegisterObserver(crumbA);
            crumbRoot.RegisterObserver(crumbC);

            crumbA.RegisterObserver(crumbA_A);
            crumbA.RegisterObserver(crumbA_B);

            //act
            var crumbABranch = crumbA.GetBranch().ToArray();
            var crumbCBranch = crumbC.GetBranch().ToArray();

            Assert.Equal(3, crumbABranch.Length);
            Assert.Contains(crumbA, crumbABranch);
            Assert.Contains(crumbA_A, crumbABranch);
            Assert.Contains(crumbA_B, crumbABranch);

            Assert.Single(crumbCBranch);
            Assert.Contains(crumbC, crumbCBranch);
        }
示例#3
0
        public void GetWholeChain_ReturnAllCrumbs_RelatedTo_Selected_One()
        {
            var crumbRoot = new Crumb();
            //B
            var crumbB     = new Crumb();
            var crumbB_A   = new Crumb();
            var crumbB_B   = new Crumb();
            var crumbB_C   = new Crumb();
            var crumbB_C_A = new Crumb();
            //C
            var crumbC = new Crumb();

            crumbRoot.RegisterObserver(crumbB);
            crumbRoot.RegisterObserver(crumbC);

            crumbB.RegisterObserver(crumbB_A);
            crumbB.RegisterObserver(crumbB_B);

            crumbB_C.RegisterObserver(crumbB_C_A);
            crumbB.RegisterObserver(crumbB_C);

            //act
            var crumbChain = crumbB.GetWholeChain().ToArray();

            Assert.Equal(6, crumbChain.Length);
            Assert.Contains(crumbRoot, crumbChain);
            Assert.Contains(crumbB, crumbChain);
            Assert.Contains(crumbB_A, crumbChain);
            Assert.Contains(crumbB_B, crumbChain);
            Assert.Contains(crumbB_C, crumbChain);
            Assert.Contains(crumbB_C_A, crumbChain);
        }
示例#4
0
        public void Assign_Observer()
        {
            var observerCrumb = new Crumb();
            var broadcaster   = new Crumb();

            //act
            Assert.Empty(broadcaster.Observers);
            broadcaster.RegisterObserver(observerCrumb);

            Assert.Single(broadcaster.Observers);
        }
示例#5
0
        public void GetWholeChain_ReturnCrumbsRelatedTo_Selected_WithNoSideOnes()
        {
            var crumbRoot = new Crumb()
            {
                Name = "root"
            };
            //B
            var crumbB = new Crumb()
            {
                Name = "B"
            };
            var crumbB_A = new Crumb()
            {
                Name = "B_A"
            };
            var crumbB_B   = new Crumb();
            var crumbB_C   = new Crumb();
            var crumbB_C_A = new Crumb();
            //C
            var crumbC = new Crumb();

            crumbRoot.RegisterObserver(crumbB);
            crumbRoot.RegisterObserver(crumbC);

            crumbB.RegisterObserver(crumbB_A);
            crumbB.RegisterObserver(crumbB_B);

            crumbB_C.RegisterObserver(crumbB_C_A);
            crumbB.RegisterObserver(crumbB_C);

            //act
            var crumbChain = crumbB_A.GetWholeChain().ToArray();

            Assert.Equal(3, crumbChain.Length);
            Assert.Contains(crumbRoot, crumbChain);
            Assert.Contains(crumbB, crumbChain);
            Assert.Contains(crumbB_A, crumbChain);
        }
示例#6
0
        public void AssignedObserver_IntoCrumb_Broadcast_Call_Receive()
        {
            var observerMock = new Mock <ICrumb>();

            observerMock.Setup(o => o.Receive());

            var broadcaster = new Crumb();

            broadcaster.RegisterObserver(observerMock.Object);
            //act
            broadcaster.Broadcast();

            observerMock.Verify(o => o.Receive(), Times.Once);
        }