Ejemplo n.º 1
0
        public void Process_PainterDrawMapIsCalledWithCorrectMapImage()
        {
            var parameters = new DungeonParameters();
            var dungeon = new FakeDungeon(5, 4);
            var mapBuilder = Substitute.For<IMapBuilder>();
            mapBuilder.Build(parameters).Returns(dungeon);
            var populator = Substitute.For<IDungeonPopulator>();
            var character = new Character
            {
                Location = new Point(1, 1)
            };
            populator.WhenForAnyArgs(it => it.Fill(Arg.Any<IGameDungeon>()))
                .Do(d =>
                {
                    d.Arg<IGameDungeon>().Character = character;
                });
            var painter = Substitute.For<IMapPainter>();

            var processor = new Processor(
                mapBuilder,
                populator,
                painter);
            processor.Initialize(parameters);
            processor.Process(GameAction.None);

            painter.Received(1).DrawMap(Arg.Is<MapImage>(d =>
                d.Width == dungeon.Width
                && d.Height == dungeon.Height
                && d[1, 1].Type == XType.Character));
        }
Ejemplo n.º 2
0
        public void Fill_UpstairsAdded()
        {
            var populator = new DungeonPopulator();
            var dungeon = new FakeDungeon(5, 7);
            var points = new[] { new Point(2, 2), new Point(3, 3) };
            foreach (var p in points)
                dungeon[p].Type = XType.Empty;

            populator.Fill(dungeon);

            Assert.That(dungeon,
                Has.Exactly(1).Matches<Cell>(cell =>
                    cell.Type == XType.StairsUp
                    && points.Contains(cell.Location)));
        }
Ejemplo n.º 3
0
        public void Constructor_CreatesCorrectCells()
        {
            var fake = new FakeDungeon(3, 3);
            fake[0, 1].Type = XType.Character;
            fake[0, 2].Type = XType.Empty;
            fake[1, 1].Type = XType.DoorClosed;
            fake[1, 2].Type = XType.Wall;

            var dungeon = new Dungeon(fake);

            Assert.That(dungeon.Select(c => c.Type).ToList(),
                Is.EquivalentTo(fake.Select(c => c.Type)));
            Assert.That(dungeon,
                Has.Property(nameof(dungeon.Width)).EqualTo(fake.Width)
                .And.Property(nameof(dungeon.Height)).EqualTo(fake.Height));
        }
Ejemplo n.º 4
0
        public void Initialize_CorrectDungeonIsSet()
        {
            var dungeon = new FakeDungeon();
            var mapBuilder = Substitute.For<IMapBuilder>();
            mapBuilder.Build(Arg.Any<DungeonParameters>())
                .Returns(dungeon);

            var processor = new Processor(
                mapBuilder,
                Substitute.For<IDungeonPopulator>(),
                Substitute.For<IMapPainter>());
            processor.Initialize(new DungeonParameters());

            Assert.That(processor.Dungeon,
                Has.Property(nameof(Dungeon.Size)).EqualTo(dungeon.Size));
        }
Ejemplo n.º 5
0
        public void Initialize_PopulatorIsCalled()
        {
            var parameters = new DungeonParameters();
            var dungeon = new FakeDungeon();
            var mapBuilder = Substitute.For<IMapBuilder>();
            mapBuilder.Build(parameters).Returns(dungeon);
            var populator = Substitute.For<IDungeonPopulator>();

            var processor = new Processor(
                mapBuilder,
                populator,
                Substitute.For<IMapPainter>());
            processor.Initialize(parameters);

            populator.Received(1).Fill(
                Arg.Is<IGameDungeon>(d => d.Size == dungeon.Size));
        }
Ejemplo n.º 6
0
        public void Fill_CharacterAdded()
        {
            var populator = new DungeonPopulator();
            var dungeon = new FakeDungeon(5, 7);
            var points = new[] { new Point(2, 2), new Point(3, 3) };
            foreach (var p in points)
                dungeon[p].Type = XType.Empty;

            populator.Fill(dungeon);

            var expectedLocation = dungeon
                .Single(cell => cell.Type == XType.StairsUp)
                .Location;

            Assert.That(dungeon.Character,
                Is.Not.Null
                .And.With.Property(nameof(Character.Location))
                .EqualTo(expectedLocation));
        }
Ejemplo n.º 7
0
        public void Process_PainterDrawMessageIsCalled()
        {
            var parameters = new DungeonParameters();
            var dungeon = new FakeDungeon(5, 4);
            var mapBuilder = Substitute.For<IMapBuilder>();
            mapBuilder.Build(parameters).Returns(dungeon);
            var populator = Substitute.For<IDungeonPopulator>();
            var character = new Character
            {
                Location = new Point(1, 1)
            };
            populator.WhenForAnyArgs(it => it.Fill(Arg.Any<IGameDungeon>()))
                .Do(d =>
                {
                    d.Arg<IGameDungeon>().Character = character;
                });
            var painter = Substitute.For<IMapPainter>();

            var processor = new Processor(
                mapBuilder,
                populator,
                painter);
            processor.Initialize(parameters);
            processor.Process(GameAction.None);

            ////TODO test precise message
            painter.Received(1).DrawMessage(Arg.Any<GameMessage>());
        }