コード例 #1
0
        public void Generate_BaseRandomServices_NoEqualEdges()
        {
            // ARRANGE
            var dice         = new Dice(3245);
            var randomSource = new SectorGeneratorRandomSource(dice);

            var schemeService = CreateSchemeService();
            var sector        = CreateSector();

            var map = CreateFakeMap();

            var botPlayer = CreateBotPlayer();


            var generator = CreateGenerator(randomSource, schemeService, botPlayer);


            // ACT
            generator.Generate(sector, map);



            // ASSERT
            foreach (var edge in map.Edges)
            {
                var sameEdge = map.Edges.Where(x => x != edge && ((x.Nodes[0] == edge.Nodes[0] && x.Nodes[1] == edge.Nodes[1]) || (x.Nodes[0] == edge.Nodes[1] && x.Nodes[1] == edge.Nodes[0])));
                sameEdge.Should().BeEmpty($"Ребро с {edge.Nodes[0]} и {edge.Nodes[1]} уже есть.");
            }
        }
コード例 #2
0
        public void Generate_BaseRandomServices_NoExceptions()
        {
            // ARRANGE
            var dice         = new Dice(123);
            var randomSource = new SectorGeneratorRandomSource(dice);

            var schemeService = CreateSchemeService();

            var sector = CreateSector();

            var map = CreateFakeMap();

            var botPlayer = CreateBotPlayer();


            var generator = CreateGenerator(randomSource, schemeService, botPlayer);


            // ACT
            Action act = () =>
            {
                generator.Generate(sector, map);
            };


            // ASSERT
            act.Should().NotThrow();
        }
コード例 #3
0
        public void Generate_BaseRandomServices_NoOverlapNodes()
        {
            // ARRANGE
            var dice         = new Dice(3245);
            var randomSource = new SectorGeneratorRandomSource(dice);

            var schemeService = CreateSchemeService();

            var sector = CreateSector();

            var map = CreateFakeMap();

            var botPlayer = CreateBotPlayer();


            var generator = CreateGenerator(randomSource, schemeService, botPlayer);


            // ACT
            generator.Generate(sector, map);



            // ASSERT
            var hexNodes = map.Nodes.Cast <HexNode>().ToArray();

            foreach (var node in hexNodes)
            {
                var sameNode = hexNodes.Where(x => x != node && x.OffsetX == node.OffsetX && x.OffsetY == node.OffsetY);
                sameNode.Should().BeEmpty();
            }
        }
コード例 #4
0
        public void RollConnectedRoomsTest()
        {
            // ARRANGE

            var maxNeighbor = 1;

            var neighborProbably = 100;

            var rollIndex = 0;

            var diceMock = new Mock <IDice>();

            diceMock.Setup(x => x.Roll(It.IsAny <int>())).Returns <int>(n =>
            {
                var result = 0;
                if (rollIndex == 0)
                {
                    // это бросок на проверку вероятности.
                    result = 1;
                }
                else if (rollIndex == 1)
                {
                    // это бросок на выбор комнаты
                    result = 1;
                }


                rollIndex++;

                return(result);
            });
            var dice = diceMock.Object;


            var randomSource = new SectorGeneratorRandomSource(dice);

            var currentRoom = new Room();

            var availableRooms = new[] { new Room() };



            // ACT
            var factRooms = randomSource.RollConnectedRooms(currentRoom,
                                                            maxNeighbor,
                                                            neighborProbably,
                                                            availableRooms);



            // ASSERT
            factRooms[0].Should().Be(availableRooms[0]);
        }