Пример #1
0
        public void DoesNotRegisterNewGameMaster()
        {
            var server   = A.Fake <CommunicationServer.Connection>();
            var receiver = A.Fake <CommunicationServer.Receiver>();
            var game     = A.Fake <Messages.CommunicationServer.IGameState>();

            game.GameName = gameName;
            server.Games.Add(1, game);
            var msg = new Xsd2.RegisterGame(new Xsd2.GameInfo()
            {
                blueTeamPlayers = 1, redTeamPlayers = 1, gameName = gameName
            });

            msg.HandleOnCommunicationServer(server, receiver);

            var xmlSerializer = new XmlSerializer(typeof(Xsd2.RejectGameRegistration));
            //removing special character from message string
            string message = receiver.MessageList[0];

            message = message.Substring(0, message.Length - 1);
            using (var reader = new StringReader(message))
            {
                var obj = xmlSerializer.Deserialize(reader) as Xsd2.RejectGameRegistration;
                Assert.AreNotEqual(null, obj);
            }
        }
        //[TestMethod]
        public void KeepAliveFromGameMasterDoesNotInteractWithNormalMessages()
        {
            CommunicationServer.Connection server = new CommunicationServer.Connection(8004);
            server.StartServer();
            GameMaster.Connection gameMaster = new GameMaster.Connection(IPADDRESS, PORT + 4, parameters);
            gameMaster.Connect();
            Thread.Sleep(1500);
            var gameMessage = new Xsd2.RegisterGame(new Xsd2.GameInfo()
            {
                gameName = gameName, redTeamPlayers = 1, blueTeamPlayers = 1
            });
            var xmlSerializer = new XmlSerializer(typeof(Xsd2.RegisterGame));

            using (var writer = new StringWriter())
            {
                xmlSerializer.Serialize(writer, gameMessage);
                gameMaster.SendMessage(writer.ToString());
            }

            Thread.Sleep(SLEEPTIME);
            // Checks if IsGameMaster property is set to true
            Assert.AreEqual(true, server.Receivers[0].IsGameMaster);


            gameMaster.Disconnect();
            server.StopServer();
            Task.WaitAll();
        }
        //[TestMethod]
        // TO FIX
        public void GameMasterDoesntStartGame()
        {
            CommunicationServer.Connection serv = new CommunicationServer.Connection(8004);
            serv.StartServer();
            GameMaster.Connection gameMaster = new GameMaster.Connection(IPADDRESS, PORT + 4, parameters);

            gameMaster.Connect();
            Thread.Sleep(SLEEPTIME);

            // Checks if IsGameMaster property is set to false
            Assert.AreEqual(false, serv.Receivers[0].IsGameMaster);
            var gameMessage   = new Xsd2.RegisterGame();
            var xmlSerializer = new XmlSerializer(typeof(Xsd2.RegisterGame));

            using (var writer = new StringWriter())
            {
                xmlSerializer.Serialize(writer, gameMessage);
                gameMaster.SendMessage(writer.ToString());
            }

            Thread.Sleep(SLEEPTIME);
            // Checks if IsGameMaster property is set to true
            Assert.AreEqual(true, serv.Receivers[0].IsGameMaster);

            gameMaster.Disconnect();
            serv.StopServer();
            Task.WaitAll();
        }
 public GameState(IReceiver gameMaster, ulong gameId, Xsd2.RegisterGame msg)
 {
     _players       = new List <IReceiver>();
     _gameId        = gameId;
     _gameMaster    = gameMaster;
     _blueTeamMax   = msg.NewGameInfo.blueTeamPlayers;
     _redTeamMax    = msg.NewGameInfo.redTeamPlayers;
     _blueTeamCount = 0;
     _redTeamCount  = 0;
     _gameName      = msg.NewGameInfo.gameName;
 }
