diff options
Diffstat (limited to 'battleNetApi/tests/src/tests.cpp')
| -rw-r--r-- | battleNetApi/tests/src/tests.cpp | 144 |
1 files changed, 0 insertions, 144 deletions
diff --git a/battleNetApi/tests/src/tests.cpp b/battleNetApi/tests/src/tests.cpp deleted file mode 100644 index edc0641..0000000 --- a/battleNetApi/tests/src/tests.cpp +++ /dev/null @@ -1,144 +0,0 @@ -#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 <fstream> -#include <nlohmann/json.hpp> -#include <string> -#include <tokenBuilder.hpp> - -TEST_CASE("Retrieve API Token", "[generateApiToken]") { - const std::string aCredentialsFile{"tests/resources/credentials.json"}; - Token aToken(aCredentialsFile); - const std::string aTokenContent{aToken.text()}; - const std::string::size_type aTokenSize{aTokenContent.size()}; - REQUIRE(aTokenSize >= 30); - REQUIRE(aTokenSize <= 40); -} - -TEST_CASE("Retrieve number of cards", "[countCards]") { - const std::string aCredentialsFile{}; - const std::string aContentType{"cards"}; - const std::string aRegion{"eu"}; - ApiUrl aApiUrl(aContentType, aRegion); - aApiUrl.setLocale("fr_FR"); - aApiUrl.setGameMode("constructed"); - aApiUrl.setPageSize("1"); - TokenPool::feedTokenSource("tests/resources/credentials.json"); - const json aResponse = - HearthstoneApi::makeApiRequest(aApiUrl, TokenPool::build().value().text()); - REQUIRE(aResponse.size() > 0); - REQUIRE(aResponse.contains("pageCount")); - std::uint64_t aNumberOfCards{aResponse["pageCount"]}; - std::uint64_t aExpectedNumberOfCards{6178}; - REQUIRE(aNumberOfCards == aExpectedNumberOfCards); -} - -TEST_CASE("Retrieve page once", "[retrievePageOnce]") { - const std::string aCredentialsFile{"tests/resources/credentials.json"}; - Token aToken(kCredentialsFile); - const std::string aContentType{"cards"}; - const std::string aRegion{"eu"}; - ApiUrl aApiUrl(aContentType, aRegion); - aApiUrl.setLocale("fr_FR"); - aApiUrl.setGameMode("constructed"); - aApiUrl.setPageSize("16"); - TokenPool::feedTokenSource("tests/resources/credentials.json"); - const json aApiResponse = - HearthstoneApi::makeApiRequest(aApiUrl, TokenPool::build().value().text()); - REQUIRE(aApiResponse["cards"].size() == 16); -} - -TEST_CASE("Retrieve pages 10 times without parallelization", "[retrievePagesNoParallel]") { - const std::string aCredentialsFile{"tests/resources/credentials.json"}; - Token aToken(aCredentialsFile); - const std::string aContentType{"cards"}; - const std::string aRegion{"eu"}; - ApiUrl aApiUrl(aContentType, aRegion); - aApiUrl.setLocale("fr_FR"); - aApiUrl.setGameMode("constructed"); - aApiUrl.setPageSize("16"); - aApiUrl.setPage("1"); - TokenPool::feedTokenSource("tests/resources/credentials.json"); - std::string aTokenText{TokenPool::build().value().text()}; - json aApiResponse = HearthstoneApi::makeApiRequest(aApiUrl, aTokenText); - - // Retrieve number of pages - const int aNumberOfRetrievals{10}; - const int aNumberOfPages{aApiResponse["pageCount"]}; - REQUIRE(aNumberOfPages >= aNumberOfRetrievals); - for (int i{1}; i < aNumberOfRetrievals; ++i) { - REQUIRE(aApiResponse["cards"].size() == 16); - aApiUrl.setPage(std::to_string(i + 1)); - aApiResponse = HearthstoneApi::makeApiRequest(aApiUrl, aTokenText); - } - REQUIRE(aApiResponse["cards"].size() >= 1); - REQUIRE(aApiResponse["cards"].size() <= 16); -} - -TEST_CASE("Retrieve pages 10 times with parallelization", "[retrievePagesParallel]") { - const std::string aCredentialsFile{"tests/resources/credentials.json"}; - Token aToken(kCredentialsFile); - const std::string aContentType{"cards"}; - const std::string aRegion{"eu"}; - ApiUrl aApiUrl(aContentType, aRegion); - aApiUrl.setLocale("fr_FR"); - aApiUrl.setGameMode("constructed"); - aApiUrl.setPageSize("16"); - aApiUrl.setPage("1"); - std::vector<std::string> aRequests; - TokenPool::feedTokenSource("tests/resources/credentials.json"); - std::string aTokenText{TokenPool::build().value().text()}; - json aFirstPageJson = HearthstoneApi::makeApiRequest(aApiUrl, aTokenText); - - int kNumberOfPages{aFirstPageJson["pageCount"]}; - const int aNumberOfRetrievals{10}; - REQUIRE(aNumberOfPages >= aNumberOfRetrievals); - for (int i{1}; i < aNumberOfRetrievals; ++i) { - aApiUrl.setPage(std::to_string(i + 1)); - aRequests.emplace_back(aApiUrl.text()); - } - std::vector<json> aApiResponses = HearthstoneApi::makeApiRequest(aRequests, aTokenText); - aApiResponses.emplace(aApiResponses.begin(), aFirstPageJson); - REQUIRE(aApiResponses.size() == aNumberOfRetrievals); - for (const json &aApiResponse : aApiResponses) { - REQUIRE(aApiResponse["cards"].size() == 16); - } -} - -TEST_CASE("Merge two card lists from two page requests", "[Merge pages]") { - std::ifstream aFirstPageFile{"tests/resources/page_merge_00.json"}; - json aFirstPageJson = json::parse(aFirstPageFile); - std::ifstream aSecondPageFile{"tests/resources/page_merge_01.json"}; - const json aSecondPageJson = json::parse(aSecondPageFile); - - json::reference aMergedCards = aFirstPageJson["cards"]; - for (auto &card : aSecondPageJson["cards"]) { - aMergedCards.emplace_back(std::move(card)); - } - REQUIRE(aMergedCards.size() == 32); - std::ofstream aOutputJson("build/output_pages_merge.json"); - aOutputJson << aMergedCards.dump(4); -} - -TEST_CASE("Retrieve a single page with HearthstoneApi::downloadCards", - "[retrievePageOnceHearthstoneApi]") { - const std::string aContentType{"cards"}; - const std::string aRegion{"eu"}; - ApiUrl aApiUrl(aContentType, aRegion); - aApiUrl.setPage(3); - TokenPool::feedTokenSource("tests/resources/credentials.json"); - json aApiResponse = HearthstoneApi::makeApiRequest(aApiUrl, TokenPool::build().value().text()); - const json::size_type aExpectedNumberOfCards{aApiResponse["cards"].size()}; - TokenPool::feedTokenSource("tests/resources/credentials.json"); - aApiResponse = HearthstoneApi::downloadCards(aApiUrl, TokenPool::build().value()); - const json::size_type aCurrentNumberOfCards{aApiResponse["cards"].size()}; - REQUIRE(aCurrentNumberOfCards == aExpectedNumberOfCards); -} |
