mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-28 08:06:23 +00:00
refactor(Core/sLog): improve singleton management (#3801)
This commit is contained in:
@@ -3,6 +3,10 @@ CollectSourceFiles(
|
||||
PRIVATE_SOURCES
|
||||
)
|
||||
|
||||
include_directories(
|
||||
"mocks"
|
||||
)
|
||||
|
||||
add_executable(
|
||||
unit_tests
|
||||
${PRIVATE_SOURCES}
|
||||
@@ -12,6 +16,7 @@ target_link_libraries(
|
||||
unit_tests
|
||||
game
|
||||
gtest_main
|
||||
gmock_main
|
||||
game-interface
|
||||
)
|
||||
|
||||
|
||||
51
src/test/mocks/LogMock.h
Normal file
51
src/test/mocks/LogMock.h
Normal file
@@ -0,0 +1,51 @@
|
||||
|
||||
#ifndef AZEROTHCORE_LOGMOCK_H
|
||||
#define AZEROTHCORE_LOGMOCK_H
|
||||
|
||||
#include "gmock/gmock.h"
|
||||
#include "ILog.h"
|
||||
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
||||
class LogMock: public ILog {
|
||||
public:
|
||||
~LogMock() override {}
|
||||
MOCK_METHOD(void, outDB, (LogTypes type), (const char* str));
|
||||
MOCK_METHOD(void, Initialize, ());
|
||||
MOCK_METHOD(void, ReloadConfig, ());
|
||||
MOCK_METHOD(void, InitColors, (const std::string& init_str));
|
||||
void SetColor(bool stdout_stream, ColorTypes color) override {}
|
||||
MOCK_METHOD(void, ResetColor, (bool stdout_stream));
|
||||
MOCK_METHOD(void, outDB, (LogTypes type, const char* str));
|
||||
void outString(const char* str, ...) override {}
|
||||
MOCK_METHOD(void, outString, ());
|
||||
void outStringInLine(const char* str, ...) override {}
|
||||
MOCK_METHOD(void, outErrorMock, ()); // because outError has variadic type and cannot be directly mocked
|
||||
void outError(const char* err, ...) override { outErrorMock(); }
|
||||
void outCrash(const char* err, ...) override {}
|
||||
void outBasic(const char* str, ...) override {}
|
||||
void outDetail(const char* str, ...) override {}
|
||||
void outSQLDev(const char* str, ...) override {}
|
||||
void outDebug(DebugLogFilters f, const char* str, ...) override {}
|
||||
void outStaticDebug(const char* str, ...) override {}
|
||||
void outErrorDb(const char* str, ...) override {}
|
||||
void outChar(const char* str, ...) override {}
|
||||
void outCommand(uint32 account, const char* str, ...) override {}
|
||||
void outChat(const char* str, ...) override {}
|
||||
void outRemote(const char* str, ...) override {}
|
||||
void outSQLDriver(const char* str, ...) override {}
|
||||
void outMisc(const char* str, ...) override {}
|
||||
void outCharDump(const char* str, uint32 account_id, uint32 guid, const char* name) override {}
|
||||
MOCK_METHOD(void, SetLogLevel, (char* Level));
|
||||
MOCK_METHOD(void, SetLogFileLevel, (char* Level));
|
||||
MOCK_METHOD(void, SetSQLDriverQueryLogging, (bool newStatus));
|
||||
MOCK_METHOD(void, SetRealmID, (uint32 id));
|
||||
MOCK_METHOD(bool, IsOutDebug, (), (const));
|
||||
MOCK_METHOD(bool, IsOutCharDump, (), (const));
|
||||
MOCK_METHOD(bool, GetLogDB, (), (const));
|
||||
MOCK_METHOD(void, SetLogDB, (bool enable));
|
||||
MOCK_METHOD(bool, GetSQLDriverQueryLogging, (), (const));
|
||||
};
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
#endif //AZEROTHCORE_LOGMOCK_H
|
||||
@@ -1,6 +1,10 @@
|
||||
#include "gtest/gtest.h"
|
||||
#include "Formulas.h"
|
||||
#include "SharedDefines.h"
|
||||
#include "Log.h"
|
||||
#include "LogMock.h"
|
||||
|
||||
LoginDatabaseWorkerPool LoginDatabase;
|
||||
|
||||
using namespace acore::Honor;
|
||||
using namespace acore::XP;
|
||||
@@ -69,3 +73,19 @@ TEST(FormulasTest, GetZeroDifference)
|
||||
EXPECT_EQ(GetZeroDifference(60), 17);
|
||||
EXPECT_EQ(GetZeroDifference(80), 17);
|
||||
}
|
||||
|
||||
TEST(FormulasTest, BaseGain)
|
||||
{
|
||||
auto logMock = new LogMock();
|
||||
sLog.reset(logMock);
|
||||
|
||||
EXPECT_EQ(BaseGain(60, 40, CONTENT_1_60), 0);
|
||||
EXPECT_EQ(BaseGain(60, 60, CONTENT_1_60), 345);
|
||||
EXPECT_EQ(BaseGain(50, 60, CONTENT_1_60), 354);
|
||||
EXPECT_EQ(BaseGain(65, 66, CONTENT_61_70), 588);
|
||||
EXPECT_EQ(BaseGain(79, 78, CONTENT_71_80), 917);
|
||||
|
||||
// check outError() has been called after passing an invalid ContentLevels content
|
||||
EXPECT_CALL(*logMock, outErrorMock()).Times(1);
|
||||
EXPECT_EQ(BaseGain(79, 1, ContentLevels(999)), 0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user