Ejemplo n.º 1
0
        /// <summary>
        ///     Creates a new world using the details given in the InitiationMessage object.
        /// </summary>
        /// <param name="message">Initiation message is the first message received by the client. </param>
        /// <returns>New world based on the InitiationMessage. </returns>
        private static World FromInitiationMessage(InitiationMessage message)
        {
            var brickWalls = message.Bricks.ToArray().Select(point => new BrickWall(point));
            var stoneWalls = message.Stones.ToArray().Select(point => new StoneWall(point));
            var waters     = message.Water.ToArray().Select(point => new Water(point));

            return(new World(message.PlayerNumber)
            {
                BrickWalls = new HashSet <BrickWall>(brickWalls),
                StoneWalls = new HashSet <StoneWall>(stoneWalls),
                Waters = new HashSet <Water>(waters)
            });
        }
Ejemplo n.º 2
0
        public void GetInitiationMessageTests()
        {
            var initiationMessageString =
                "I:P0:14,1;9,5;13,16;4,8;15,11;19,6;3,6;1,17;5,12;9,16:12,7;4,11;18,15;2,6;13,17;4,1;8,5;19,16;3,7;14,11:18,5;2,9;16,13;0,17;8,15;3,14;1,8;12,9;16,3;0,7#";
            var initiationMessage         = MessageFactory.GetMessage(initiationMessageString);
            var initiationMessageExpected = new InitiationMessage(0,
                                                                  new[]
            {
                new Point(14, 1), new Point(9, 5), new Point(13, 16), new Point(4, 8), new Point(15, 11),
                new Point(19, 6), new Point(3, 6), new Point(1, 17), new Point(5, 12), new Point(9, 16)
            },
                                                                  new[]
            {
                new Point(12, 7), new Point(4, 11), new Point(18, 15), new Point(2, 6), new Point(13, 17),
                new Point(4, 1), new Point(8, 5), new Point(19, 16), new Point(3, 7), new Point(14, 11)
            },
                                                                  new[]
            {
                new Point(18, 5), new Point(2, 9), new Point(16, 13), new Point(0, 17), new Point(8, 15),
                new Point(3, 14), new Point(1, 8), new Point(12, 9), new Point(16, 3), new Point(0, 7)
            });

            Assert.NotNull(initiationMessage);
            Assert.IsInstanceOf <InitiationMessage>(initiationMessage);
            Assert.AreEqual(initiationMessageExpected, initiationMessage);

            var initiationMessageCast = initiationMessage as InitiationMessage;

            Assume.That(initiationMessageCast, Is.Not.Null);

            Assert.AreEqual(initiationMessageCast?.PlayerNumber, 0);
            CollectionAssert.AreEquivalent(
                new[]
            {
                new Point(14, 1), new Point(9, 5), new Point(13, 16), new Point(4, 8), new Point(15, 11),
                new Point(19, 6), new Point(3, 6), new Point(1, 17), new Point(5, 12), new Point(9, 16)
            },
                initiationMessageCast?.Bricks);
            CollectionAssert.AreEquivalent(
                new[]
            {
                new Point(12, 7), new Point(4, 11), new Point(18, 15), new Point(2, 6), new Point(13, 17),
                new Point(4, 1), new Point(8, 5), new Point(19, 16), new Point(3, 7), new Point(14, 11)
            },
                initiationMessageCast?.Stones);
            CollectionAssert.AreEquivalent(
                new[]
            {
                new Point(18, 5), new Point(2, 9), new Point(16, 13), new Point(0, 17), new Point(8, 15),
                new Point(3, 14), new Point(1, 8), new Point(12, 9), new Point(16, 3), new Point(0, 7)
            },
                initiationMessageCast?.Water);

            var initiationMessageUnexpected = new InitiationMessage(0,
                                                                    new[]
            {
                new Point(14, 1), new Point(9, 5), new Point(13, 16), new Point(4, 8), new Point(15, 11),
                new Point(19, 6), new Point(3, 6), new Point(1, 17), new Point(5, 12), new Point(9, 16)
            },
                                                                    new[]
            {
                new Point(12, 7), new Point(4, 11), new Point(18, 15), new Point(2, 6), new Point(13, 17),
                new Point(4, 1), new Point(8, 5), new Point(19, 16), new Point(3, 7), new Point(14, 11)
            },
                                                                    new[]
            {
                new Point(18, 5), new Point(4 /* here */, 9), new Point(16, 13), new Point(0, 17), new Point(8, 15),
                new Point(3, 14), new Point(1, 8), new Point(12, 9), new Point(16, 3), new Point(0, 7)
            });

            Assert.AreNotEqual(initiationMessageUnexpected, initiationMessageCast);
            Assert.IsTrue(initiationMessageCast != initiationMessageUnexpected);

            Assert.True(initiationMessageExpected.GetHashCode() == initiationMessageCast?.GetHashCode());
            Assert.False(initiationMessageExpected.GetHashCode() == initiationMessageUnexpected.GetHashCode());
        }