//////////////////////////////////////////////////////////////////////////////// // (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 #include 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_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