Exemple #1
0
        public void Close_Socket()
        {
            var mockedServer = new MockSocketProxy();
            var testServer   = new Server(mockedServer);

            testServer.CloseSocket();
            mockedServer.VerifyClose();
        }
Exemple #2
0
        public void Exit_Chat()
        {
            var mockedClient = new MockSocketProxy();
            var testClient   = new Client(mockedClient);

            testClient.ExitClient();
            mockedClient.VerifyClose();
        }
Exemple #3
0
        public void Start_Server_And_Listen_Connections()
        {
            var mockedServer = new MockSocketProxy();
            var testServer   = new Server(mockedServer);

            testServer.RunSocket(IPAddress.Parse("180.0.0.0"), 2100);
            mockedServer.VerifyBind(new IPEndPoint(IPAddress.Parse("180.0.0.0"), 2100));
            mockedServer.VerifyListen(6);
        }
Exemple #4
0
        public void Add__ShouldAppendList()
        {
            var socket = new MockSocketProxy();

            _cluster.Add(socket);
            var sockets = _cluster.GetSnapshot();

            Assert.Single(sockets);
            Assert.Equal(socket, sockets.First());
        }
Exemple #5
0
        public void Get_Client_IP_Address()
        {
            var mockedServer = new MockSocketProxy();
            var testServer   = new Server(mockedServer);

            testServer.RunSocket(IPAddress.Parse("180.0.0.0"), 2100);
            mockedServer.VerifyBind(new IPEndPoint(IPAddress.Parse("180.0.0.0"), 2100));
            mockedServer.VerifyListen(6);
            testServer.ReceiveConnections();
            mockedServer.VerifyRemoteEndPoint();
        }
Exemple #6
0
        public void Start_Client_And_Send_Connections()
        {
            var mockedClient = new MockSocketProxy();
            var testClient   = new Client(mockedClient);

            IPAddress ip = Dns.GetHostEntry(Dns.GetHostName()).AddressList[0];

            testClient.StartClient(IPAddress.Parse("180.0.0.0"), 2100);
            mockedClient.VerifyConnect(IPAddress.Parse("180.0.0.0"), 2100);
            byte[] msg = Encoding.ASCII.GetBytes("This is a test<EOF>");
            mockedClient.VerifySend(msg);
        }
Exemple #7
0
        public void Wrapped_Invalid_BiggerLength_Message_ShouldBe_Unwrapped()
        {
            MockSocketProxy mockSocket   = new MockSocketProxy();
            NormalPerson    normalPerson = new NormalPerson(new Person(mockSocket));
            Buffer          buffer       = new Buffer();

            mockSocket.internalReceiveBuffer.Add(mockSocket.WrapData(new Message("test").ToByteArray(), 10));
            var exception = Record.Exception(() => buffer.Read(mockSocket));

            Assert.IsType(typeof(System.Exception), exception);
            Assert.True(exception.Message.Contains("You've received zero bytes. Please, check your connection."));
        }
Exemple #8
0
        public void Wrapped_Empty_Message_ShouldBe_Unwrapped()
        {
            MockSocketProxy mockSocket   = new MockSocketProxy();
            NormalPerson    normalPerson = new NormalPerson(new Person(mockSocket));
            Buffer          buffer       = new Buffer();

            mockSocket.internalReceiveBuffer.Add(new Message("").WrapData());
            byte[] res    = buffer.Read(mockSocket);
            string result = Encoding.ASCII.GetString(res);

            Assert.Equal("", result);
        }
        public void If_NewClient_Server_AskFor_Username()
        {
            MockSocketProxy serverMockSocket = new MockSocketProxy();
            Server          testServer       = new Server(serverMockSocket);

            MockSocketProxy mockSocket = new MockSocketProxy();

            mockSocket.internalReceiveBuffer.Add(new Message("testUserName").WrapData());
            testServer.GetRoom().Login(new NormalPerson(new Person(mockSocket)));

            Assert.Equal("S00", mockSocket.sentMessage[0]);
            Assert.Equal("S01", mockSocket.sentMessage[1]);
        }
