示例#1
0
        public void Send_TwoObjectsStraightAway_BothProcessedSeperatly()
        {
            //Arrange
            Client client = null;

            client = Client1ObjectTransport.GetConnectedClients().First();

            //Act
            serverObjectTransport.Receive <MockObjectMessage>()
            .Reply((o) => { return(o); })
            .Execute();

            var mockObject = new MockObjectMessage()
            {
                Property1_string = "Mock Object"
            };
            MockObjectMessage responseObject  = null;
            MockObjectMessage responseObject2 = null;

            Client1ObjectTransport.Send(mockObject)
            .Response <MockObjectMessage>((r) => { responseObject = r; })
            .Execute();

            Client1ObjectTransport.Send(mockObject)
            .Response <MockObjectMessage>((r) => { responseObject2 = r; })
            .Execute();

            Utilities.WaitFor(ref responseObject);
            Utilities.WaitFor(ref responseObject2);

            //Assert
            Assert.AreEqual(responseObject.Property1_string, "Mock Object");
            Assert.AreEqual(responseObject2.Property1_string, "Mock Object");
        }
示例#2
0
        protected void SetUpNetworkChannels(INetworkChannel client, INetworkChannel client2, INetworkChannel server)
        {
            Client1 = client;
            Client2 = client2;
            Server  = server;

            ServerOnConnectClients     = new List <Client>();
            ServerOnDisconnectClients  = new List <Client>();
            Client1OnConnectClients    = new List <Client>();
            Client1OnDisconnectClients = new List <Client>();

            serverObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(Server);
            serverObjectTransport.OnClientConnect(c => ServerOnConnectClients.Add(c));
            serverObjectTransport.OnClientDisconnect(c => ServerOnDisconnectClients.Add(c));
            serverObjectTransport.Start("127.0.0.1", 0);

            Utilities.WaitFor(() => server.LocalPort != 0);

            Client1ObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(Client1);
            Client1ObjectTransport.OnClientConnect(c => Client1OnConnectClients.Add(c));
            Client1ObjectTransport.OnClientDisconnect(c => Client1OnDisconnectClients.Add(c));
            Client1ObjectTransport.Start("127.0.0.1", Server.LocalPort);

            //Wait for the connection to have been made
            Utilities.WaitFor(() => serverObjectTransport.GetConnectedClients().Count() == 1);
            Utilities.WaitFor(() => Client1ObjectTransport.GetConnectedClients().Count() == 1);
        }
示例#3
0
        public void Server_SendObject_CorrectObjectSent()
        {
            //Arrange
            MockObjectMessage receivedObject = null;

            Client client = serverObjectTransport.GetConnectedClients().First();

            //Act
            Client1ObjectTransport.Receive <MockObjectMessage>(o =>
                                                               receivedObject = o
                                                               ).Execute();

            serverObjectTransport.Send(new MockObjectMessage()
            {
                Property1_string  = "hello world!",
                Property2_int     = 123,
                Property3_decimal = 12.3M
            })
            .To(client)
            .Execute();

            Utilities.WaitFor(ref receivedObject);

            //Assert
            Assert.AreEqual("hello world!", receivedObject.Property1_string);
            Assert.AreEqual(123, receivedObject.Property2_int);
            Assert.AreEqual(12.3M, receivedObject.Property3_decimal);
        }
示例#4
0
        public void Server_ReceivesObjects_CorrectObjectReceived()
        {
            //Arrange
            MockObjectMessage receivedObject = null;

            //Act
            serverObjectTransport.Receive <MockObjectMessage>(o =>
            {
                receivedObject = o;
            }).Execute();

            Client1ObjectTransport.Send(new MockObjectMessage()
            {
                Property1_string  = "hello world!",
                Property2_int     = 123,
                Property3_decimal = 12.3M
            }).Execute();

            Utilities.WaitFor(ref receivedObject);

            //Assert
            Assert.AreEqual("hello world!", receivedObject.Property1_string);
            Assert.AreEqual(123, receivedObject.Property2_int);
            Assert.AreEqual(12.3M, receivedObject.Property3_decimal);
        }
