示例#1
0
        public void SutIsBasketPipe()
        {
            var dummyVisitor = new Mock <IBasketVisitor>().Object;
            var sut          = new BasketVisitorPipe(dummyVisitor);

            Assert.IsAssignableFrom <IPipe <Basket> >(sut);
        }
示例#2
0
        public void VisitorIsCorrect()
        {
            var expected = new Mock <IBasketVisitor>
            {
                DefaultValue = DefaultValue.Mock
            }.Object;
            var sut = new BasketVisitorPipe(expected);

            IBasketVisitor actual = sut.Visitor;

            Assert.Same(expected, actual);
        }
示例#3
0
        public void PipeReturnsCorrectResult()
        {
            // Fixture setup
            var r = new MockRepository(MockBehavior.Default)
            {
                DefaultValue = DefaultValue.Mock
            };

            var v1Stub = r.Create <IBasketVisitor>();
            var v2Stub = r.Create <IBasketVisitor>();
            var v3Stub = r.Create <IBasketVisitor>();

            var e1Stub = r.Create <IBasketElement>();
            var e2Stub = r.Create <IBasketElement>();

            e1Stub.Setup(e => e.Accept(v1Stub.Object)).Returns(v2Stub.Object);
            e2Stub.Setup(e => e.Accept(v2Stub.Object)).Returns(v3Stub.Object);

            var newElements = new[]
            {
                r.Create <IBasketElement>().Object,
                r.Create <IBasketElement>().Object,
                r.Create <IBasketElement>().Object,
            };

            v3Stub
            .Setup(v => v.GetEnumerator())
            .Returns(newElements.AsEnumerable().GetEnumerator());

            var sut = new BasketVisitorPipe(v1Stub.Object);
            // Exercise system
            var    basket = new Basket(e1Stub.Object, e2Stub.Object);
            Basket actual = sut.Pipe(basket);

            // Verify outcome
            Assert.True(basket.Concat(newElements).SequenceEqual(actual));
            // Teardown
        }