public void TestFieldValueChangedRuleWater()
        {
            var game = GetBasicGame();

            using (var subscriber = new FieldValueChangedRuleSubscriber(game, new FillRowOrColumnWithWater()))
            {
                game.Grid[new GridPoint(0, 0)] = BimaruValue.SHIP_UNDETERMINED;
            }

            game.Grid.AssertEqual(
                new BimaruValue[2, 3]
            {
                { BimaruValue.SHIP_UNDETERMINED, BimaruValue.UNDETERMINED, BimaruValue.UNDETERMINED },
                { BimaruValue.WATER, BimaruValue.UNDETERMINED, BimaruValue.UNDETERMINED }
            });
        }
        public void TestFieldValueChangedRuleShip()
        {
            var game = GetBasicGame();

            using (var subscriber = new FieldValueChangedRuleSubscriber(game, new FillRowOrColumnWithShips()))
            {
                game.Grid[new GridPoint(1, 2)] = BimaruValue.SHIP_CONT_DOWN;
            }

            game.Grid.AssertEqual(
                new BimaruValue[2, 3]
            {
                { BimaruValue.UNDETERMINED, BimaruValue.UNDETERMINED, BimaruValue.SHIP_UNDETERMINED },
                { BimaruValue.UNDETERMINED, BimaruValue.UNDETERMINED, BimaruValue.SHIP_CONT_DOWN }
            });
        }
Beispiel #3
0
        public void TestShipUndetermined()
        {
            var game = (new GameFactory()).GenerateEmptyGame(3, 3);

            using (var subscriber = new FieldValueChangedRuleSubscriber(game, new SetShipEnvironment()))
            {
                game.Grid[new GridPoint(1, 1)] = BimaruValue.SHIP_UNDETERMINED;
            }

            game.Grid.AssertEqual(
                new BimaruValue[3, 3]
            {
                { BimaruValue.WATER, BimaruValue.UNDETERMINED, BimaruValue.WATER },
                { BimaruValue.UNDETERMINED, BimaruValue.SHIP_UNDETERMINED, BimaruValue.UNDETERMINED },
                { BimaruValue.WATER, BimaruValue.UNDETERMINED, BimaruValue.WATER }
            });
        }
        public void TestShipMiddleNeighboursUnknown()
        {
            var game = (new GameFactory()).GenerateEmptyGame(3, 3);

            using (var subscriber = new FieldValueChangedRuleSubscriber(game, new DetermineShipMiddleNeighbours()))
            {
                game.Grid[new GridPoint(1, 1)] = BimaruValue.SHIP_MIDDLE;
            }

            game.Grid.AssertEqual(
                new BimaruValue[3, 3]
            {
                { BimaruValue.UNDETERMINED, BimaruValue.UNDETERMINED, BimaruValue.UNDETERMINED },
                { BimaruValue.UNDETERMINED, BimaruValue.SHIP_MIDDLE, BimaruValue.UNDETERMINED },
                { BimaruValue.UNDETERMINED, BimaruValue.UNDETERMINED, BimaruValue.UNDETERMINED }
            });
        }
