From ae0aeff7ac5e3bda80547babdba9a26533d428d9 Mon Sep 17 00:00:00 2001 From: Aotrix <9aotrix@protonmail.com> Date: Sat, 31 Jan 2026 00:37:35 +0100 Subject: added parallelization for cards retrieval --- battleNetApi/tests/tests.cpp | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) (limited to 'battleNetApi/tests') diff --git a/battleNetApi/tests/tests.cpp b/battleNetApi/tests/tests.cpp index 062608e..39951bf 100644 --- a/battleNetApi/tests/tests.cpp +++ b/battleNetApi/tests/tests.cpp @@ -1,5 +1,12 @@ #include "apiUrl.hpp" #include "hearthstoneApi.hpp" +#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -46,7 +53,7 @@ TEST_CASE("Retrieve cards", "[retrieveCardsOnce]") { REQUIRE(kApiResponse["cards"].size() == 16); } -TEST_CASE("Retrieve cards", "[retrieveCardsFourTimes]") { +TEST_CASE("Retrieve cards 10 times without parallelization", "[retrieveCardsNoParallel]") { const std::string kCredentialsFile{"tests/resources/credentials.json"}; Token aToken(kCredentialsFile); HearthstoneApi aHearthstoneApi(aToken); @@ -60,9 +67,10 @@ TEST_CASE("Retrieve cards", "[retrieveCardsFourTimes]") { json kApiResponse = aHearthstoneApi.makeApiRequest(aApiUrl()); // Retrieve number of pages + const int kNumberOfRetrievals{10}; const int kNumberOfPages{kApiResponse["pageCount"]}; - REQUIRE(kNumberOfPages >= 4); - for (int i{1}; i < 4; ++i) { + REQUIRE(kNumberOfPages >= kNumberOfRetrievals); + for (int i{1}; i < kNumberOfRetrievals; ++i) { REQUIRE(kApiResponse["cards"].size() == 16); aApiUrl.setPage(std::to_string(i + 1)); kApiResponse = aHearthstoneApi.makeApiRequest(aApiUrl()); @@ -70,3 +78,32 @@ TEST_CASE("Retrieve cards", "[retrieveCardsFourTimes]") { REQUIRE(kApiResponse["cards"].size() >= 1); REQUIRE(kApiResponse["cards"].size() <= 16); } + +TEST_CASE("Retrieve cards 30 times with parallelization", "[retrieveCardsParallel]") { + const std::string kCredentialsFile{"tests/resources/credentials.json"}; + Token aToken(kCredentialsFile); + HearthstoneApi aHearthstoneApi(aToken); + const std::string kContentType{"cards"}; + const std::string kRegion{"eu"}; + ApiUrl aApiUrl(kContentType, kRegion); + aApiUrl.setLocale("fr_FR"); + aApiUrl.setGameMode("constructed"); + aApiUrl.setPageSize("16"); + aApiUrl.setPage("1"); + std::vector aRequests; + json kFirstPageJson = aHearthstoneApi.makeApiRequest(aApiUrl()); + + int kNumberOfPages{kFirstPageJson["pageCount"]}; + const int kNumberOfRetrievals{30}; + REQUIRE(kNumberOfPages >= kNumberOfRetrievals); + for (int i{1}; i < kNumberOfRetrievals; ++i) { + aApiUrl.setPage(std::to_string(i + 1)); + aRequests.push_back(aApiUrl()); + } + std::vector kApiResponses = aHearthstoneApi.makeApiRequest(aRequests); + kApiResponses.emplace(kApiResponses.begin(), kFirstPageJson); + REQUIRE(kApiResponses.size() == kNumberOfRetrievals); + for (const json &kApiResponse : kApiResponses) { + REQUIRE(kApiResponse["cards"].size() == 16); + } +} -- cgit v1.2.3