コード例 #1
0
        public void Packet_NullPayload()
        {
            var pa     = new PacketAssembler(CreateLogger <PacketAssembler>());
            var packet = new TcpPacket(0, 0);

            pa.Assemble(packet);
        }
コード例 #2
0
        public void Packet_MultiplePackets()
        {
            IList <byte[]> assembledPayloads = new List <byte[]>();
            var            pa = new PacketAssembler(CreateLogger <PacketAssembler>());

            pa.PayloadReady += (s, e) =>
            {
                assembledPayloads.Add(e.Payload);
            };

            var p1 = CreatePacketPayload(new byte[] { 0x01, 0x01, 0x01 });
            var p2 = CreatePacketPayload(new byte[] { 0x02, 0x02, 0x02 });
            var p3 = CreatePacketPayload(new byte[] { 0x03, 0x03, 0x03 });

            var payload = p1.Concat(p2.Concat(p3)).ToArray();

            var packet = new TcpPacket(0, 0);

            packet.Push           = true;
            packet.Acknowledgment = true;
            packet.PayloadData    = payload;
            pa.Assemble(packet);

            Assert.AreEqual(3, assembledPayloads.Count);
            Assert.IsTrue(Enumerable.SequenceEqual(p1.Skip(2), assembledPayloads[0]));
            Assert.IsTrue(Enumerable.SequenceEqual(p2.Skip(2), assembledPayloads[1]));
            Assert.IsTrue(Enumerable.SequenceEqual(p3.Skip(2), assembledPayloads[2]));
        }
コード例 #3
0
        public void Packet_FragmentedSinglePacket_Three()
        {
            byte[] assembledPayload = null;
            var    pa = new PacketAssembler(CreateLogger <PacketAssembler>());

            pa.PayloadReady += (s, e) =>
            {
                assembledPayload = e.Payload;
            };

            var payload = CreatePacketPayload(new byte[] { 0x01, 0x01, 0x01 });
            var packet  = new TcpPacket(0, 0);

            packet.Push           = false;
            packet.Acknowledgment = true;
            packet.PayloadData    = payload.Take(3).ToArray();
            pa.Assemble(packet);

            packet                = new TcpPacket(0, 0);
            packet.Push           = false;
            packet.Acknowledgment = true;
            packet.PayloadData    = payload.Skip(2).Take(1).ToArray();
            pa.Assemble(packet);

            packet                = new TcpPacket(0, 0);
            packet.Push           = true;
            packet.Acknowledgment = true;
            packet.PayloadData    = payload.Skip(payload.Length - 1).ToArray();
            pa.Assemble(packet);

            Assert.IsTrue(Enumerable.SequenceEqual(payload.Skip(2), assembledPayload));
        }
コード例 #4
0
        public void Packet_InvalidPayload()
        {
            var payloadReady = false;
            var pa           = new PacketAssembler(CreateLogger <PacketAssembler>());

            pa.PayloadReady += (s, e) =>
            {
                payloadReady = true;
            };

            var packet = new TcpPacket(0, 0);

            packet.PayloadData = new byte[] { 0x01 };

            pa.Assemble(packet);

            Assert.IsFalse(payloadReady);
        }
コード例 #5
0
        public void Packet_CompleteSinglePacket_NoPush()
        {
            var payloadReady = false;
            var pa           = new PacketAssembler(CreateLogger <PacketAssembler>());

            pa.PayloadReady += (s, e) =>
            {
                payloadReady = true;
            };

            var packet = new TcpPacket(0, 0);

            packet.Push           = false;
            packet.Acknowledgment = true;
            packet.PayloadData    = CreatePacketPayload(new byte[] { 0x01 });

            pa.Assemble(packet);

            Assert.IsFalse(payloadReady);
        }
コード例 #6
0
        public void NullPacket_ArgumentException()
        {
            var pa = new PacketAssembler(CreateLogger <PacketAssembler>());

            pa.Assemble(null);
        }
コード例 #7
0
 public void Initialize_NoErrors()
 {
     var pa = new PacketAssembler(CreateLogger <PacketAssembler>());
 }