#include #include #include namespace tp = td::protocol; template static int TestCommand() { Command_T command; td::DataBuffer buffer = tp::CommandSerializer::Serialize(command); auto abstractCommand = tp::CommandSerializer::Deserialize(buffer); td_test_assert(abstractCommand); Command_T* command2 = dynamic_cast(abstractCommand.get()); td_test_assert(command2); td_test_assert(command.GetType() == command2->GetType()); return std::memcmp(&command.m_Data, &command2->m_Data, sizeof(Command_Data_T)); } #define DeclareCommand(Command, ...) TestCommand(); static int TestAllCommands() { DeclareAllCommand() return TD_TEST_SUCCESSFUL; } static int TestNewTeam() { tp::commands::TeamChange tc; tc.m_Data.m_Player = 69; tc.m_Data.m_NewTeam = td::Team::Red; td::DataBuffer db = tp::CommandSerializer::Serialize(tc); auto packet = tp::CommandSerializer::Deserialize(db); tp::commands::TeamChange* tc2 = dynamic_cast(packet.get()); return TD_TEST_SUCCESSFUL; } int main() { TestNewTeam(); return TestAllCommands(); }