JD2022-TU1/main/extern/UbiServices/custom/testsUnit/testParametersUpdateSettingsWebsocketGame.cpp

214 lines
No EOL
11 KiB
C++

////////////////////////////////////////////////////////////////////////////////
// (c) Copyright, Ubisoft Entertainment Inc. || Created by Harbour //
////////////////////////////////////////////////////////////////////////////////
#include "tests/config.h"
#if defined(US_SDK_S2S)
#error This file shall not be part of the solution
#endif
#include "tests/fixture/paramFixture.h"
#include "tests/mock/parametersMockHelper.h"
#include <ubiservices/core/debug/assert.h>
#include <ubiservices/services/parameters/parametersInfo.h>
namespace US_NS {;
US_DEFINE_TEST(TestParametersUpdateSettingsWebsocketGame);
};
#if !defined(US_DLL)
namespace US_NS {;
typedef LeakChecker PARAMETERS_UPDATE_SETTINGS_WEBSOCKET_GAME;
namespace ParametersUpdateSettingsWebsocketGame_BF
{
struct ParamsSettingsWebsocket
{
bool hasExtraField;
bool missingFieldMaxCount;
bool hasMissingConnectionPing;
bool hasMissingRetryIncrementFactor;
bool hasMissingRetryInitialDelay;
bool hasMissingRetryRandomDelay;
bool hasMissingTimeoutIncrementFactor;
bool hasMissingTimeoutInitialDelay;
};
const uint32 s_WEBSOCKET_MAX_COUNT = 3;
const uint32 s_CONNECTION_PING_INTERVAL_SEC = 20;
const uint32 s_WEBSOCKET_RETRY_INITIAL_DELAY_MSEC = 6 * 1000;
const uint32 s_WEBSOCKET_RETRY_INCREMENT_FACTOR_MSEC = 7 * 1000;
const uint32 s_WEBSOCKET_RETRY_RANDOM_DELAY_MSEC = 8 * 1000;
const uint32 s_WEBSOCKET_TIMEOUT_INCREMENT_FACTOR_MSEC = 15u * 1000;
const uint32 s_WEBSOCKET_TIMEOUT_INITIAL_DELAY_MSEC = 20u * 1000;
Json buildParams(const ParamsSettingsWebsocket& params)
{
// Ensure the values used in the test are different from the default values used when parsing the params
US_ASSERT(s_WEBSOCKET_MAX_COUNT != ParametersSettingsWebsocketGame::s_DEFAULT_VALUE_MAX_COUNT, "Do not use default value in parsing tests");
US_ASSERT(s_CONNECTION_PING_INTERVAL_SEC != ParametersSettingsWebsocketGame::s_DEFAULT_VALUE_CONNECTION_PING_INTERVAL_SEC, "Do not use default value in parsing tests");
US_ASSERT(s_WEBSOCKET_RETRY_INITIAL_DELAY_MSEC != ParametersSettingsWebsocketGame::s_DEFAULT_VALUE_RETRY_INITIAL_DELAY_MSEC, "Do not use default value in parsing tests");
US_ASSERT(s_WEBSOCKET_RETRY_INCREMENT_FACTOR_MSEC != ParametersSettingsWebsocketGame::s_DEFAULT_VALUE_RETRY_INCREMENT_FACTOR_MSEC, "Do not use default value in parsing tests");
US_ASSERT(s_WEBSOCKET_RETRY_RANDOM_DELAY_MSEC != ParametersSettingsWebsocketGame::s_DEFAULT_VALUE_RETRY_RANDOM_DELAY_MSEC, "Do not use default value in parsing tests");
US_ASSERT(s_WEBSOCKET_TIMEOUT_INITIAL_DELAY_MSEC != ParametersSettingsWebsocketGame::s_DEFAULT_VALUE_TIMEOUT_INITIAL_DELAY_MSEC, "Do not use default value in parsing tests");
US_ASSERT(s_WEBSOCKET_TIMEOUT_INCREMENT_FACTOR_MSEC != ParametersSettingsWebsocketGame::s_DEFAULT_VALUE_TIMEOUT_INCREMENT_FACTOR_MSEC, "Do not use default value in parsing tests");
JsonWriter websocketParamJson;
if (params.hasExtraField)
{
websocketParamJson["extraField"] = "extraValue";
}
if (!params.missingFieldMaxCount)
{
websocketParamJson[ParametersSettingsWebsocketGame::s_FIELD_NAME_MAX_COUNT] = s_WEBSOCKET_MAX_COUNT;
}
if (!params.hasMissingConnectionPing)
{
websocketParamJson[ParametersSettingsWebsocketGame::s_FIELD_NAME_CONNECTION_PING_INTERVAL_SEC] = s_CONNECTION_PING_INTERVAL_SEC;
}
if (!params.hasMissingRetryIncrementFactor)
{
websocketParamJson[ParametersSettingsWebsocketGame::s_FIELD_NAME_RETRY_INCREMENT_FACTOR_MSEC] = s_WEBSOCKET_RETRY_INCREMENT_FACTOR_MSEC;
}
if (!params.hasMissingRetryInitialDelay)
{
websocketParamJson[ParametersSettingsWebsocketGame::s_FIELD_NAME_RETRY_INITIAL_DELAY_MSEC] = s_WEBSOCKET_RETRY_INITIAL_DELAY_MSEC;
}
if (!params.hasMissingRetryRandomDelay)
{
websocketParamJson[ParametersSettingsWebsocketGame::s_FIELD_NAME_RETRY_RANDOM_DELAY_MSEC] = s_WEBSOCKET_RETRY_RANDOM_DELAY_MSEC;
}
if (!params.hasMissingTimeoutIncrementFactor)
{
websocketParamJson[ParametersSettingsWebsocketGame::s_FIELD_NAME_TIMEOUT_INCREMENT_FACTOR_MSEC] = s_WEBSOCKET_TIMEOUT_INCREMENT_FACTOR_MSEC;
}
if (!params.hasMissingTimeoutInitialDelay)
{
websocketParamJson[ParametersSettingsWebsocketGame::s_FIELD_NAME_TIMEOUT_INITIAL_DELAY_MSEC] = s_WEBSOCKET_TIMEOUT_INITIAL_DELAY_MSEC;
}
return websocketParamJson.getJson();
}
void checkParams(const ParametersInfo& parametersInfo, const ParamsSettingsWebsocket& websocketParams)
{
if (websocketParams.missingFieldMaxCount)
{
EXPECT_EQ(ParametersSettingsWebsocketGame::s_DEFAULT_VALUE_MAX_COUNT,
parametersInfo.m_paramsSettingsWebsocketGame.m_maxCount);
}
else
{
EXPECT_EQ(s_WEBSOCKET_MAX_COUNT, parametersInfo.m_paramsSettingsWebsocketGame.m_maxCount);
}
if (websocketParams.hasMissingConnectionPing)
{
EXPECT_EQ(ParametersSettingsWebsocketGame::s_DEFAULT_VALUE_CONNECTION_PING_INTERVAL_SEC,
parametersInfo.m_paramsSettingsWebsocketGame.m_connectionPingIntervalSec);
}
else
{
EXPECT_EQ(s_CONNECTION_PING_INTERVAL_SEC,
parametersInfo.m_paramsSettingsWebsocketGame.m_connectionPingIntervalSec);
}
if (websocketParams.hasMissingRetryIncrementFactor)
{
EXPECT_EQ(ParametersSettingsWebsocketGame::s_DEFAULT_VALUE_RETRY_INCREMENT_FACTOR_MSEC,
parametersInfo.m_paramsSettingsWebsocketGame.m_retryIncrementFactorMsec.getCount());
}
else
{
EXPECT_EQ(s_WEBSOCKET_RETRY_INCREMENT_FACTOR_MSEC,
parametersInfo.m_paramsSettingsWebsocketGame.m_retryIncrementFactorMsec.getCount());
}
if (websocketParams.hasMissingRetryInitialDelay)
{
EXPECT_EQ(ParametersSettingsWebsocketGame::s_DEFAULT_VALUE_RETRY_INITIAL_DELAY_MSEC,
parametersInfo.m_paramsSettingsWebsocketGame.m_retryInitialDelayMsec.getCount());
}
else
{
EXPECT_EQ(s_WEBSOCKET_RETRY_INITIAL_DELAY_MSEC,
parametersInfo.m_paramsSettingsWebsocketGame.m_retryInitialDelayMsec.getCount());
}
if (websocketParams.hasMissingRetryRandomDelay)
{
EXPECT_EQ(ParametersSettingsWebsocketGame::s_DEFAULT_VALUE_RETRY_RANDOM_DELAY_MSEC,
parametersInfo.m_paramsSettingsWebsocketGame.m_retryRandomDelayMsec.getCount());
}
else
{
EXPECT_EQ(s_WEBSOCKET_RETRY_RANDOM_DELAY_MSEC,
parametersInfo.m_paramsSettingsWebsocketGame.m_retryRandomDelayMsec.getCount());
}
if (websocketParams.hasMissingTimeoutIncrementFactor)
{
EXPECT_EQ(ParametersSettingsWebsocketGame::s_DEFAULT_VALUE_TIMEOUT_INCREMENT_FACTOR_MSEC,
parametersInfo.m_paramsSettingsWebsocketGame.m_timeoutIncrementFactorMsec.getCount());
}
else
{
EXPECT_EQ(s_WEBSOCKET_TIMEOUT_INCREMENT_FACTOR_MSEC,
parametersInfo.m_paramsSettingsWebsocketGame.m_timeoutIncrementFactorMsec.getCount());
}
if (websocketParams.hasMissingTimeoutInitialDelay)
{
EXPECT_EQ(ParametersSettingsWebsocketGame::s_DEFAULT_VALUE_TIMEOUT_INITIAL_DELAY_MSEC,
parametersInfo.m_paramsSettingsWebsocketGame.m_timeoutInitialDelayMsec.getCount());
}
else
{
EXPECT_EQ(s_WEBSOCKET_TIMEOUT_INITIAL_DELAY_MSEC,
parametersInfo.m_paramsSettingsWebsocketGame.m_timeoutInitialDelayMsec.getCount());
}
}
class ParametersSpaceSettingsWebsocketGame : public ParametersSpaceMockHelper
{
public:
ParametersSpaceSettingsWebsocketGame(const ParamsSettingsWebsocket& websocketParams)
: m_websocketParams(websocketParams)
{
}
private:
Json buildParameterGroupSettingsWebsocketGame() const override
{
Json fields(buildParams(m_websocketParams));
return renderParameterGroup(fields);
}
const ParamsSettingsWebsocket m_websocketParams;
};
}
typedef ParamFixture<PARAMETERS_UPDATE_SETTINGS_WEBSOCKET_GAME, ParametersUpdateSettingsWebsocketGame_BF::ParamsSettingsWebsocket> PARAMETERS_UPDATE_SETTINGS_WEBSOCKET_GAME_FIXTURE;
INSTANTIATE_TEST_CASE_P(ParamsSettingsWebsocket, PARAMETERS_UPDATE_SETTINGS_WEBSOCKET_GAME_FIXTURE, ::testing::Values(
ParametersUpdateSettingsWebsocketGame_BF::ParamsSettingsWebsocket{ true, false, false, false, false, false, false, false }, // Local_CheckCustomParametersSettingsWebsocketExtraField
ParametersUpdateSettingsWebsocketGame_BF::ParamsSettingsWebsocket{ false, true, false, false, false, false, false, false }, // Local_CheckCustomParametersSettingsWebsocketMissingMaxCount
ParametersUpdateSettingsWebsocketGame_BF::ParamsSettingsWebsocket{ false, false, true, false, false, false, false, false }, // Local_CheckCustomParametersSettingsWebsocketRetryConnectionPing
ParametersUpdateSettingsWebsocketGame_BF::ParamsSettingsWebsocket{ false, false, false, true, false, false, false, false }, // Local_CheckCustomParametersSettingsWebsocketRetryIncrementFactor
ParametersUpdateSettingsWebsocketGame_BF::ParamsSettingsWebsocket{ false, false, false, false, true, false, false, false }, // Local_CheckCustomParametersSettingsWebsocketRetryInitialDelay
ParametersUpdateSettingsWebsocketGame_BF::ParamsSettingsWebsocket{ false, false, false, false, false, true, false, false }, // Local_CheckCustomParametersSettingsWebsocketRetryRandomDelay
ParametersUpdateSettingsWebsocketGame_BF::ParamsSettingsWebsocket{ false, false, false, false, false, false, true, false }, // Local_CheckCustomParametersSettingsWebsocketTimeoutIncrementFactor
ParametersUpdateSettingsWebsocketGame_BF::ParamsSettingsWebsocket{ false, false, false, false, false, false, false, true } // Local_CheckCustomParametersSettingsWebsocketTimeoutInitialDelay
));
/// @test Validates the parsing of parameter settings websocket game
TEST_P(PARAMETERS_UPDATE_SETTINGS_WEBSOCKET_GAME_FIXTURE, LOCAL_CheckParametersUpdateSettingsWebsocketGame)
{
const ParametersUpdateSettingsWebsocketGame_BF::ParamsSettingsWebsocket& websocketParams = this->getParam();
SAVE_ALLOC_COUNT(testCount);
TestParametersInfoHelper parametersHelper;
EXPECT_TRUE(parametersHelper.setSpaceSettingsGroups(
ParametersUpdateSettingsWebsocketGame_BF::ParametersSpaceSettingsWebsocketGame(websocketParams).createParametersResponseMap()));
ParametersUpdateSettingsWebsocketGame_BF::checkParams(parametersHelper.m_info, websocketParams);
EXPECT_ALLOC_COUNT_PC_X1_EQ(2158u, 2164, testCount);
}
};
#endif // US_DLL