public IEnumerator LocalUDP_Test() { pPacketCheckRecieve = SPacketTest_Struct.Dummy(); Assert.AreEqual(pPacketCheckRecieve, SPacketTest_Struct.Dummy()); Network_UDP_Test.EventMakeSingleton(); Network_UDP_Test.instance.DoStartListen_UDP(iTestPort); bIsRecievePacket_OnFail = false; SPacketTest_Struct pSendPacket = new SPacketTest_Struct(1, "보냈다"); // 보내기 전에는 체크용 패킷과 보낼 패킷과 일치하지 않는다. Assert.AreNotEqual(pPacketCheckRecieve.iValue, pSendPacket.iValue); Assert.AreNotEqual(pPacketCheckRecieve.strValue, pSendPacket.strValue); Network_UDP_Test.instance.DoSendPacket(strTestTargetIP, iTestPort, pSendPacket); while (bIsRecievePacket_OnFail == false) { yield return(null); } // 패킷을 받은 뒤에는 체크용 패킷과 보낼 패킷이 일치한다. Assert.AreEqual(pPacketCheckRecieve.iValue, pSendPacket.iValue); Assert.AreEqual(pPacketCheckRecieve.strValue, pSendPacket.strValue); }
public IEnumerator Convert_Struct_To_Byte_To_Struct_Test() { SPacketTest_Struct pPacket1 = new SPacketTest_Struct(1, "테스트Test123!@#"); SPacketTest_Struct pPacket2 = new SPacketTest_Struct(); Assert.AreNotEqual(pPacket1, pPacket2); byte[] arrData = ByteExtension.ConvertByteArray(pPacket1); ByteExtension.ConvertPacket(arrData, out pPacket2); Assert.AreEqual(pPacket1, pPacket2); yield return(null); }
public IEnumerator 구조체에서_바이트변환_다시_구조체로변환_테스트() { SPacketTest_Struct pPacket1 = new SPacketTest_Struct(1, "테스트Test123!@#"); SPacketTest_Struct pPacket2 = new SPacketTest_Struct(); Assert.AreNotEqual(pPacket1, pPacket2); byte[] arrData = SCByteHelper.ConvertByteArray(pPacket1); SCByteHelper.ConvertPacket(arrData, out pPacket2); Assert.AreEqual(pPacket1, pPacket2); yield return(null); }
// 프로젝트 레벨에선, 페킷 헤더 내용을 토대로 페이로드에 있는 패킷을 파싱해야 한다. // 테스트 코드이므로 생략 protected override void OnRecievePacket(STestSession pSessionSender, SPacketHeader pPacketHeader, byte[] arrRecieveData, string strIP) { /// <see cref="Network_UDP_Test.로컬_UDP송수신_패킷헤더및_패킷디큐_테스트"/> switch (pPacketHeader.ePacketType) { case ETestPacketType.Test_Struct: { SPacketTest_Struct pPacketTest1; if (arrRecieveData.Convert_ToStruct(out pPacketTest1)) { pPacketCheckRecieve = pPacketTest1; Network_UDP_Test.instance.DoSendPacket(strTestTargetIP, iTestPort, new SPacketTest_Struct(2, "받았다")); bIsRecievePacket_OnFail = true; } } break; case ETestPacketType.Test_Class: break; case ETestPacketType.Test_Reliable_Send: if (iReliableRecvCount++ >= 3) { Network_UDP_Test.instance.DoSendPacket(strTestTargetIP, iTestPort, new SPacketTest_ReliableRespond("정상응답")); } else { Debug.Log("릴라이어블 리시브 카운트 : " + iReliableRecvCount + " " + DateTime.Now.ToString("mm:ss.") + DateTime.Now.Millisecond); Network_UDP_Test.instance.DoSendPacket(strTestTargetIP, iTestPort, new SPacketTest_ReliableRespond("거짓응답")); } break; case ETestPacketType.Test_Reliable_Respond: break; // 정해진 패킷 타입이 아닌 경우 - default: Debug.Log(" OnRecievePacket - " + pPacketHeader.ePacketType); break; } }
public void RingBuffer_Enqueue_Dequeue_Test() { SPacketTest_Struct pPacketTest = new SPacketTest_Struct(1, "인큐_디큐_테스트"); SPacketTest_Struct pPacketTest2 = new SPacketTest_Struct(2, "더미데이터"); byte[] arrPacketData = ByteExtension.ConvertByteArray(pPacketTest); int iDataSize = arrPacketData.Length; var pBuffer = new CCircularBuffer <byte>(10240); pBuffer.Enqueue(arrPacketData); Assert.AreNotEqual(pPacketTest.iValue, pPacketTest2.iValue); Assert.AreNotEqual(pPacketTest.strValue, pPacketTest2.strValue); byte[] arrPacketData2 = pBuffer.Dequeue_OrNull(iDataSize); arrPacketData2.Convert_ToStruct(out pPacketTest2); Assert.AreEqual(pPacketTest.iValue, pPacketTest2.iValue); Assert.AreEqual(pPacketTest.strValue, pPacketTest2.strValue); }