mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2025-10-17 04:48:13 +00:00
Merge branch 'main' into PetFixes
This commit is contained in:
@@ -13,8 +13,7 @@
|
||||
*/
|
||||
std::unique_ptr<AMFBaseValue> ReadFromBitStream(RakNet::BitStream& bitStream) {
|
||||
AMFDeserialize deserializer;
|
||||
AMFBaseValue* returnValue(deserializer.Read(bitStream));
|
||||
return std::unique_ptr<AMFBaseValue>{ returnValue };
|
||||
return deserializer.Read(bitStream);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -176,7 +175,7 @@ TEST(dCommonTests, AMFDeserializeAMFArrayTest) {
|
||||
/**
|
||||
* @brief This test checks that if we recieve an unimplemented eAmf
|
||||
* we correctly throw an error and can actch it.
|
||||
* Yes this leaks memory.
|
||||
* Yes this leaks memory.
|
||||
*/
|
||||
TEST(dCommonTests, AMFDeserializeUnimplementedValuesTest) {
|
||||
std::vector<eAmf> unimplementedValues = {
|
||||
@@ -254,7 +253,7 @@ TEST(dCommonTests, AMFDeserializeLivePacketTest) {
|
||||
|
||||
ASSERT_EQ(strips.size(), 1);
|
||||
|
||||
auto* stripsPosition0 = dynamic_cast<AMFArrayValue*>(strips[0]);
|
||||
auto* stripsPosition0 = dynamic_cast<AMFArrayValue*>(strips[0].get());
|
||||
|
||||
auto* actionIndex = stripsPosition0->Get<double>("actionIndex");
|
||||
|
||||
@@ -272,7 +271,7 @@ TEST(dCommonTests, AMFDeserializeLivePacketTest) {
|
||||
|
||||
ASSERT_EQ(states.size(), 1);
|
||||
|
||||
auto* firstState = dynamic_cast<AMFArrayValue*>(states[0]);
|
||||
auto* firstState = dynamic_cast<AMFArrayValue*>(states[0].get());
|
||||
|
||||
auto* stateID = firstState->Get<double>("id");
|
||||
|
||||
@@ -282,7 +281,7 @@ TEST(dCommonTests, AMFDeserializeLivePacketTest) {
|
||||
|
||||
ASSERT_EQ(stripsInState.size(), 1);
|
||||
|
||||
auto* firstStrip = dynamic_cast<AMFArrayValue*>(stripsInState[0]);
|
||||
auto* firstStrip = dynamic_cast<AMFArrayValue*>(stripsInState[0].get());
|
||||
|
||||
auto& actionsInFirstStrip = firstStrip->GetArray("actions")->GetDense();
|
||||
|
||||
@@ -304,7 +303,7 @@ TEST(dCommonTests, AMFDeserializeLivePacketTest) {
|
||||
|
||||
ASSERT_EQ(stripId->GetValue(), 0.0f);
|
||||
|
||||
auto* firstAction = dynamic_cast<AMFArrayValue*>(actionsInFirstStrip[0]);
|
||||
auto* firstAction = dynamic_cast<AMFArrayValue*>(actionsInFirstStrip[0].get());
|
||||
|
||||
auto* firstType = firstAction->Get<std::string>("Type");
|
||||
|
||||
@@ -314,7 +313,7 @@ TEST(dCommonTests, AMFDeserializeLivePacketTest) {
|
||||
|
||||
ASSERT_EQ(firstCallback->GetValue(), "");
|
||||
|
||||
auto* secondAction = dynamic_cast<AMFArrayValue*>(actionsInFirstStrip[1]);
|
||||
auto* secondAction = dynamic_cast<AMFArrayValue*>(actionsInFirstStrip[1].get());
|
||||
|
||||
auto* secondType = secondAction->Get<std::string>("Type");
|
||||
|
||||
@@ -328,7 +327,7 @@ TEST(dCommonTests, AMFDeserializeLivePacketTest) {
|
||||
|
||||
ASSERT_EQ(secondDistance->GetValue(), 25.0f);
|
||||
|
||||
auto* thirdAction = dynamic_cast<AMFArrayValue*>(actionsInFirstStrip[2]);
|
||||
auto* thirdAction = dynamic_cast<AMFArrayValue*>(actionsInFirstStrip[2].get());
|
||||
|
||||
auto* thirdType = thirdAction->Get<std::string>("Type");
|
||||
|
||||
@@ -363,7 +362,7 @@ TEST(dCommonTests, AMFBadConversionTest) {
|
||||
ASSERT_EQ(result->Get<double>("BehaviorID"), nullptr);
|
||||
|
||||
// Does not exist in the associative portion
|
||||
ASSERT_EQ(result->Get<nullptr_t>("DOES_NOT_EXIST"), nullptr);
|
||||
ASSERT_EQ(result->Get<std::nullptr_t>("DOES_NOT_EXIST"), nullptr);
|
||||
|
||||
result->Push(true);
|
||||
|
||||
|
@@ -78,7 +78,7 @@ TEST(dCommonTests, AMF3InsertionAssociativeTest) {
|
||||
ASSERT_EQ(array.Get<int32_t>("Integer")->GetValueType(), eAmf::Integer);
|
||||
ASSERT_EQ(array.Get<double>("Double")->GetValueType(), eAmf::Double);
|
||||
ASSERT_EQ(array.GetArray("Array")->GetValueType(), eAmf::Array);
|
||||
ASSERT_EQ(array.Get<nullptr_t>("Null")->GetValueType(), eAmf::Null);
|
||||
ASSERT_EQ(array.Get<std::nullptr_t>("Null")->GetValueType(), eAmf::Null);
|
||||
ASSERT_EQ(array.Get<std::vector<uint32_t>>("Undefined")->GetValueType(), eAmf::Undefined);
|
||||
}
|
||||
|
||||
@@ -101,6 +101,6 @@ TEST(dCommonTests, AMF3InsertionDenseTest) {
|
||||
ASSERT_EQ(array.Get<int32_t>(4)->GetValueType(), eAmf::Integer);
|
||||
ASSERT_EQ(array.Get<double>(5)->GetValueType(), eAmf::Double);
|
||||
ASSERT_EQ(array.GetArray(6)->GetValueType(), eAmf::Array);
|
||||
ASSERT_EQ(array.Get<nullptr_t>(7)->GetValueType(), eAmf::Null);
|
||||
ASSERT_EQ(array.Get<std::nullptr_t>(7)->GetValueType(), eAmf::Null);
|
||||
ASSERT_EQ(array.Get<std::vector<uint32_t>>(8)->GetValueType(), eAmf::Undefined);
|
||||
}
|
||||
|
@@ -18,18 +18,13 @@ list(APPEND DCOMMONTEST_SOURCES ${DENUMS_TESTS})
|
||||
|
||||
# Set our executable
|
||||
add_executable(dCommonTests ${DCOMMONTEST_SOURCES})
|
||||
add_dependencies(dCommonTests conncpp_tests)
|
||||
|
||||
# Apple needs some special linkage for the mariadb connector for tests.
|
||||
# Needs to be in binary dir for ctest
|
||||
if(APPLE)
|
||||
add_custom_command(TARGET dCommonTests POST_BUILD
|
||||
COMMAND otool ARGS -l dCommonTests
|
||||
COMMAND otool ARGS -L dCommonTests
|
||||
COMMAND ls
|
||||
COMMAND otool ARGS -D libmariadbcpp.dylib
|
||||
COMMAND install_name_tool ARGS -change libmariadbcpp.dylib @rpath/libmariadbcpp.dylib dCommonTests
|
||||
COMMAND otool ARGS -L dCommonTests
|
||||
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
|
||||
add_custom_target(dCommonTestsLink
|
||||
${CMAKE_COMMAND} -E copy $<TARGET_FILE:MariaDB::ConnCpp> ${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
add_dependencies(dCommonTests dCommonTestsLink)
|
||||
endif()
|
||||
|
||||
# Link needed libraries
|
||||
|
@@ -3,22 +3,22 @@
|
||||
#include "GeneralUtils.h"
|
||||
|
||||
#include "eGameMasterLevel.h"
|
||||
#include "eGameMessageType.h"
|
||||
#include "eWorldMessageType.h"
|
||||
#include "MessageType/Game.h"
|
||||
#include "MessageType/World.h"
|
||||
|
||||
#define ASSERT_TYPE_EQ(TYPE, ENUM)\
|
||||
ASSERT_TRUE(typeid(TYPE) == typeid(GeneralUtils::ToUnderlying(static_cast<ENUM>(0))));
|
||||
|
||||
#define ASSERT_TYPE_NE(TYPE, ENUM)\
|
||||
ASSERT_FALSE(typeid(TYPE) == typeid(GeneralUtils::ToUnderlying(static_cast<ENUM>(0))));
|
||||
|
||||
|
||||
// Verify that the underlying enum types are being cast correctly
|
||||
TEST(ToUnderlyingTests, VerifyToUnderlying) {
|
||||
ASSERT_TYPE_EQ(uint8_t, eGameMasterLevel);
|
||||
ASSERT_TYPE_EQ(uint16_t, eGameMessageType);
|
||||
ASSERT_TYPE_EQ(uint32_t, eWorldMessageType)
|
||||
ASSERT_TYPE_EQ(uint16_t, MessageType::Game);
|
||||
ASSERT_TYPE_EQ(uint32_t, MessageType::World)
|
||||
|
||||
ASSERT_TYPE_NE(void, eGameMasterLevel);
|
||||
ASSERT_TYPE_NE(void, eGameMessageType);
|
||||
ASSERT_TYPE_NE(void, eWorldMessageType)
|
||||
ASSERT_TYPE_NE(void, MessageType::Game);
|
||||
ASSERT_TYPE_NE(void, MessageType::World)
|
||||
}
|
||||
|
@@ -6,8 +6,8 @@
|
||||
#include "StringifiedEnum.h"
|
||||
#include "Logger.h"
|
||||
#include "Game.h"
|
||||
#include "eGameMessageType.h"
|
||||
#include "eWorldMessageType.h"
|
||||
#include "MessageType/Game.h"
|
||||
#include "MessageType/World.h"
|
||||
#include "magic_enum.hpp"
|
||||
|
||||
#define ENUM_EQ(e, y, z)\
|
||||
@@ -21,47 +21,47 @@
|
||||
TEST(MagicEnumTest, eWorldMessageTypeTest) {
|
||||
Game::logger = new Logger("./MagicEnumTest_eWorldMessageTypeTest.log", true, true);
|
||||
|
||||
ENUM_EQ(eWorldMessageType, 1, VALIDATION);
|
||||
ENUM_EQ(eWorldMessageType, 2, CHARACTER_LIST_REQUEST);
|
||||
ENUM_EQ(eWorldMessageType, 3, CHARACTER_CREATE_REQUEST);
|
||||
ENUM_EQ(eWorldMessageType, 4, LOGIN_REQUEST);
|
||||
ENUM_EQ(eWorldMessageType, 5, GAME_MSG);
|
||||
ENUM_EQ(eWorldMessageType, 6, CHARACTER_DELETE_REQUEST);
|
||||
ENUM_EQ(eWorldMessageType, 7, CHARACTER_RENAME_REQUEST);
|
||||
ENUM_EQ(eWorldMessageType, 8, HAPPY_FLOWER_MODE_NOTIFY);
|
||||
ENUM_EQ(eWorldMessageType, 9, SLASH_RELOAD_MAP);
|
||||
ENUM_EQ(eWorldMessageType, 10, SLASH_PUSH_MAP_REQUEST);
|
||||
ENUM_EQ(eWorldMessageType, 11, SLASH_PUSH_MAP);
|
||||
ENUM_EQ(eWorldMessageType, 12, SLASH_PULL_MAP);
|
||||
ENUM_EQ(eWorldMessageType, 13, LOCK_MAP_REQUEST);
|
||||
ENUM_EQ(eWorldMessageType, 14, GENERAL_CHAT_MESSAGE);
|
||||
ENUM_EQ(eWorldMessageType, 15, HTTP_MONITOR_INFO_REQUEST);
|
||||
ENUM_EQ(eWorldMessageType, 16, SLASH_DEBUG_SCRIPTS);
|
||||
ENUM_EQ(eWorldMessageType, 17, MODELS_CLEAR);
|
||||
ENUM_EQ(eWorldMessageType, 18, EXHIBIT_INSERT_MODEL);
|
||||
ENUM_EQ(eWorldMessageType, 19, LEVEL_LOAD_COMPLETE);
|
||||
ENUM_EQ(eWorldMessageType, 20, TMP_GUILD_CREATE);
|
||||
ENUM_EQ(eWorldMessageType, 21, ROUTE_PACKET);
|
||||
ENUM_EQ(eWorldMessageType, 22, POSITION_UPDATE);
|
||||
ENUM_EQ(eWorldMessageType, 23, MAIL);
|
||||
ENUM_EQ(eWorldMessageType, 24, WORD_CHECK);
|
||||
ENUM_EQ(eWorldMessageType, 25, STRING_CHECK);
|
||||
ENUM_EQ(eWorldMessageType, 26, GET_PLAYERS_IN_ZONE);
|
||||
ENUM_EQ(eWorldMessageType, 27, REQUEST_UGC_MANIFEST_INFO);
|
||||
ENUM_EQ(eWorldMessageType, 28, BLUEPRINT_GET_ALL_DATA_REQUEST);
|
||||
ENUM_EQ(eWorldMessageType, 29, CANCEL_MAP_QUEUE);
|
||||
ENUM_EQ(eWorldMessageType, 30, HANDLE_FUNNESS);
|
||||
ENUM_EQ(eWorldMessageType, 31, FAKE_PRG_CSR_MESSAGE);
|
||||
ENUM_EQ(eWorldMessageType, 32, REQUEST_FREE_TRIAL_REFRESH);
|
||||
ENUM_EQ(eWorldMessageType, 33, GM_SET_FREE_TRIAL_STATUS);
|
||||
ENUM_EQ(eWorldMessageType, 91, UI_HELP_TOP_5);
|
||||
ENUM_NE(eWorldMessageType, 37);
|
||||
ENUM_NE(eWorldMessageType, 123);
|
||||
ENUM_EQ(MessageType::World, 1, VALIDATION);
|
||||
ENUM_EQ(MessageType::World, 2, CHARACTER_LIST_REQUEST);
|
||||
ENUM_EQ(MessageType::World, 3, CHARACTER_CREATE_REQUEST);
|
||||
ENUM_EQ(MessageType::World, 4, LOGIN_REQUEST);
|
||||
ENUM_EQ(MessageType::World, 5, GAME_MSG);
|
||||
ENUM_EQ(MessageType::World, 6, CHARACTER_DELETE_REQUEST);
|
||||
ENUM_EQ(MessageType::World, 7, CHARACTER_RENAME_REQUEST);
|
||||
ENUM_EQ(MessageType::World, 8, HAPPY_FLOWER_MODE_NOTIFY);
|
||||
ENUM_EQ(MessageType::World, 9, SLASH_RELOAD_MAP);
|
||||
ENUM_EQ(MessageType::World, 10, SLASH_PUSH_MAP_REQUEST);
|
||||
ENUM_EQ(MessageType::World, 11, SLASH_PUSH_MAP);
|
||||
ENUM_EQ(MessageType::World, 12, SLASH_PULL_MAP);
|
||||
ENUM_EQ(MessageType::World, 13, LOCK_MAP_REQUEST);
|
||||
ENUM_EQ(MessageType::World, 14, GENERAL_CHAT_MESSAGE);
|
||||
ENUM_EQ(MessageType::World, 15, HTTP_MONITOR_INFO_REQUEST);
|
||||
ENUM_EQ(MessageType::World, 16, SLASH_DEBUG_SCRIPTS);
|
||||
ENUM_EQ(MessageType::World, 17, MODELS_CLEAR);
|
||||
ENUM_EQ(MessageType::World, 18, EXHIBIT_INSERT_MODEL);
|
||||
ENUM_EQ(MessageType::World, 19, LEVEL_LOAD_COMPLETE);
|
||||
ENUM_EQ(MessageType::World, 20, TMP_GUILD_CREATE);
|
||||
ENUM_EQ(MessageType::World, 21, ROUTE_PACKET);
|
||||
ENUM_EQ(MessageType::World, 22, POSITION_UPDATE);
|
||||
ENUM_EQ(MessageType::World, 23, MAIL);
|
||||
ENUM_EQ(MessageType::World, 24, WORD_CHECK);
|
||||
ENUM_EQ(MessageType::World, 25, STRING_CHECK);
|
||||
ENUM_EQ(MessageType::World, 26, GET_PLAYERS_IN_ZONE);
|
||||
ENUM_EQ(MessageType::World, 27, REQUEST_UGC_MANIFEST_INFO);
|
||||
ENUM_EQ(MessageType::World, 28, BLUEPRINT_GET_ALL_DATA_REQUEST);
|
||||
ENUM_EQ(MessageType::World, 29, CANCEL_MAP_QUEUE);
|
||||
ENUM_EQ(MessageType::World, 30, HANDLE_FUNNESS);
|
||||
ENUM_EQ(MessageType::World, 31, FAKE_PRG_CSR_MESSAGE);
|
||||
ENUM_EQ(MessageType::World, 32, REQUEST_FREE_TRIAL_REFRESH);
|
||||
ENUM_EQ(MessageType::World, 33, GM_SET_FREE_TRIAL_STATUS);
|
||||
ENUM_EQ(MessageType::World, 91, UI_HELP_TOP_5);
|
||||
ENUM_NE(MessageType::World, 37);
|
||||
ENUM_NE(MessageType::World, 123);
|
||||
|
||||
srand(time(NULL));
|
||||
auto begin = std::chrono::high_resolution_clock::now();
|
||||
for (int i = 0; i < 10000000; ++i) {
|
||||
volatile auto f = StringifiedEnum::ToString(static_cast<eWorldMessageType>(i)).data();
|
||||
volatile auto f = StringifiedEnum::ToString(static_cast<MessageType::World>(i)).data();
|
||||
|
||||
// To ensure the compiler doesn't optimize out the call, I print it at random intervals
|
||||
if (rand() % 100000 == 0) LOG("%i, %s", i, f);
|
||||
@@ -78,34 +78,34 @@ TEST(MagicEnumTest, eGameMessageTypeTest) {
|
||||
Game::logger = new Logger("./MagicEnumTest_eGameMessageTypeTest.log", true, true);
|
||||
|
||||
// Only doing the first and last 10 for the sake of my sanity
|
||||
ENUM_EQ(eGameMessageType, 0, GET_POSITION);
|
||||
ENUM_EQ(eGameMessageType, 1, GET_ROTATION);
|
||||
ENUM_EQ(eGameMessageType, 2, GET_LINEAR_VELOCITY);
|
||||
ENUM_EQ(eGameMessageType, 3, GET_ANGULAR_VELOCITY);
|
||||
ENUM_EQ(eGameMessageType, 4, GET_FORWARD_VELOCITY);
|
||||
ENUM_EQ(eGameMessageType, 5, GET_PLAYER_FORWARD);
|
||||
ENUM_EQ(eGameMessageType, 6, GET_FORWARD_VECTOR);
|
||||
ENUM_EQ(eGameMessageType, 7, SET_POSITION);
|
||||
ENUM_EQ(eGameMessageType, 8, SET_LOCAL_POSITION);
|
||||
ENUM_EQ(eGameMessageType, 9, SET_ROTATION);
|
||||
ENUM_EQ(eGameMessageType, 10, SET_LINEAR_VELOCITY);
|
||||
ENUM_EQ(eGameMessageType, 1762, USE_SKILL_SET);
|
||||
ENUM_EQ(eGameMessageType, 1763, SET_SKILL_SET_POSSESSOR);
|
||||
ENUM_EQ(eGameMessageType, 1764, POPULATE_ACTION_BAR);
|
||||
ENUM_EQ(eGameMessageType, 1765, GET_COMPONENT_TEMPLATE_ID);
|
||||
ENUM_EQ(eGameMessageType, 1766, GET_POSSESSABLE_SKILL_SET);
|
||||
ENUM_EQ(eGameMessageType, 1767, MARK_INVENTORY_ITEM_AS_ACTIVE);
|
||||
ENUM_EQ(eGameMessageType, 1768, UPDATE_FORGED_ITEM);
|
||||
ENUM_EQ(eGameMessageType, 1769, CAN_ITEMS_BE_REFORGED);
|
||||
ENUM_EQ(eGameMessageType, 1771, NOTIFY_CLIENT_RAIL_START_FAILED);
|
||||
ENUM_EQ(eGameMessageType, 1772, GET_IS_ON_RAIL);
|
||||
ENUM_NE(eGameMessageType, 32);
|
||||
ENUM_NE(eGameMessageType, 1776);
|
||||
ENUM_EQ(MessageType::Game, 0, GET_POSITION);
|
||||
ENUM_EQ(MessageType::Game, 1, GET_ROTATION);
|
||||
ENUM_EQ(MessageType::Game, 2, GET_LINEAR_VELOCITY);
|
||||
ENUM_EQ(MessageType::Game, 3, GET_ANGULAR_VELOCITY);
|
||||
ENUM_EQ(MessageType::Game, 4, GET_FORWARD_VELOCITY);
|
||||
ENUM_EQ(MessageType::Game, 5, GET_PLAYER_FORWARD);
|
||||
ENUM_EQ(MessageType::Game, 6, GET_FORWARD_VECTOR);
|
||||
ENUM_EQ(MessageType::Game, 7, SET_POSITION);
|
||||
ENUM_EQ(MessageType::Game, 8, SET_LOCAL_POSITION);
|
||||
ENUM_EQ(MessageType::Game, 9, SET_ROTATION);
|
||||
ENUM_EQ(MessageType::Game, 10, SET_LINEAR_VELOCITY);
|
||||
ENUM_EQ(MessageType::Game, 1762, USE_SKILL_SET);
|
||||
ENUM_EQ(MessageType::Game, 1763, SET_SKILL_SET_POSSESSOR);
|
||||
ENUM_EQ(MessageType::Game, 1764, POPULATE_ACTION_BAR);
|
||||
ENUM_EQ(MessageType::Game, 1765, GET_COMPONENT_TEMPLATE_ID);
|
||||
ENUM_EQ(MessageType::Game, 1766, GET_POSSESSABLE_SKILL_SET);
|
||||
ENUM_EQ(MessageType::Game, 1767, MARK_INVENTORY_ITEM_AS_ACTIVE);
|
||||
ENUM_EQ(MessageType::Game, 1768, UPDATE_FORGED_ITEM);
|
||||
ENUM_EQ(MessageType::Game, 1769, CAN_ITEMS_BE_REFORGED);
|
||||
ENUM_EQ(MessageType::Game, 1771, NOTIFY_CLIENT_RAIL_START_FAILED);
|
||||
ENUM_EQ(MessageType::Game, 1772, GET_IS_ON_RAIL);
|
||||
ENUM_NE(MessageType::Game, 32);
|
||||
ENUM_NE(MessageType::Game, 1776);
|
||||
|
||||
srand(time(NULL));
|
||||
auto begin = std::chrono::high_resolution_clock::now();
|
||||
for (int i = 0; i < 10000000; ++i) {
|
||||
volatile auto f = StringifiedEnum::ToString(static_cast<eGameMessageType>(i)).data();
|
||||
volatile auto f = StringifiedEnum::ToString(static_cast<MessageType::Game>(i)).data();
|
||||
|
||||
// To ensure the compiler doesn't optimize out the call, I print it at random intervals
|
||||
if (rand() % 100000 == 0) LOG("%i, %s", i, f);
|
||||
@@ -135,10 +135,10 @@ namespace {
|
||||
TEST(MagicEnumTest, ArraysAreSorted) {
|
||||
Game::logger = new Logger("./MagicEnumTest_ArraysAreSorted.log", true, true);
|
||||
|
||||
constexpr auto wmArray = &magic_enum::enum_entries<eWorldMessageType>();
|
||||
constexpr auto wmArray = &magic_enum::enum_entries<MessageType::World>();
|
||||
AssertEnumArraySorted(wmArray);
|
||||
|
||||
constexpr auto gmArray = &magic_enum::enum_entries<eGameMessageType>();
|
||||
constexpr auto gmArray = &magic_enum::enum_entries<MessageType::Game>();
|
||||
AssertEnumArraySorted(gmArray);
|
||||
|
||||
delete Game::logger;
|
||||
|
Reference in New Issue
Block a user