| 74 | } |
| 75 | |
| 76 | void TestStructNested(const char* msg, uint32_t msg_size) |
| 77 | { |
| 78 | // Load |
| 79 | dmStructDDF::Struct* message; |
| 80 | dmDDF::Result e = dmDDF::LoadMessage((void*) msg, msg_size, &dmStructDDF_Struct_DESCRIPTOR, (void**)&message); |
| 81 | ASSERT_EQ(dmDDF::RESULT_OK, e); |
| 82 | |
| 83 | dmStructDDF::Struct::FieldsEntry* user = FindEntry(message, "user"); |
| 84 | |
| 85 | dmStructDDF::Struct::FieldsEntry* field_id = FindEntry(&user->m_Value->m_Kind.m_Struct, "id"); |
| 86 | ASSERT_NEAR(123.0, field_id->m_Value->m_Kind.m_Number, 0.001); |
| 87 | |
| 88 | dmStructDDF::Struct::FieldsEntry* field_name = FindEntry(&user->m_Value->m_Kind.m_Struct, "name"); |
| 89 | ASSERT_STREQ("Mr.X", field_name->m_Value->m_Kind.m_String); |
| 90 | |
| 91 | // Save |
| 92 | std::string save_str; |
| 93 | e = DDFSaveToString(message, &dmStructDDF_Struct_DESCRIPTOR, save_str); |
| 94 | ASSERT_EQ(dmDDF::RESULT_OK, e); |
| 95 | |
| 96 | dmStructDDF::Struct* saved_message; |
| 97 | e = dmDDF::LoadMessage((void*) save_str.c_str(), save_str.size(), &dmStructDDF_Struct_DESCRIPTOR, (void**)&saved_message); |
| 98 | ASSERT_EQ(dmDDF::RESULT_OK, e); |
| 99 | |
| 100 | dmStructDDF::Struct::FieldsEntry* user2 = FindEntry(saved_message, "user"); |
| 101 | |
| 102 | dmStructDDF::Struct::FieldsEntry* field_id_2 = FindEntry(&user2->m_Value->m_Kind.m_Struct, "id"); |
| 103 | ASSERT_NEAR(123.0, field_id_2->m_Value->m_Kind.m_Number, 0.001); |
| 104 | |
| 105 | dmStructDDF::Struct::FieldsEntry* field_name_2 = FindEntry(&user2->m_Value->m_Kind.m_Struct, "name"); |
| 106 | ASSERT_STREQ("Mr.X", field_name_2->m_Value->m_Kind.m_String); |
| 107 | |
| 108 | dmDDF::FreeMessage(message); |
| 109 | dmDDF::FreeMessage(saved_message); |
| 110 | } |
| 111 | |
| 112 | void TestStructList(const char* msg, uint32_t msg_size) |
| 113 | { |
no test coverage detected