コード例 #1
0
        // RESPONSE (INNER CALL)
        private void ResponseInternal(IEnumerable <byte> data)
        {
            if (!_requestFromRemoteReceived)
            {
                _recorder.RecordError(this.GetType().Name,
                                      "Trying to send response without inner call");
                return;
            }

            _requestFromRemoteReceived = false;

            var nextPrefix     = _responseCalculator.GenerateIndexToSend(RESPONSE);
            var dataWithPrefix = data.WrapDataWithFirstByte(nextPrefix);

            _networkTunnel?.Send(dataWithPrefix.ToArray());
        }
コード例 #2
0
        public void ResponseInnerCall_WhenCalledAfterRequest_ShouldReceiveData(int dataToTransfer)
        {
            var actualResponded        = default(IEnumerable <byte>);
            var data1                  = BitConverter.GetBytes(0);
            var data2                  = BitConverter.GetBytes(dataToTransfer);
            var requestDataWithPrefix  = GenerateDataWithPrefix(Session.REQUEST, data1);
            var responseDataWithPrefix = GenerateDataWithPrefix(Session.RESPONSE, data2, true);

            _sut = new Session(_networkTunnel, _recorder);
            Mock.Raise(() => _networkTunnel.Received += null, requestDataWithPrefix.ToArray());
            Mock.Arrange(() => _networkTunnel.Send(Arg.IsAny <byte[]>())).DoInstead(
                (byte[] args) => actualResponded = args);

            _sut.Response(BitConverter.GetBytes(dataToTransfer));

            Assert.Equal(responseDataWithPrefix, actualResponded);
        }
コード例 #3
0
        public void Send_WithParameters_ShouldSentWithSameParameters()
        {
            var paramToSent = new byte[] { 0b01010101 };

            _sut = new NetworkTunnel(_socket, _recorder);

            _sut.Send(paramToSent);

            Mock.Assert(() => _socket.Send(paramToSent), Occurs.Once());
        }
コード例 #4
0
        public void Send_Throws_ShouldBeCaught()
        {
            var paramToSent = new byte[] { 0b01010101 };

            Mock.Arrange(() => _socket.Send(null)).IgnoreArguments().Throws(new SocketException());
            _sut = new NetworkTunnel(_socket, _recorder);

            _sut.Send(paramToSent);

            Mock.Assert(() => _recorder.RecordError(Arg.AnyString, Arg.AnyString), Occurs.Once());
        }
コード例 #5
0
        public void Send_ThrowsInterruptConnection_ShouldBeCaught()
        {
            var paramToSent = new byte[] { 0b01010101 };

            Mock.Arrange(() => _socket.Send(null)).IgnoreArguments().Throws(new SocketException(10054));
            _sut = new NetworkTunnel(_socket, _recorder);

            _sut.Send(paramToSent);

            Mock.Assert(() => _socket.Dispose(), Occurs.Exactly(1));
            Mock.Assert(() => _recorder.RecordInfo(Arg.AnyString, Arg.AnyString), Occurs.Exactly(3));
            Mock.Assert(() => _recorder.RecordError(Arg.AnyString, Arg.AnyString), Occurs.Never());
        }