Exemple #1
0
        public void Client_RemovesPlayer()
        {
            var user1 = new Mock <IMessenger>();

            user1.SetupGet(x => x.MessageBox).Returns("Test.Test1");
            set.OtherUsers.Add(user1.Object);

            var user2 = new Mock <IMessenger>();

            user2.SetupGet(x => x.MessageBox).Returns("Test.Test2");
            set.OtherUsers.Add(user2.Object);

            var user3 = new Mock <IMessenger>();

            user3.SetupGet(x => x.MessageBox).Returns("Test.Test3");
            set.OtherUsers.Add(user3.Object);

            var serverCmd = new UpdatePlayersCommand()
            {
                Players = new[] { "Test1", "Test3" }
            };

            serializer.Setup(x => x.Deserialize(It.IsAny <string>())).Returns(serverCmd);

            // Raising this command should cause the serializer to deserialize "BogusJson"
            // 'serverCmd.Players' will then be compared against set.OtherUsers and removals will
            // be made as appropriate.
            set.Command.Raise(x => x.MessageReceived += null, null, "BogusJson");

            // Make sure that we managed to get all the way from event raising to the new messenger in the set
            Assert.IsFalse(set.OtherUsers.Contains(user2.Object));
        }
Exemple #2
0
        public void Client_DoesntAddLocalUser()
        {
            var user1 = new Mock <IMessenger>();

            user1.SetupGet(x => x.MessageBox).Returns("Test.Test1");
            set.OtherUsers.Add(user1.Object);

            var user3 = new Mock <IMessenger>();

            user3.SetupGet(x => x.MessageBox).Returns("Test.Test3");
            set.OtherUsers.Add(user3.Object);

            set.LocalUser.SetupGet(x => x.MessageBox).Returns("Test.Test2");

            factory.MoqMessenger.Setup(x => x.MessageBox).Returns("Test.Test2");

            var serverCmd = new UpdatePlayersCommand()
            {
                Players = new[] { "Test1", "Test2", "Test3" }
            };

            serializer.Setup(x => x.Deserialize(It.IsAny <string>())).Returns(serverCmd);

            // Raising this command should cause the serializer to deserialize "BogusJson"
            // 'serverCmd.Players' will then be compared against set.OtherUsers and the factory
            // will be used to create a new messenger for the new users.
            // In this case, there are no new users because Test2 is the local user
            set.Command.Raise(x => x.MessageReceived += null, null, "BogusJson");

            Assert.IsFalse(set.OtherUsers.Contains(set.LocalUser.Object));
        }
Exemple #3
0
        public void Client_AddsNewPlayer()
        {
            var user1 = new Mock <IMessenger>();

            user1.SetupGet(x => x.MessageBox).Returns("Test.Test1");
            set.OtherUsers.Add(user1.Object);

            var user3 = new Mock <IMessenger>();

            user3.SetupGet(x => x.MessageBox).Returns("Test.Test3");
            set.OtherUsers.Add(user3.Object);

            factory.MoqMessenger.Setup(x => x.MessageBox).Returns("Test.Test2");

            var serverCmd = new UpdatePlayersCommand()
            {
                Players = new[] { "Test1", "Test2", "Test3" }
            };

            serializer.Setup(x => x.Deserialize(It.IsAny <string>())).Returns(serverCmd);

            // Raising this command should cause the serializer to deserialize "BogusJson"
            // 'serverCmd.Players' will then be compared against set.OtherUsers and the factory
            // will be used to create a new messenger for the new user.
            set.Command.Raise(x => x.MessageReceived += null, null, "BogusJson");

            // Make sure that we managed to get all the way from event raising to the new messenger in the set
            Assert.IsTrue(set.OtherUsers.Contains(factory.MoqMessenger.Object));
        }
Exemple #4
0
        public void UpdatePlayersCommand_SerializationRoundTrip()
        {
            var cmd = new UpdatePlayersCommand();

            cmd.Players = new[] { "Test1", "Test2" };

            string json = Serializer.Serialize(cmd);

            Assert.IsFalse(string.IsNullOrWhiteSpace(json));
            Assert.IsTrue(json.Contains("Test1"));
            Assert.IsTrue(json.Contains("Test2"));

            if (Serializer.Deserialize(json) is UpdatePlayersCommand cmd2)
            {
                Assert.IsTrue(cmd.Players.Length == 2);
                Assert.AreEqual("Test1", cmd.Players[0]);
                Assert.AreEqual("Test2", cmd.Players[1]);
            }
            else
            {
                Assert.Fail();
            }
        }
Exemple #5
0
        private void ServerCommands_MessageReceived(object sender, string e)
        {
            var obj = Serializer.Deserialize(e);

            if (obj is AddPlayerCommand cmd)
            {
                if (!Players.ContainsKey(cmd.PlayerName))
                {
                    var messenger = Factory.CreateMessenger(MessengerSet.Host, cmd.PlayerName);
                    Players.Add(cmd.PlayerName, messenger);
                    MessengerSet.OtherPlayers.Add(messenger);

                    MessengerSet.ServerBroadcast.Send("Welcome " + cmd.PlayerName + "!"); // TODO: make this welcome message more awesome somehow.
                }

                // Let everyone know the current state of users
                var updateCmd = new UpdatePlayersCommand()
                {
                    Players = Players.Keys.ToArray()
                };
                var msg = Serializer.Serialize(updateCmd);
                MessengerSet.ServerCommands.Send(msg);
            }
        }