Ejemplo n.º 1
0
        public void TwoSessions_WhenInteract_ShouldExchangeDataCorrectly()
        {
            var rawDataToSend      = BitConverter.GetBytes(644);
            var rawDataToResponse  = BitConverter.GetBytes(1121);
            var actualReceivedData = default(IEnumerable <byte>);
            var actualResponded    = default(IEnumerable <byte>);

            var recorder = Mock.Create <IRecorder>();
            var networkTunnelSession1 = new NetworkTunnelMock();
            var networkTunnelSession2 = new NetworkTunnelMock();

            networkTunnelSession1.RemoteTunnel = networkTunnelSession2;
            networkTunnelSession2.RemoteTunnel = networkTunnelSession1;
            var session1 = CreateSession(networkTunnelSession1, recorder);
            var session2 = CreateSession(networkTunnelSession2, recorder);

            session1.Responded += Responded;
            session2.Received  += Received;

            void Responded(IEnumerable <byte> bytes) => actualResponded = bytes;

            void Received(IEnumerable <byte> bytes) => actualReceivedData = bytes;

            session1.Send(rawDataToSend);
            session2.Response(rawDataToResponse);

            Assert.Equal(rawDataToSend, actualReceivedData);
            Assert.Equal(rawDataToResponse, actualResponded);
        }
Ejemplo n.º 2
0
        public void TwoSessions_WhenInteractManyTimes_ShouldExchangeDataCorrectly()
        {
            var session1ToSend = default(IEnumerable <byte>); //BitConverter.GetBytes(644);
            var session2ToSend = default(IEnumerable <byte>); //BitConverter.GetBytes(111);

            var session1ActualReceived = default(IEnumerable <byte>);
            var session2ActualReceived = default(IEnumerable <byte>);

            var session1ToResponse = default(IEnumerable <byte>); // = BitConverter.GetBytes(1121);
            var session2ToResponse = default(IEnumerable <byte>); // = BitConverter.GetBytes(40);

            var session1ActualRepsonse = default(IEnumerable <byte>);
            var session2ActualRepsonse = default(IEnumerable <byte>);

            var recorder = Mock.Create <IRecorder>();
            var networkTunnelSession1 = new NetworkTunnelMock();
            var networkTunnelSession2 = new NetworkTunnelMock();

            networkTunnelSession1.RemoteTunnel = networkTunnelSession2;
            networkTunnelSession2.RemoteTunnel = networkTunnelSession1;
            var session1 = CreateSession(networkTunnelSession1, recorder);
            var session2 = CreateSession(networkTunnelSession2, recorder);

            session1.Responded += Session1Responded;
            session2.Responded += Session2Responded;
            session1.Received  += Session1Received;
            session2.Received  += Session2Received;

            void Session1Responded(IEnumerable <byte> bytes) => session1ActualRepsonse = bytes;
            void Session2Responded(IEnumerable <byte> bytes) => session2ActualRepsonse = bytes;
            void Session1Received(IEnumerable <byte> bytes) => session1ActualReceived  = bytes;
            void Session2Received(IEnumerable <byte> bytes) => session2ActualReceived  = bytes;

            for (int i = 0; i < 30; i++)
            {
                session1ToSend = BitConverter.GetBytes(i * 5);
                session2ToSend = BitConverter.GetBytes(i + 2);

                session1ToResponse = BitConverter.GetBytes(i + 100);
                session2ToResponse = BitConverter.GetBytes(i + 200);

                session1.Send(session1ToSend);
                session2.Send(session2ToSend);
                session1.Response(session1ToResponse);
                session2.Response(session2ToResponse);

                Assert.Equal(session1ToSend, session2ActualReceived);
                Assert.Equal(session2ToSend, session1ActualReceived);
                Assert.Equal(session1ToResponse, session2ActualRepsonse);
                Assert.Equal(session2ToResponse, session1ActualRepsonse);
            }

            Mock.Assert(() => recorder.RecordError(Arg.AnyString, Arg.AnyString), Occurs.Never());
        }