Exemple #10
0
        public void If_User_Types_Input_Client_Sends_Message_()
        {
            MockSocketProxy mockSocket = new MockSocketProxy();
            Client          testClient = new Client(mockSocket);

            testClient.NormalPerson = new NormalPerson(new Person(mockSocket));
            mockSocket.internalReceiveBuffer.Add(new Message("Hello").WrapData());
            Stack <string> stack = new Stack <string>(new string[] { "exit", "test" });

            testClient.HandleConsole((Del)(() => stack.Pop()));

            Assert.Equal("test", mockSocket.sentMessage[0]);
        }
        public void If_OnlyConnected_Person_Sends_Exit_Msg_Room_IsEmptied()
        {
            MockSocketProxy serverMockSocket = new MockSocketProxy();
            Server          testServer       = new Server(serverMockSocket);
            Room            testRoom         = testServer.GetRoom();
            MockSocketProxy mockSocket       = new MockSocketProxy();
            NormalPerson    testPerson       = new NormalPerson(new Person("testUserName", mockSocket));

            testRoom.Join(testPerson);
            mockSocket.internalReceiveBuffer.Add(new Message("exit").WrapData());
            testServer.HandleCommunication(testPerson, () => testPerson.ReceiveMessage());

            Assert.True(testRoom.IsRoomEmpty());
        }
Exemple #12
0
        public void If_Unique_UserName_Client_Should_Login()
        {
            MockSocketProxy mockSocket = new MockSocketProxy();
            Client          testClient = new Client(mockSocket);

            testClient.NormalPerson = new NormalPerson(new Person(mockSocket));
            mockSocket.internalReceiveBuffer.Add(new Message("S00").WrapData());
            mockSocket.internalReceiveBuffer.Add(new Message("S01").WrapData());
            Stack <string> stack = new Stack <string>(new string[] { "testUserName" });

            testClient.LoginProcess(() => stack.Pop());

            Assert.Equal("testUserName", mockSocket.sentMessage[0]);
        }
Exemple #13
0
        public void If_Unique_UserName_Client_ShouldSet_UserName_OnPerson()
        {
            MockSocketProxy mockSocket = new MockSocketProxy();
            Client          testClient = new Client(mockSocket);

            testClient.NormalPerson = new NormalPerson(new Person(mockSocket));
            mockSocket.internalReceiveBuffer.Add(new Message("S00").WrapData());
            mockSocket.internalReceiveBuffer.Add(new Message("S01").WrapData());
            Queue <string> queue = new Queue <string>(new string[] { "testUserName" });

            testClient.LoginProcess(() => queue.Dequeue());

            Assert.Equal("testUserName", testClient.NormalPerson.Name);
        }
Exemple #14
0
        private void _addClients(int n = 5)
        {
            var sockets = new ISocketProxy[n];

            for (var i = 0; i < sockets.Length; i++)
            {
                sockets[i] = new MockSocketProxy();
            }

            foreach (var socket in sockets)
            {
                _cluster.Add(socket);
            }
        }
Exemple #15
0
        public void If_Duplicate_UserName_NewPersonName_Is_Set_To_New_UserName()
        {
            MockSocketProxy mockSocket = new MockSocketProxy();
            Client          testClient = new Client(mockSocket);

            testClient.NormalPerson = new NormalPerson(new Person(mockSocket));
            mockSocket.internalReceiveBuffer.Add(new Message("S00").WrapData());
            mockSocket.internalReceiveBuffer.Add(new Message("E00").WrapData());
            mockSocket.internalReceiveBuffer.Add(new Message("S01").WrapData());
            Stack <string> stack = new Stack <string>(new string[] { "testUserNameOne", "testUserNameTwo" });

            testClient.LoginProcess(() => stack.Pop());

            Assert.Equal("testUserNameOne", testClient.NormalPerson.Name);
        }
