public void ConvertToDungeon_DungeonHasOnlyWalls_IfMapContainsAllWalls()
        {
            var converter = new MapConverter();
            var map = new Map(5, 5);

            var dungeon = converter.ConvertToDungeon(map);

            Assert.That(dungeon,
                Has.All.With.Property(nameof(Cell.Type)).EqualTo(XType.Wall));
        }
        public void ConvertToDungeon_Dungeon_HasDoor_IfMapContainsDoor()
        {
            var converter = new MapConverter();
            var map = new Map(5, 5);
            var cell1 = map[1, 2];
            var cell2 = map[1, 2];
            map.CreateCorridorSide(map[1, 2], map[2, 2], Dir.E, Side.Door);

            var dungeon = converter.ConvertToDungeon(map);

            Assert.That(dungeon,
                Has.Some.With.Property(nameof(Cell.Type)).EqualTo(XType.DoorClosed));
        }
        public void ConvertToDungeon_DungeonIsRoom_IfMapIsSingleRoom()
        {
            var converter = new MapConverter();
            var map = new Map(5, 5);
            map.InsertRoom(new Room(5, 5), new Point(0, 0));

            var dungeon = converter.ConvertToDungeon(map);

            Assert.That(
                dungeon.Where(c => c.Location.X != 0
                    && c.Location.X != dungeon.Width - 1
                    && c.Location.Y != 0
                    && c.Location.Y != dungeon.Height - 1),
                Has.All.With.Property(nameof(Cell.Type)).EqualTo(XType.Empty));
        }
        public void ConvertToDungeon_Dungeon_HasSomeEmptyCells_IfMapContainsCorridor()
        {
            var converter = new MapConverter();
            var map = new Map(5, 5);
            map.CreateCorridorSide(map[1, 2], map[2, 2], Dir.E, Side.Empty);

            var dungeon = converter.ConvertToDungeon(map);

            Assert.That(dungeon,
                Has.Some.With.Property(nameof(Cell.Type)).EqualTo(XType.Empty),
                "Non borders should be empty.");

            Assert.That(
                dungeon.Where(c => c.Location.X == 0
                    || c.Location.X == dungeon.Width - 1
                    || c.Location.Y == 0
                    || c.Location.Y == dungeon.Height - 1),
                Has.All.With.Property(nameof(Cell.Type)).EqualTo(XType.Wall),
                "Borders should be walls.");
        }
        public void ConvertToDungeon_ReturnsDungeon_WithCorrectSize(int w, int h)
        {
            var converter = new MapConverter();
            var map = new Map(w, h);
            var expectedWidth = w * 2 + 1;
            var expectedHeight = h * 2 + 1;

            var dungeon = converter.ConvertToDungeon(map);

            Assert.That(dungeon,
                Has.Property(nameof(Dungeon.Width)).EqualTo(expectedWidth)
                .And.Property(nameof(Dungeon.Height)).EqualTo(expectedHeight));
        }