示例#5
0
        public void ClientDisconnectsServer_ServerOnClientDisconnectCalled()
        {
            //Arrange
            //Create a second client
            ObjectTransport clientObjectTransport2 = TestObjectTransportFactory.CreateNewObjectTransport(Client2);

            clientObjectTransport2.Start("127.0.0.1", Server.LocalPort);

            //Wait for the connection to have been made
            Utilities.WaitFor(() => serverObjectTransport.GetConnectedClients().Count() == 2);

            //Act

            //disconnect the server from the client
            Client1ObjectTransport.DisconnectClient();

            Utilities.WaitFor(() => ServerOnDisconnectClients.Count == 1);

            //Assert
            //Ensure that the client record was disconnect from the server
            Assert.AreEqual(1, serverObjectTransport.GetConnectedClients().Count());

            //Esnure that the client who disconnected from the server was the one that we called disconect
            Assert.AreEqual(ServerOnDisconnectClients.First().Port, Client1.LocalPort);
        }
示例#6
0
        public void SendAndReplyMessage_ResponseIsCalled()
        {
            //Arrange
            Client client = null;

            client = Client1ObjectTransport.GetConnectedClients().First();

            //Act
            serverObjectTransport.Receive <MockObjectMessage>()
            .Reply((o) => { return(o); })
            .Execute();

            var mockObject = new MockObjectMessage()
            {
                Property1_string = "Mock Object"
            };
            MockObjectMessage responseObject = null;

            Client1ObjectTransport.Send(mockObject)
            .Response <MockObjectMessage>((r) => { responseObject = r; })
            .Execute();

            Utilities.WaitFor(ref responseObject);

            //Assert
            Assert.AreEqual(responseObject.Property1_string, "Mock Object");
        }
示例#7
0
        public void Client_StartExecuted_ServerIsAddedAsClient()
        {
            //Arrange
            Client FirstClient = null;

            //Act
            FirstClient = Client1ObjectTransport.GetConnectedClients().First();


            //Assert
            Assert.AreEqual(FirstClient.IPAddress, "127.0.0.1");
            Assert.AreEqual(FirstClient.Port, Server.LocalPort);
        }
示例#8
0
        public void Server_ClientDisconnects_CallbackCalled()
        {
            //Arrange

            //Act

            Client1ObjectTransport.Stop();
            Utilities.WaitFor(() => ServerOnDisconnectClients.Count() == 1);

            //Assert
            var clientConnect    = ServerOnConnectClients.First();
            var clientDisconnect = ServerOnDisconnectClients.First();

            Assert.AreEqual(clientConnect.IPAddress, "127.0.0.1");
            Assert.AreEqual(clientDisconnect.IPAddress, "127.0.0.1");
            Assert.AreEqual(clientDisconnect, clientConnect);
            Assert.AreEqual(0, Client1ObjectTransport.GetConnectedClients().Count());
            Assert.AreEqual(0, serverObjectTransport.GetConnectedClients().Count());
        }
示例#9
0
        public void ClientDisconnects_CallbackCalled()
        {
            //Arrange
            Client client           = null;
            Client clientDisconnect = null;

            client = Client1ObjectTransport.GetConnectedClients().First();

            //Act
            serverObjectTransport.Stop();

            Utilities.WaitFor(() => Client1OnDisconnectClients.Count() > 0);
            clientDisconnect = Client1OnDisconnectClients.First();

            //Assert
            Assert.AreEqual(client.IPAddress, "127.0.0.1");
            Assert.AreEqual(clientDisconnect.IPAddress, "127.0.0.1");
            Assert.AreEqual(clientDisconnect, client);
            Utilities.WaitFor(() => Client1ObjectTransport.GetConnectedClients().Count() == 0);
            Utilities.WaitFor(() => serverObjectTransport.GetConnectedClients().Count() == 0);
        }