示例#1
0
        public void TestDrawCanvasWithNewShapeWithoutVisitorImplemented()
        {
            Canvas c = new Canvas
                {
                    Height = 10,
                    Width = 12
                };

            c.Add(new Box {Side = 5});
            c.Add(new MyShape {SomeData = 3});

            var visitor = _container.Resolve<IVisitor<Shape>>("Draw");

            try
            {
                c.Accept(visitor);

                Assert.Fail("Exception expected");
            }
            catch (InvalidOperationException)
            {
                // Expecting exception here for missing visitor implementation
            }

            A.CallTo(() => _graphics.DrawRectangle(10, 12)).MustHaveHappened(Repeated.Exactly.Once);
            A.CallTo(() => _graphics.DrawBox(5)).MustHaveHappened(Repeated.Exactly.Once);
            A.CallTo(() => _graphics.DrawCircle(0)).WithAnyArguments().MustNotHaveHappened();
        }
示例#2
-1
        public void TestDrawCanvasWithNewShapeWithCustomVisitor()
        {
            Canvas c = new Canvas
                {
                    Height = 10,
                    Width = 12
                };

            MyShape myShape = new MyShape {SomeData = 3};

            c.Add(new Box {Side = 5});
            c.Add(myShape);

            IVisitor<MyShape> customShapeVisitor = A.Fake<IVisitor<MyShape>>();

            _container.RegisterInstance("Draw", customShapeVisitor);

            var visitor = _container.Resolve<IVisitor<Shape>>("Draw");

            c.Accept(visitor);

            A.CallTo(() => _graphics.DrawRectangle(10, 12)).MustHaveHappened(Repeated.Exactly.Once);
            A.CallTo(() => _graphics.DrawBox(5)).MustHaveHappened(Repeated.Exactly.Once);
            A.CallTo(() => _graphics.DrawCircle(0)).WithAnyArguments().MustNotHaveHappened();
            A.CallTo(() => customShapeVisitor.Visit(myShape)).MustHaveHappened(Repeated.Exactly.Once);
        }
示例#3
-1
        public void TestDrawCanvas()
        {
            Canvas c = new Canvas
                {
                    Height = 10,
                    Width = 12
                };

            c.Add(new Box {Side = 5});
            c.Add(new Circle {Radius = 12});

            IVisitor<Shape> visitor = _container.Resolve<IVisitor<Shape>>("Draw");

            c.Accept(visitor);

            A.CallTo(() => _graphics.DrawRectangle(10, 12)).MustHaveHappened();
            A.CallTo(() => _graphics.DrawBox(5)).MustHaveHappened();
            A.CallTo(() => _graphics.DrawCircle(12)).MustHaveHappened();
        }