Пример #1
0
        public void Render_EntireMapPassageway_Writes10Rows()
        {
            var builder = new RendererBuilder();
            var sut     = builder.Build();

            sut.Render(NoRenderables());

            builder.OutputLines.Should().HaveCount(MAP_ROW_COUNT);
        }
Пример #2
0
        public void Render_TopLeftCellWall_RendersCellAsWall()
        {
            var builder = new RendererBuilder();

            var sut = builder.WithWallAt(1, 1)
                      .Build();

            sut.Render(NoRenderables());

            builder.OutputLines[0].Should().Be(WALL_CELL + new string(' ', MAP_COLUMN_COUNT - 1));
            builder.AssertRowEmpty(1);
        }
Пример #3
0
        public void Render_EntireMapPassageway_AllLines10Spaces()
        {
            var builder = new RendererBuilder();
            var sut     = builder.Build();

            sut.Render(NoRenderables());

            for (int row = 0; row < MAP_ROW_COUNT; row++)
            {
                builder.AssertRowEmpty(row);
            }
        }
Пример #4
0
        public void Render_SingleRenderable_RendersAtGivenLocation()
        {
            var builder = new RendererBuilder();

            var sut = builder.Build();

            sut.Render(new[]
            {
                CreateRenderable(4, 3, '§', 0),
            });

            builder.AssertRowEmpty(0);
            builder.AssertRowEmpty(1);
            builder.OutputLines[2].Should().Be("   §      ");
            builder.AssertRowEmpty(3);
        }
Пример #5
0
        public void Render_Always_ClearsScreenBeforeRendering()
        {
            var  builder           = new RendererBuilder();
            bool clearScreenCalled = false;

            var sut = builder.WhenClearingScreenDo(() =>
            {
                builder.OutputLines.Should().BeEmpty("ClearScreen should be called first");
                clearScreenCalled = true;
            })
                      .Build();

            sut.Render(NoRenderables());

            clearScreenCalled.Should().BeTrue();
        }
Пример #6
0
        public void Render_MultipleRenderablesSameLocation_RendersHighestZIndex()
        {
            var builder = new RendererBuilder();

            var sut = builder.Build();

            sut.Render(new[]
            {
                CreateRenderable(2, 2, '~', 1),
                CreateRenderable(4, 3, '§', 0),
                CreateRenderable(2, 2, '@', 3),
                CreateRenderable(2, 2, '!', 2),
            });

            builder.OutputLines[1].Should().Be(" @        ");
        }
Пример #7
0
        public void Render_MismatchingXYCoordinates_RendersCellAsExpected(ElementType elementType, char expected)
        {
            var builder = new RendererBuilder();

            var sut = builder.WithCellAt(4, 3, elementType)
                      .Build();

            sut.Render(NoRenderables());

            string leftPadding  = "   ";
            string rightPadding = "      ";

            builder.AssertRowEmpty(0);
            builder.AssertRowEmpty(1);
            builder.OutputLines[2].Should().Be(leftPadding + expected + rightPadding);
            builder.AssertRowEmpty(3);
        }
Пример #8
0
        public void Render_RenderableOverlaysMap_RendersMap(ElementType mapElementType, char representation)
        {
            var builder = new RendererBuilder();

            var sut = builder.WithCellAt(3, 2, mapElementType)
                      .Build();

            sut.Render(new[]
            {
                CreateRenderable(3, 2, '§', 0),
            });

            var leftPassageWay  = "  ";
            var rightPassageWay = "       ";

            builder.OutputLines[1].Should().Be(leftPassageWay + representation + rightPassageWay);
        }
Пример #9
0
        public void Render_MultipleRenderablesDifferentLocations_RendersAll()
        {
            var builder = new RendererBuilder();

            var sut = builder.Build();

            sut.Render(new[]
            {
                CreateRenderable(2, 2, '~', 0),
                CreateRenderable(4, 3, '§', 0),
                CreateRenderable(8, 3, '@', 0),
            });

            builder.AssertRowEmpty(0);
            builder.OutputLines[1].Should().Be(" ~        ");
            builder.OutputLines[2].Should().Be("   §   @  ");
            builder.AssertRowEmpty(3);
        }
Пример #10
0
 public static void AssertRowEmpty(this RendererBuilder builder, int row)
 {
     builder.OutputLines[row].Should().Be(EMPTY_ROW);
 }