Beispiel #5
0
        public void TestShipContOverwrite()
        {
            var game = (new GameFactory()).GenerateEmptyGame(3, 3);

            using (var subscriber = new FieldValueChangedRuleSubscriber(game, new SetShipEnvironment()))
            {
                game.Grid[new GridPoint(1, 1)] = BimaruValue.SHIP_CONT_RIGHT;
                game.Grid[new GridPoint(1, 2)] = BimaruValue.SHIP_CONT_LEFT;
            }

            game.Grid.AssertEqual(
                new BimaruValue[3, 3]
            {
                { BimaruValue.WATER, BimaruValue.WATER, BimaruValue.WATER },
                { BimaruValue.WATER, BimaruValue.SHIP_CONT_RIGHT, BimaruValue.SHIP_CONT_LEFT },
                { BimaruValue.WATER, BimaruValue.WATER, BimaruValue.WATER }
            });
        }
        public void TestShipMiddleVertical()
        {
            var game = (new GameFactory()).GenerateEmptyGame(3, 3);

            using (var subscriber = new FieldValueChangedRuleSubscriber(game, new DetermineShipUndetermined()))
            {
                game.Grid[new GridPoint(0, 1)] = BimaruValue.SHIP_UNDETERMINED;
                game.Grid[new GridPoint(1, 1)] = BimaruValue.SHIP_UNDETERMINED;
                game.Grid[new GridPoint(2, 1)] = BimaruValue.SHIP_UNDETERMINED;
            }

            game.Grid.AssertEqual(
                new BimaruValue[3, 3]
            {
                { BimaruValue.UNDETERMINED, BimaruValue.SHIP_CONT_UP, BimaruValue.UNDETERMINED },
                { BimaruValue.UNDETERMINED, BimaruValue.SHIP_MIDDLE, BimaruValue.UNDETERMINED },
                { BimaruValue.UNDETERMINED, BimaruValue.SHIP_CONT_DOWN, BimaruValue.UNDETERMINED }
            });
        }
        public void TestShipContLeft()
        {
            var game = (new GameFactory()).GenerateEmptyGame(3, 3);

            using (var subscriber = new FieldValueChangedRuleSubscriber(game, new DetermineShipUndetermined()))
            {
                game.Grid[new GridPoint(1, 0)] = BimaruValue.SHIP_UNDETERMINED;
                game.Grid[new GridPoint(1, 1)] = BimaruValue.SHIP_UNDETERMINED;
                game.Grid[new GridPoint(1, 2)] = BimaruValue.WATER;
            }

            game.Grid.AssertEqual(
                new BimaruValue[3, 3]
            {
                { BimaruValue.UNDETERMINED, BimaruValue.UNDETERMINED, BimaruValue.UNDETERMINED },
                { BimaruValue.SHIP_CONT_RIGHT, BimaruValue.SHIP_CONT_LEFT, BimaruValue.WATER },
                { BimaruValue.UNDETERMINED, BimaruValue.UNDETERMINED, BimaruValue.UNDETERMINED }
            });
        }
        public void TestSeveralShips()
        {
            var game = (new GameFactory()).GenerateEmptyGame(5, 5);

            using (var subscriber = new FieldValueChangedRuleSubscriber(game, new DetermineShipUndetermined()))
            {
                game.Grid[new GridPoint(0, 0)] = BimaruValue.SHIP_UNDETERMINED;
                game.Grid[new GridPoint(0, 1)] = BimaruValue.SHIP_MIDDLE;
                game.Grid[new GridPoint(0, 2)] = BimaruValue.SHIP_UNDETERMINED;
                game.Grid[new GridPoint(0, 3)] = BimaruValue.SHIP_UNDETERMINED;
                game.Grid[new GridPoint(0, 4)] = BimaruValue.WATER;

                game.Grid[new GridPoint(1, 2)] = BimaruValue.WATER;
                game.Grid[new GridPoint(2, 2)] = BimaruValue.SHIP_UNDETERMINED;
                game.Grid[new GridPoint(3, 2)] = BimaruValue.SHIP_UNDETERMINED;
                game.Grid[new GridPoint(4, 2)] = BimaruValue.WATER;

                game.Grid[new GridPoint(4, 0)] = BimaruValue.SHIP_UNDETERMINED;

                game.Grid[new GridPoint(2, 4)] = BimaruValue.WATER;
                game.Grid[new GridPoint(3, 3)] = BimaruValue.WATER;
                game.Grid[new GridPoint(3, 4)] = BimaruValue.SHIP_UNDETERMINED;
                game.Grid[new GridPoint(4, 4)] = BimaruValue.WATER;
            }

            // S? ?? WW ?? WW
            // ?? ?? S? WW S?
            // ?? ?? S? ?? WW
            // ?? ?? WW ?? ??
            // S? SM S? S? WW

            game.Grid.AssertEqual(
                new BimaruValue[5, 5]
            {
                { BimaruValue.SHIP_CONT_RIGHT, BimaruValue.SHIP_MIDDLE, BimaruValue.SHIP_MIDDLE, BimaruValue.SHIP_CONT_LEFT, BimaruValue.WATER },
                { BimaruValue.UNDETERMINED, BimaruValue.UNDETERMINED, BimaruValue.WATER, BimaruValue.UNDETERMINED, BimaruValue.UNDETERMINED },
                { BimaruValue.UNDETERMINED, BimaruValue.UNDETERMINED, BimaruValue.SHIP_CONT_UP, BimaruValue.UNDETERMINED, BimaruValue.WATER },
                { BimaruValue.UNDETERMINED, BimaruValue.UNDETERMINED, BimaruValue.SHIP_CONT_DOWN, BimaruValue.WATER, BimaruValue.SHIP_SINGLE },
                { BimaruValue.SHIP_UNDETERMINED, BimaruValue.UNDETERMINED, BimaruValue.WATER, BimaruValue.UNDETERMINED, BimaruValue.WATER },
            });
        }
        public void TestShipSingleOrderReversed()
        {
            var game = (new GameFactory()).GenerateEmptyGame(3, 3);

            using (var subscriber = new FieldValueChangedRuleSubscriber(game, new DetermineShipUndetermined()))
            {
                game.Grid[new GridPoint(0, 1)] = BimaruValue.WATER;
                game.Grid[new GridPoint(1, 0)] = BimaruValue.WATER;
                game.Grid[new GridPoint(1, 2)] = BimaruValue.WATER;
                game.Grid[new GridPoint(2, 1)] = BimaruValue.WATER;

                game.Grid[new GridPoint(1, 1)] = BimaruValue.SHIP_UNDETERMINED;
            }

            game.Grid.AssertEqual(
                new BimaruValue[3, 3]
            {
                { BimaruValue.UNDETERMINED, BimaruValue.WATER, BimaruValue.UNDETERMINED },
                { BimaruValue.WATER, BimaruValue.SHIP_SINGLE, BimaruValue.WATER },
                { BimaruValue.UNDETERMINED, BimaruValue.WATER, BimaruValue.UNDETERMINED }
            });
        }