JceTest.cpp 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. #include <catch.hpp>
  2. #include <Jce.h>
  3. #include <Wup.h>
  4. #include <natStream.h>
  5. using namespace NatsuLib;
  6. using namespace YumeBot;
  7. TEST_CASE("Jce", "[Jce]")
  8. {
  9. using namespace Jce;
  10. SECTION("Serialization")
  11. {
  12. const auto test = make_ref<JceTest>();
  13. test->SetTestFloat(2.0f);
  14. test->SetTestInt(233);
  15. test->GetTestMap()[1] = 2.0f;
  16. test->GetTestMap()[3] = 5.0f;
  17. const auto memoryStream = make_ref<natMemoryStream>(0, true, true, true);
  18. {
  19. JceOutputStream outputStream{ make_ref<natBinaryWriter>(memoryStream) };
  20. outputStream.Write(0, test);
  21. }
  22. memoryStream->SetPositionFromBegin(0);
  23. natRefPointer<JceTest> ptr;
  24. {
  25. JceInputStream inputStream{ make_ref<natBinaryReader>(memoryStream) };
  26. const auto readSucceed = inputStream.Read(0, ptr);
  27. REQUIRE(readSucceed);
  28. }
  29. CHECK(ptr->GetTestFloat() == test->GetTestFloat());
  30. CHECK(ptr->GetTestInt() == test->GetTestInt());
  31. CHECK(ptr->GetTestMap() == test->GetTestMap());
  32. CHECK(ptr->GetTestList() == std::vector{ 1.0, 2.0, 3.0 });
  33. }
  34. SECTION("Wup.UniAttribute")
  35. {
  36. using namespace Wup;
  37. OldUniAttribute uniAttribute{};
  38. {
  39. uniAttribute.Put(u8"SomeInt"_ns, 1);
  40. std::int32_t intValue;
  41. REQUIRE(uniAttribute.Get(u8"SomeInt"_ns, intValue));
  42. CHECK(intValue == 1);
  43. uniAttribute.Put(u8"SomeFloat"_ns, 1.0f);
  44. float floatValue;
  45. REQUIRE(uniAttribute.Get(u8"SomeFloat"_ns, floatValue));
  46. CHECK(floatValue == 1.0f);
  47. }
  48. const auto memoryStream = make_ref<natMemoryStream>(0, true, true, true);
  49. uniAttribute.Encode(make_ref<natBinaryWriter>(memoryStream));
  50. memoryStream->SetPositionFromBegin(0);
  51. {
  52. OldUniAttribute readAttribute{};
  53. readAttribute.Decode(make_ref<natBinaryReader>(memoryStream));
  54. std::int32_t intValue;
  55. REQUIRE(readAttribute.Get(u8"SomeInt"_ns, intValue));
  56. CHECK(intValue == 1);
  57. float floatValue;
  58. REQUIRE(readAttribute.Get(u8"SomeFloat"_ns, floatValue));
  59. CHECK(floatValue == 1.0f);
  60. }
  61. }
  62. SECTION("Wup.UniPacket")
  63. {
  64. using namespace Wup;
  65. UniPacket packet;
  66. packet.GetAttribute().Put(u8"SomeInt"_ns, 1);
  67. const auto test = make_ref<JceTest>();
  68. test->SetTestFloat(2.0f);
  69. test->SetTestInt(233);
  70. test->GetTestMap()[1] = 2.0f;
  71. packet.GetAttribute().Put(u8"JceTest"_ns, test);
  72. packet.GetRequestPacket().SetsFuncName(u8"FuncName?"_nv);
  73. packet.GetRequestPacket().SetsServantName(u8"ServantName?"_nv);
  74. const auto memoryStream = make_ref<natMemoryStream>(0, true, true, true);
  75. packet.Encode(make_ref<natBinaryWriter>(memoryStream));
  76. memoryStream->SetPositionFromBegin(0);
  77. {
  78. UniPacket readPacket;
  79. readPacket.Decode(make_ref<natBinaryReader>(memoryStream));
  80. const auto& attribute = readPacket.GetAttribute();
  81. std::int32_t intValue;
  82. REQUIRE(attribute.Get(u8"SomeInt"_ns, intValue));
  83. CHECK(intValue == 1);
  84. natRefPointer<JceTest> ptrValue;
  85. REQUIRE(attribute.Get(u8"JceTest"_ns, ptrValue));
  86. REQUIRE(ptrValue);
  87. CHECK(ptrValue->GetTestFloat() == 2.0f);
  88. CHECK(ptrValue->GetTestInt() == 233);
  89. CHECK(ptrValue->GetTestMap()[1] == 2.0f);
  90. const auto& requestPacket = readPacket.GetRequestPacket();
  91. CHECK(requestPacket.GetsFuncName() == u8"FuncName?"_nv);
  92. CHECK(requestPacket.GetsServantName() == u8"ServantName?"_nv);
  93. }
  94. }
  95. }