//////////////////////////////////////////////////////////////////////////////// // (c) Copyright, Ubisoft Entertainment Inc. || Created by Harbour // //////////////////////////////////////////////////////////////////////////////// #include "tests/config.h" #include "tests/fixture/paramFixture.h" #include "tests/mock/parametersMockHelper.h" #include #include namespace US_NS {; US_DEFINE_TEST(TestParametersUpdateSettingsHttpInternal); }; #if !defined(US_DLL) namespace US_NS {; typedef LeakChecker PARAMETERS_UPDATE_SETTINGS_HTTP_INTERNAL; namespace TestParametersSettingsHttpInternal_BF { struct ParamsSettingsHttp { bool hasExtraField; bool missingFieldMaxCount; bool missingRetryFieldIncrementFactor; bool missingRetryFieldInitialDelay; bool missingRetryFieldRandomDelay; bool missingTimeoutFieldIncrementFactor; bool missingTimeoutFieldInitialDelay; }; const uint32 s_HTTP_MAX_COUNT = 3; const uint32 s_HTTP_RETRY_INITIAL_DELAY_MSEC = 6 * 1000; const uint32 s_HTTP_RETRY_INCREMENT_FACTOR_MSEC = 7 * 1000; const uint32 s_HTTP_RETRY_RANDOM_DELAY_MSEC = 8 * 1000; const uint32 s_HTTP_TIMEOUT_INITIAL_DELAY_MSEC = 20u * 1000; const uint32 s_HTTP_TIMEOUT_INCREMENT_FACTOR_MSEC = 15u * 1000; Json buildParams(const ParamsSettingsHttp& params) { // Ensure the values used in the test are different from the default values used when parsing the params US_ASSERT(s_HTTP_MAX_COUNT != ParametersSettingsHttpInternal::s_DEFAULT_VALUE_MAX_COUNT, "Do not use default value in parsing tests"); US_ASSERT(s_HTTP_RETRY_INCREMENT_FACTOR_MSEC != ParametersSettingsHttpInternal::s_DEFAULT_VALUE_RETRY_INCREMENT_FACTOR_MSEC, "Do not use default value in parsing tests"); US_ASSERT(s_HTTP_RETRY_INITIAL_DELAY_MSEC != ParametersSettingsHttpInternal::s_DEFAULT_VALUE_RETRY_INITIAL_DELAY_MSEC, "Do not use default value in parsing tests"); US_ASSERT(s_HTTP_RETRY_RANDOM_DELAY_MSEC != ParametersSettingsHttpInternal::s_DEFAULT_VALUE_RETRY_RANDOM_DELAY_MSEC, "Do not use default value in parsing tests"); US_ASSERT(s_HTTP_TIMEOUT_INCREMENT_FACTOR_MSEC != ParametersSettingsHttpInternal::s_DEFAULT_VALUE_TIMEOUT_INCREMENT_FACTOR_MSEC, "Do not use default value in parsing tests"); US_ASSERT(s_HTTP_TIMEOUT_INITIAL_DELAY_MSEC != ParametersSettingsHttpInternal::s_DEFAULT_VALUE_TIMEOUT_INITIAL_DELAY_MSEC, "Do not use default value in parsing tests"); JsonWriter httpParamJson; if (!params.missingFieldMaxCount) { httpParamJson[ParametersSettingsHttpInternal::s_FIELD_NAME_MAX_COUNT] = s_HTTP_MAX_COUNT; } if (!params.missingRetryFieldIncrementFactor) { httpParamJson[ParametersSettingsHttpInternal::s_FIELD_NAME_RETRY_INCREMENT_FACTOR_MSEC] = s_HTTP_RETRY_INCREMENT_FACTOR_MSEC; } if (!params.missingRetryFieldInitialDelay) { httpParamJson[ParametersSettingsHttpInternal::s_FIELD_NAME_RETRY_INITIAL_DELAY_MSEC] = s_HTTP_RETRY_INITIAL_DELAY_MSEC; } if (!params.missingRetryFieldRandomDelay) { httpParamJson[ParametersSettingsHttpInternal::s_FIELD_NAME_RETRY_RANDOM_DELAY_MSEC] = s_HTTP_RETRY_RANDOM_DELAY_MSEC; } if (!params.missingTimeoutFieldIncrementFactor) { httpParamJson[ParametersSettingsHttpInternal::s_FIELD_NAME_TIMEOUT_INCREMENT_FACTOR_MSEC] = s_HTTP_TIMEOUT_INCREMENT_FACTOR_MSEC; } if (!params.missingTimeoutFieldInitialDelay) { httpParamJson[ParametersSettingsHttpInternal::s_FIELD_NAME_TIMEOUT_INITIAL_DELAY_MSEC] = s_HTTP_TIMEOUT_INITIAL_DELAY_MSEC; } if (params.hasExtraField) { httpParamJson["extraField"] = "extraValue"; } return httpParamJson.getJson(); } void checkParams(const ParametersInfo& parametersInfo, const ParamsSettingsHttp& httpParams) { if (httpParams.missingFieldMaxCount) { EXPECT_EQ(ParametersSettingsHttpInternal::s_DEFAULT_VALUE_MAX_COUNT, parametersInfo.m_paramsSettingsHttpInternal.m_maxCount); } else { EXPECT_EQ(s_HTTP_MAX_COUNT, parametersInfo.m_paramsSettingsHttpInternal.m_maxCount); } if (httpParams.missingRetryFieldIncrementFactor) { EXPECT_EQ(ParametersSettingsHttpInternal::s_DEFAULT_VALUE_RETRY_INCREMENT_FACTOR_MSEC, parametersInfo.m_paramsSettingsHttpInternal.m_retryIncrementFactorMsec.getCount()); } else { EXPECT_EQ(s_HTTP_RETRY_INCREMENT_FACTOR_MSEC, parametersInfo.m_paramsSettingsHttpInternal.m_retryIncrementFactorMsec.getCount()); } if (httpParams.missingRetryFieldInitialDelay) { EXPECT_EQ(ParametersSettingsHttpInternal::s_DEFAULT_VALUE_RETRY_INITIAL_DELAY_MSEC, parametersInfo.m_paramsSettingsHttpInternal.m_retryInitialDelayMsec.getCount()); } else { EXPECT_EQ(s_HTTP_RETRY_INITIAL_DELAY_MSEC, parametersInfo.m_paramsSettingsHttpInternal.m_retryInitialDelayMsec.getCount()); } if (httpParams.missingRetryFieldRandomDelay) { EXPECT_EQ(ParametersSettingsHttpInternal::s_DEFAULT_VALUE_RETRY_RANDOM_DELAY_MSEC, parametersInfo.m_paramsSettingsHttpInternal.m_retryRandomDelayMsec.getCount()); } else { EXPECT_EQ(s_HTTP_RETRY_RANDOM_DELAY_MSEC, parametersInfo.m_paramsSettingsHttpInternal.m_retryRandomDelayMsec.getCount()); } if (httpParams.missingTimeoutFieldIncrementFactor) { EXPECT_EQ(ParametersSettingsHttpInternal::s_DEFAULT_VALUE_TIMEOUT_INCREMENT_FACTOR_MSEC, parametersInfo.m_paramsSettingsHttpInternal.m_timeoutIncrementFactorMsec.getCount()); } else { EXPECT_EQ(s_HTTP_TIMEOUT_INCREMENT_FACTOR_MSEC, parametersInfo.m_paramsSettingsHttpInternal.m_timeoutIncrementFactorMsec.getCount()); } if (httpParams.missingTimeoutFieldInitialDelay) { EXPECT_EQ(ParametersSettingsHttpInternal::s_DEFAULT_VALUE_TIMEOUT_INITIAL_DELAY_MSEC, parametersInfo.m_paramsSettingsHttpInternal.m_timeoutInitialDelayMsec.getCount()); } else { EXPECT_EQ(s_HTTP_TIMEOUT_INITIAL_DELAY_MSEC, parametersInfo.m_paramsSettingsHttpInternal.m_timeoutInitialDelayMsec.getCount()); } } class ParametersSpaceSettingsHttpInternal : public ParametersSpaceMockHelper { public: ParametersSpaceSettingsHttpInternal(const ParamsSettingsHttp& httpParams) : m_httpParams(httpParams) { } private: Json buildParameterGroupSettingsHttpInternal() const override { Json fields(buildParams(m_httpParams)); return renderParameterGroup(fields); } const ParamsSettingsHttp m_httpParams; }; } typedef ParamFixture PARAMETERS_UPDATE_SETTINGS_HTTP_INTERNAL_FIXTURE; INSTANTIATE_TEST_CASE_P(ParamsSettingsHttp, PARAMETERS_UPDATE_SETTINGS_HTTP_INTERNAL_FIXTURE, ::testing::Values( TestParametersSettingsHttpInternal_BF::ParamsSettingsHttp{ true, false, false, false, false, false, false }, // LOCAL_CheckParametersUpdateSettingsHttpExtraField TestParametersSettingsHttpInternal_BF::ParamsSettingsHttp{ false, true, false, false, false, false, false }, // LOCAL_CheckParametersUpdateSettingsHttpMissingMaxCount TestParametersSettingsHttpInternal_BF::ParamsSettingsHttp{ false, false, true, false, false, false, false }, // LOCAL_CheckParametersUpdateSettingsHttpRetryInitialDelay TestParametersSettingsHttpInternal_BF::ParamsSettingsHttp{ false, false, false, true, false, false, false }, // LOCAL_CheckParametersUpdateSettingsHttpRetryIncrementFactor TestParametersSettingsHttpInternal_BF::ParamsSettingsHttp{ false, false, false, false, true, false, false }, // LOCAL_CheckParametersUpdateSettingsHttpRetryRandomDelay TestParametersSettingsHttpInternal_BF::ParamsSettingsHttp{ false, false, false, false, false, true, false }, // LOCAL_CheckParametersUpdateSettingsHttpTimeoutInitialDelay TestParametersSettingsHttpInternal_BF::ParamsSettingsHttp{ false, false, false, false, false, false, true } // LOCAL_CheckParametersUpdateSettingsHttpTimeoutIncrementFactor )); /// @test Validates the parsing of parameter settings http internal TEST_P(PARAMETERS_UPDATE_SETTINGS_HTTP_INTERNAL_FIXTURE, LOCAL_CheckParametersUpdateSettingsHttpGameInternal) { const TestParametersSettingsHttpInternal_BF::ParamsSettingsHttp& httpParams = this->getParam(); SAVE_ALLOC_COUNT(testCount); TestParametersInfoHelper parametersHelper; EXPECT_TRUE(parametersHelper.setSpaceSettingsGroups(TestParametersSettingsHttpInternal_BF::ParametersSpaceSettingsHttpInternal(httpParams).createParametersResponseMap())); TestParametersSettingsHttpInternal_BF::checkParams(parametersHelper.m_info, httpParams); EXPECT_ALLOC_COUNT_PC_X1_EQ(2158u, 2164, testCount); } }; #endif // US_DLL