public IEnumerator RawByteDispatcherAddRemoveListenerTest()
        {
            _dispatcher = new RawByteDispatcher(1, 0, (num, bytes) =>
            {
                _receivedMsgNum = num;
                _receivedBytes  = bytes;
            });

            _dispatcher.AddListener(0);

            var dataPack = DataPackPool.GetDataPack();
            var msgBytes = new byte[] { 1, 2, 3, 4, 5, 6, 0, 0, 0, 0, 0, 1 };

            dataPack.TryAddDataToDict("VersionNum", -1, -1, 1, typeof(int));
            dataPack.TryAddDataToDict("MsgNum", -1, -1, 0, typeof(int));
            dataPack.TryAddDataToDict("MsgBodu", 0, msgBytes.Length, null, null);
            dataPack.PrepareWriteAfter(msgBytes.Length);
            dataPack.Writer.Write(msgBytes);
            dataPack.Position = 0;

            try
            {
                _dispatcher.Input(dataPack);
            }
            catch (Exception e)
            {
                Assert.Fail(e.Message);
            }

            yield return(null);

            Assert.AreEqual(_receivedMsgNum, 0);
            Assert.AreEqual(_receivedBytes, new byte[] { 1, 2, 3, 4, 5, 6, 0, 0, 0, 0, 0, 1 });

            dataPack = DataPackPool.GetDataPack();
            msgBytes = new byte[] { 1, 2, 3, 4, 5, 6, 0, 0, 0, 0, 0, 0 };
            dataPack.TryAddDataToDict("VersionNum", -1, -1, 1, typeof(int));
            dataPack.TryAddDataToDict("MsgNum", -1, -1, 0, typeof(int));
            dataPack.TryAddDataToDict("MsgBodu", 0, msgBytes.Length, null, null);
            dataPack.PrepareWriteAfter(msgBytes.Length);
            dataPack.Writer.Write(msgBytes);
            dataPack.Position = 0;

            _dispatcher.RemoveListener(0);

            try
            {
                _dispatcher.Input(dataPack);
            }
            catch (Exception e)
            {
                Assert.Fail(e.Message);
            }

            Assert.AreEqual(_receivedMsgNum, 0);
            Assert.AreEqual(_receivedBytes, new byte[] { 1, 2, 3, 4, 5, 6, 0, 0, 0, 0, 0, 1 });

            yield return(null);
        }
        public IEnumerator RawByteDispatcherSendTest()
        {
            _dispatcher = new RawByteDispatcher(1, 12, (num, bytes) => { });

            _dispatcher.OutPut += pack =>
            {
                _sendedMsgNum = (int)pack.DataDict["MsgNum"].Data;
                _sendedBytes  = pack.ReadAllBytes();
            };

            try
            {
                _dispatcher.Send(0, new byte[] { 1, 2, 3, 4, 5, 6, 0, 0, 0, 0, 0, 1 });
            }
            catch (Exception e)
            {
                Assert.Fail(e.Message);
            }

            yield return(null);

            Assert.AreEqual(_sendedMsgNum, 0);
            Assert.AreEqual(_sendedBytes, new byte[] { 1, 2, 3, 4, 5, 6, 0, 0, 0, 0, 0, 1 });
        }