summaryrefslogtreecommitdiff
path: root/battleNetApi/tests/tests.cpp
diff options
context:
space:
mode:
authorAotrix <[email protected]>2026-01-31 00:37:35 +0100
committerAotrix <[email protected]>2026-01-31 00:37:35 +0100
commitae0aeff7ac5e3bda80547babdba9a26533d428d9 (patch)
tree2b4d79fd8653ff6bcd81d76c1021a646e8b83c5e /battleNetApi/tests/tests.cpp
parent40d7391fcbc057823d423ddd0f0c6d532d7cf4eb (diff)
added parallelization for cards retrieval
Diffstat (limited to 'battleNetApi/tests/tests.cpp')
-rw-r--r--battleNetApi/tests/tests.cpp43
1 files changed, 40 insertions, 3 deletions
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 <catch2/benchmark/catch_benchmark.hpp>
+#include <catch2/benchmark/catch_chronometer.hpp>
+#include <catch2/benchmark/detail/catch_analyse.hpp>
+#include <catch2/benchmark/detail/catch_benchmark_function.hpp>
+#include <catch2/benchmark/detail/catch_estimate_clock.hpp>
+#include <catch2/catch_approx.hpp>
+#include <catch2/catch_config.hpp>
#include <catch2/catch_test_macros.hpp>
#include <cstdint>
#include <iostream>
@@ -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<std::string> 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<json> kApiResponses = aHearthstoneApi.makeApiRequest(aRequests);
+ kApiResponses.emplace(kApiResponses.begin(), kFirstPageJson);
+ REQUIRE(kApiResponses.size() == kNumberOfRetrievals);
+ for (const json &kApiResponse : kApiResponses) {
+ REQUIRE(kApiResponse["cards"].size() == 16);
+ }
+}