StringifySerializerTests.cpp 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #include <AzNetworking/Serialization/StringifySerializer.h>
  9. #include <AzCore/UnitTest/TestTypes.h>
  10. namespace UnitTest
  11. {
  12. struct StringifySerializerElement
  13. {
  14. bool testBool = false;
  15. char testChar = 'a';
  16. int8_t testInt8 = 0;
  17. int16_t testInt16 = 1;
  18. int32_t testInt32 = 2;
  19. int64_t testInt64 = 3;
  20. uint8_t testUint8 = 0;
  21. uint16_t testUint16 = 1;
  22. uint32_t testUint32 = 2;
  23. uint64_t testUint64 = 3;
  24. double testDouble = 1.0;
  25. float testFloat = 1.f;
  26. AZStd::fixed_string<32> testFixedString = "FixedString";
  27. bool Serialize(AzNetworking::ISerializer& serializer)
  28. {
  29. if (!serializer.Serialize(testBool, "TestBool") || !serializer.Serialize(testChar, "TestChar") ||
  30. !serializer.Serialize(testInt8, "TestInt8") || !serializer.Serialize(testInt16, "TestInt16") ||
  31. !serializer.Serialize(testInt32, "TestInt32") || !serializer.Serialize(testInt64, "TestInt64") ||
  32. !serializer.Serialize(testUint8, "TestUint8") || !serializer.Serialize(testUint16, "TestUint16") ||
  33. !serializer.Serialize(testUint32, "TestUint32") || !serializer.Serialize(testUint64, "TestUint64") ||
  34. !serializer.Serialize(testDouble, "TestDouble") || !serializer.Serialize(testFloat, "TestFloat") ||
  35. !serializer.Serialize(testFixedString, "TestFixedString"))
  36. {
  37. return false;
  38. }
  39. return true;
  40. }
  41. bool CompareValueMap(AzNetworking::StringifySerializer::ValueMap& valueMap)
  42. {
  43. return valueMap["TestBool"] == "false" && valueMap["TestChar"] == "97"
  44. && valueMap["TestInt8"] == "0" && valueMap["TestInt16"] == "1"
  45. && valueMap["TestInt32"] == "2" && valueMap["TestInt64"] == "3"
  46. && valueMap["TestUint8"] == "0" && valueMap["TestUint16"] == "1"
  47. && valueMap["TestUint32"] == "2" && valueMap["TestUint64"] == "3"
  48. && valueMap["TestDouble"] == "1.000000" && valueMap["TestFloat"] == "1.000000"
  49. && valueMap["TestFixedString.String"] == "FixedString" && valueMap["TestFixedString.Size"] == "11";
  50. }
  51. };
  52. class StringifySerializerTests : public LeakDetectionFixture
  53. {
  54. };
  55. TEST_F(StringifySerializerTests, TestHashSerialization)
  56. {
  57. StringifySerializerElement element;
  58. AzNetworking::StringifySerializer stringifySerializer;
  59. EXPECT_TRUE(element.Serialize(stringifySerializer));
  60. AzNetworking::StringifySerializer::ValueMap valueMap = stringifySerializer.GetValueMap();
  61. EXPECT_TRUE(element.CompareValueMap(valueMap));
  62. }
  63. TEST_F(StringifySerializerTests, TestHashSerializerDefaults)
  64. {
  65. AzNetworking::StringifySerializer stringifySerializer;
  66. EXPECT_EQ(stringifySerializer.GetSerializerMode(), AzNetworking::SerializerMode::ReadFromObject);
  67. EXPECT_EQ(stringifySerializer.GetCapacity(), 0);
  68. EXPECT_EQ(stringifySerializer.GetSize(), 0);
  69. EXPECT_EQ(stringifySerializer.GetBuffer(), nullptr);
  70. EXPECT_TRUE(stringifySerializer.BeginObject("Unused"));
  71. EXPECT_TRUE(stringifySerializer.EndObject("Unused"));
  72. stringifySerializer.ClearTrackedChangesFlag(); // NO-OP
  73. EXPECT_FALSE(stringifySerializer.GetTrackedChangesFlag());
  74. }
  75. TEST_F(StringifySerializerTests, SerializedDataMustHaveUniqueNames)
  76. {
  77. AzNetworking::StringifySerializer stringifySerializer;
  78. EXPECT_EQ(stringifySerializer.GetSerializerMode(), AzNetworking::SerializerMode::ReadFromObject);
  79. bool boolValue = true;
  80. EXPECT_TRUE(stringifySerializer.Serialize(boolValue, "Bool"));
  81. // Multiple serializations of the same key/value pair are allowed.
  82. EXPECT_TRUE(stringifySerializer.Serialize(boolValue, "Bool"));
  83. // Serialization of the same key with a different value should assert.
  84. boolValue = false;
  85. AZ_TEST_START_TRACE_SUPPRESSION;
  86. stringifySerializer.Serialize(boolValue, "Bool");
  87. AZ_TEST_STOP_TRACE_SUPPRESSION(1);
  88. }
  89. } // namespace UnitTest