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]); }
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]); }