Пример #5
0
        public void RegistersNewGameMaster()
        {
            var server   = A.Fake <CommunicationServer.Connection>();
            var receiver = A.Fake <CommunicationServer.Receiver>();
            var msg      = new Xsd2.RegisterGame(new Xsd2.GameInfo()
            {
                gameName = gameName, redTeamPlayers = 1, blueTeamPlayers = 1
            });

            msg.HandleOnCommunicationServer(server, receiver);

            Assert.AreEqual(receiver, server.Games[1].GameMaster);
            Assert.AreEqual(true, receiver.IsGameMaster);
        }
        public void ChecksIfPlayerAndGameMasterCanConnectToCommunicationServer()
        {
            CommunicationServer.Connection serv = new CommunicationServer.Connection(PORT + 1);
            serv.StartServer();
            GameMaster.Connection gameMaster = new GameMaster.Connection(IPADDRESS, PORT + 1, parameters);
            gameMaster.Connect();
            var gameMessage = new Xsd2.RegisterGame(new Xsd2.GameInfo()
            {
                redTeamPlayers = 1, blueTeamPlayers = 1, gameName = gameName
            });
            var xmlSerializer = new XmlSerializer(typeof(Xsd2.RegisterGame));

            using (var writer = new StringWriter())
            {
                xmlSerializer.Serialize(writer, gameMessage);
                gameMaster.SendMessage(writer.ToString());
            }

            var player = FakeItEasy.A.Fake <Player.Connection>(o => o.WithArgumentsForConstructor(
                                                                   new object[] { "127.0.0.1", 8001, gameName, playerParameters, new object() }));

            player.Connect();
            Thread.Sleep(SLEEPTIME);

            int gmCount = 0;

            foreach (var reciever in serv.Receivers)
            {
                if (reciever.IsGameMaster)
                {
                    gmCount++;
                }
            }

            // Checking if there is only one gamemaster
            Assert.AreEqual(1, gmCount);
            // Checking if gamemaster and player properly connected
            Assert.AreEqual(2, serv.Receivers.Count);

            player.Disconnect();
            Thread.Sleep(SLEEPTIME);
            gameMaster.Disconnect();
            Thread.Sleep(SLEEPTIME);
            serv.StopServer();
            Thread.Sleep(SLEEPTIME);
            Task.WaitAll();
        }
Пример #7
0
        static void Main(string[] args)
        {
            foreach (var s in args)
            {
                Console.WriteLine("args: {0}", s);
            }
            _parametersReader = new Messages.ParametersReader(args);
            Tuple <string, int> endPoint = _parametersReader.Validate();

            _parametersReader.ReadGameMasterInputSettings();
            var gameState = new GameState(_parametersReader);

            Console.WriteLine(_parametersReader.ConfigurationFilePath);
            Connection connection = new Connection(endPoint.Item1, endPoint.Item2, _parametersReader);

            try
            {
                connection.Connect();
            }
            catch (Exception e)
            {
                Console.WriteLine("{0} has encountered exception: {1} while trying to connect", nameof(Program), e.Message);
                Console.WriteLine("{0} will now exit", nameof(Program));
            }

            var    gameMessage = new Xsd2.RegisterGame(new Xsd2.GameInfo(connection.GameState));
            var    serializer  = new Serializer(gameMessage);
            string gameMsg     = serializer.Serialize();

            Console.WriteLine(gameMsg);
            connection.SendMessage(gameMsg);

            Task.WaitAll();
            Cleanup();
            Console.ReadLine();
        }
Пример #8
0
        public IGameState CreateGame(IReceiver gameMaster, Xsd2.RegisterGame msg)
        {
            var gameWithSameName = _games.FirstOrDefault(g => g.Value.GameName == msg.NewGameInfo.gameName).Value;

            if (gameWithSameName != null)
            {
                return(null);
            }
            ulong gameId = 0;

            lock (_gameCountLock)
            {
                _gameCount++;
                gameId = _gameCount;
            }
            gameMaster.IsGameMaster = true;
            gameMaster.GameId       = gameId;

            var game = new GameState(gameMaster, gameId, msg);

            _games.Add(gameId, game);

            return(game);
        }