Exemple #16
0
        public void If_Duplicate_UserName_Login_Must_Provide_Another_UserName()
        {
            MockSocketProxy mockSocket = new MockSocketProxy();
            Client          testClient = new Client(mockSocket);

            testClient.NormalPerson = new NormalPerson(new Person(mockSocket));
            mockSocket.internalReceiveBuffer.Add(new Message("S00").WrapData());
            mockSocket.internalReceiveBuffer.Add(new Message("E00").WrapData());
            mockSocket.internalReceiveBuffer.Add(new Message("S01").WrapData());
            Stack <string> stack = new Stack <string>(new string[] { "testUserNameOne", "testUserNameTwo" });

            testClient.LoginProcess(() => stack.Pop());

            Assert.Equal("testUserNameTwo", mockSocket.sentMessage[0]);
            Assert.Equal("testUserNameOne", mockSocket.sentMessage[1]);
        }
        public void If_LoggedIn_Person_Sends_Msg_Server_Answers_With_Broadcast()
        {
            MockSocketProxy serverMockSocket = new MockSocketProxy();
            Server          testServer       = new Server(serverMockSocket);
            Room            testRoom         = testServer.GetRoom();
            MockSocketProxy mockSocketOne    = new MockSocketProxy();
            MockSocketProxy mockSocketTwo    = new MockSocketProxy();
            NormalPerson    testPersonOne    = new NormalPerson(new Person("testUserNameOne", mockSocketOne));
            NormalPerson    testPersonTwo    = new NormalPerson(new Person("testUserNameTwo", mockSocketTwo));

            mockSocketOne.internalReceiveBuffer.Add(new Message("test").WrapData());
            mockSocketOne.internalReceiveBuffer.Add(new Message("exit").WrapData());
            mockSocketTwo.internalReceiveBuffer.Add(new Message("exit").WrapData());
            testRoom.Join(testPersonOne);
            testRoom.Join(testPersonTwo);
            testServer.HandleCommunication(testPersonOne, () => testPersonOne.ReceiveMessage());
            testServer.HandleCommunication(testPersonTwo, () => testPersonTwo.ReceiveMessage());

            Assert.Equal("testUserNameOne: test", mockSocketTwo.sentMessage[0]);
            Assert.Equal("testUserNameOne is offline.", mockSocketTwo.sentMessage[1]);
        }
        public void If_Duplicate_UserName_Server_AsksFor_AnotherUsername()
        {
            MockSocketProxy serverMockSocket = new MockSocketProxy();
            Server          testServer       = new Server(serverMockSocket);
            Room            testRoom         = testServer.GetRoom();

            MockSocketProxy mockSocketOne = new MockSocketProxy();
            NormalPerson    testPersonOne = new NormalPerson(new Person(mockSocketOne));

            mockSocketOne.internalReceiveBuffer.Add(new Message("testUserNameOne").WrapData());
            testRoom.Login(testPersonOne);

            MockSocketProxy mockSocketTwo = new MockSocketProxy();
            NormalPerson    testPersonTwo = new NormalPerson(new Person(mockSocketTwo));

            mockSocketTwo.internalReceiveBuffer.Add(new Message("testUserNameOne").WrapData());
            mockSocketTwo.internalReceiveBuffer.Add(new Message("testUserNameTwo").WrapData());
            testRoom.Login(testPersonTwo);

            Assert.Equal("S00", mockSocketTwo.sentMessage[0]);
            Assert.Equal("E00", mockSocketTwo.sentMessage[1]);
        }
Exemple #19
0
 public SocketManagerTests()
 {
     _listener      = new MockSocketProxy();
     _socketCluster = new SocketCluster(1000);
     _socketManager = new SocketManager(_listener, _socketCluster);
 }