Ejemplo n.º 1
0
        public void RcvBufferReadMsg()
        {
            uint messageStart = 2U << 30;
            uint messageEnd   = 1U << 30;
            Unit unit1        = new Unit();

            unit1.m_iFlag = 0;
            unit1.m_Packet.SetDataFromBytes(new byte[] { 1, 2 });
            unit1.m_Packet.SetMessageNumber(messageStart);

            Unit unit2 = new Unit();

            unit2.m_iFlag = 0;
            unit2.m_Packet.SetDataFromBytes(new byte[] { 3, 4 });
            unit2.m_Packet.SetMessageNumber(0);

            Unit unit3 = new Unit();

            unit3.m_iFlag = 0;
            unit3.m_Packet.SetDataFromBytes(new byte[] { 5, 6 });
            unit3.m_Packet.SetMessageNumber(messageEnd);

            int       bufferSize = 4;
            RcvBuffer rcvBuffer  = new RcvBuffer(bufferSize);

            rcvBuffer.addData(unit1, 0);
            rcvBuffer.addData(unit2, 1);
            rcvBuffer.addData(unit3, 2);

            byte[] msg  = new byte[6];
            int    read = rcvBuffer.readMsg(msg, msg.Length);

            Assert.AreEqual(6, read);
            Assert.AreEqual(1, msg[0]);
            Assert.AreEqual(2, msg[1]);
            Assert.AreEqual(3, msg[2]);
            Assert.AreEqual(4, msg[3]);
            Assert.AreEqual(5, msg[4]);
            Assert.AreEqual(6, msg[5]);
        }
Ejemplo n.º 2
0
        public void RcvBufferReadBuffer()
        {
            Unit unit1 = new Unit();

            unit1.m_iFlag = 0;
            unit1.m_Packet.SetDataFromBytes(new byte[] { 1, 2 });

            Unit unit2 = new Unit();

            unit2.m_iFlag = 0;
            unit2.m_Packet.SetDataFromBytes(new byte[] { 3, 4 });

            Unit unit3 = new Unit();

            unit3.m_iFlag = 0;
            unit3.m_Packet.SetDataFromBytes(new byte[] { 5, 6 });

            int       bufferSize = 3;
            RcvBuffer rcvBuffer  = new RcvBuffer(bufferSize);

            Assert.AreEqual(2, rcvBuffer.getAvailBufSize());

            Assert.AreEqual(0, rcvBuffer.addData(unit1, 0));
            Assert.AreEqual(1, unit1.m_iFlag);
            Assert.AreEqual(2, rcvBuffer.getAvailBufSize());

            Assert.AreEqual(0, rcvBuffer.addData(unit2, 1));
            Assert.AreEqual(1, unit2.m_iFlag);
            Assert.AreEqual(2, rcvBuffer.getAvailBufSize());

            Assert.AreEqual(0, rcvBuffer.addData(unit3, 2));
            Assert.AreEqual(1, unit3.m_iFlag);

            byte[] readData = new byte[4];
            int    read     = rcvBuffer.readBuffer(readData, 0, readData.Length);

            Assert.AreEqual(0, read);

            rcvBuffer.ackData(1);
            read = rcvBuffer.readBuffer(readData, 0, readData.Length);
            Assert.AreEqual(2, read);
            Assert.AreEqual(1, readData[0]);
            Assert.AreEqual(2, readData[1]);

            rcvBuffer.ackData(2);
            read = rcvBuffer.readBuffer(readData, 0, readData.Length);
            Assert.AreEqual(4, read);
            Assert.AreEqual(3, readData[0]);
            Assert.AreEqual(4, readData[1]);
            Assert.AreEqual(5, readData[2]);
            Assert.AreEqual(6, readData[3]);

            read = rcvBuffer.readBuffer(readData, 0, readData.Length);
            Assert.AreEqual(0, read);

            Assert.AreEqual(0, unit1.m_iFlag);
            Assert.AreEqual(0, unit2.m_iFlag);
            Assert.AreEqual(0, unit3.m_iFlag);


            Assert.AreEqual(0, rcvBuffer.addData(unit1, 0));
            Assert.AreEqual(0, rcvBuffer.addData(unit2, 1));
            Assert.AreEqual(0, rcvBuffer.addData(unit3, 2));

            rcvBuffer.ackData(2);

            byte[] smallBuffer = new byte[1];
            read = rcvBuffer.readBuffer(smallBuffer, 0, 1);

            Assert.AreEqual(1, read);
            Assert.AreEqual(1, smallBuffer[0]);

            read = rcvBuffer.readBuffer(smallBuffer, 0, 1);

            Assert.AreEqual(1, read);
            Assert.AreEqual(2, smallBuffer[0]);

            read = rcvBuffer.readBuffer(readData, 1, 2);

            Assert.AreEqual(2, read);
            Assert.AreEqual(3, readData[1]);
            Assert.AreEqual(4, readData[2]);
        }