Serializer.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // Copyright (C) 2009-2019, Panagiotis Christopoulos Charitos and contributors.
  2. // All rights reserved.
  3. // Code licensed under the BSD License.
  4. // http://www.anki3d.org/LICENSE
  5. #include <tests/framework/Framework.h>
  6. #include <anki/util/Serializer.h>
  7. #include <tests/util/SerializerTest.h>
  8. ANKI_TEST(Util, BinarySerializer)
  9. {
  10. Array<ClassB, 2> b = {};
  11. b[0].m_array[0] = 2;
  12. b[0].m_array[1] = 3;
  13. b[0].m_array[2] = 4;
  14. Array<U32, 3> bDarr = {{0xFF12EE34, 0xAA12BB34, 0xCC12DD34}};
  15. b[0].m_darraySize = bDarr.getSize();
  16. b[0].m_darray = &bDarr[0];
  17. b[1].m_array[0] = 255;
  18. b[1].m_array[1] = 127;
  19. b[1].m_array[2] = 55;
  20. Array<U32, 1> bDarr2 = {{0x12345678}};
  21. b[1].m_darraySize = bDarr2.getSize();
  22. b[1].m_darray = &bDarr2[0];
  23. ClassA a = {};
  24. a.m_array[0] = 123;
  25. a.m_array[1] = 56;
  26. a.m_u32 = b.getSize();
  27. a.m_u64 = 0x123456789ABCDEFF;
  28. a.m_darray = &b[0];
  29. HeapAllocator<U8> alloc(allocAligned, nullptr);
  30. // Serialize
  31. {
  32. File file;
  33. ANKI_TEST_EXPECT_NO_ERR(file.open("serialized.bin", FileOpenFlag::WRITE | FileOpenFlag::BINARY));
  34. BinarySerializer serializer;
  35. ANKI_TEST_EXPECT_NO_ERR(serializer.serialize(a, alloc, file));
  36. }
  37. // Deserialize
  38. {
  39. File file;
  40. ANKI_TEST_EXPECT_NO_ERR(file.open("serialized.bin", FileOpenFlag::READ | FileOpenFlag::BINARY));
  41. BinaryDeserializer deserializer;
  42. ClassA* pa;
  43. ANKI_TEST_EXPECT_NO_ERR(deserializer.deserialize(pa, alloc, file));
  44. ANKI_TEST_EXPECT_EQ(pa->m_array[0], a.m_array[0]);
  45. ANKI_TEST_EXPECT_EQ(pa->m_u32, a.m_u32);
  46. for(U32 i = 0; i < pa->m_u32; ++i)
  47. {
  48. ANKI_TEST_EXPECT_EQ(pa->m_darray[i].m_array[1], b[i].m_array[1]);
  49. ANKI_TEST_EXPECT_EQ(pa->m_darray[i].m_darraySize, b[i].m_darraySize);
  50. for(U32 j = 0; j < pa->m_darray[i].m_darraySize; ++j)
  51. {
  52. ANKI_TEST_EXPECT_EQ(pa->m_darray[i].m_darray[j], b[i].m_darray[j]);
  53. }
  54. }
  55. alloc.deleteInstance(pa);
  56. }
  57. }