public void Render_EntireMapPassageway_Writes10Rows() { var builder = new RendererBuilder(); var sut = builder.Build(); sut.Render(NoRenderables()); builder.OutputLines.Should().HaveCount(MAP_ROW_COUNT); }
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); }
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); } }
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); }
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(); }
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(" @ "); }
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); }
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); }
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); }
public static void AssertRowEmpty(this RendererBuilder builder, int row) { builder.OutputLines[row].Should().Be(EMPTY_ROW); }