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)); }
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)); }
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)); }
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(); } }
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); } }