Adds a couple of helper functions for battles to run turns, prettify outputs.
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
#define POKEMONSCRIPTTESTER_TESTRUNNER_HPP
|
||||
|
||||
#include <PkmnLib/ScriptResolving/AngelScript/AngelScriptMetadata.hpp>
|
||||
#include "../../extern/termcolor.hpp"
|
||||
#include "Test.hpp"
|
||||
|
||||
class TestRunner {
|
||||
@@ -34,27 +35,62 @@ public:
|
||||
size_t notRunTests = 0;
|
||||
size_t successfulTests = 0;
|
||||
size_t failedTests = 0;
|
||||
|
||||
size_t totalRequirements = 0;
|
||||
size_t failedRequirements = 0;
|
||||
|
||||
for (auto& test : _tests) {
|
||||
auto result = test.second->GetResult();
|
||||
switch (result) {
|
||||
case TestResult::NotRan: notRunTests += 1; break;
|
||||
case TestResult::Success: successfulTests += 1; break;
|
||||
case TestResult::Failed: {
|
||||
std::cout << "Test '" << test.first << "' failed with message: " << std::endl;
|
||||
std::cout << termcolor::red << "Test '" << termcolor::yellow << test.first << termcolor::red
|
||||
<< "' failed with message: " << termcolor::reset << std::endl;
|
||||
std::cout << test.second->GetErrorMessage() << std::endl << std::endl;
|
||||
failedTests += 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
totalRequirements += test.second->GetTotalRequirements();
|
||||
failedRequirements += test.second->GetFailedRequirements();
|
||||
}
|
||||
|
||||
std::cout << "Ran " << successfulTests + failedTests << " tests. Passed tests: " << successfulTests
|
||||
<< ". Failed tests: " << failedTests << "." << std::endl;
|
||||
auto totalTests = successfulTests + failedTests;
|
||||
auto digitWidth = std::log10(std::max(totalTests, totalRequirements)) + 2;
|
||||
std::cout << termcolor::blue << "=====================================================================";
|
||||
for (int i = 0; i < digitWidth; ++i) {
|
||||
std::cout << "===";
|
||||
}
|
||||
std::cout << termcolor::reset << std::endl;
|
||||
|
||||
ReportResults("Test cases", digitWidth, totalTests, successfulTests, failedTests, notRunTests);
|
||||
ReportResults("Requirements", digitWidth, totalRequirements, totalRequirements - failedRequirements,
|
||||
failedRequirements, {});
|
||||
if (failedTests > 0) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void ReportResults(const std::string& label, double digitWidth, size_t total, size_t passed, size_t failed,
|
||||
std::optional<size_t> skipped) {
|
||||
std::cout << std::left // Left align
|
||||
<< std::setw(16) << label + ":" << std::setw(digitWidth) << total << std::setw(3) << "|";
|
||||
if (passed > 0) {
|
||||
std::cout << termcolor::green;
|
||||
}
|
||||
std::cout << std::left << std::setw(14) << "Passed:" << std::setw(digitWidth) << passed << termcolor::reset
|
||||
<< std::setw(3) << "|";
|
||||
if (failed > 0) {
|
||||
std::cout << termcolor::red;
|
||||
}
|
||||
std::cout << std::setw(14) << "Failed:" << std::setw(digitWidth) << failed << termcolor::reset;
|
||||
if (skipped.has_value()) {
|
||||
std::cout << std::setw(3) << "|" << std::setw(14) << "Skipped:" << std::setw(digitWidth) << skipped.value()
|
||||
<< std::endl;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
#endif // POKEMONSCRIPTTESTER_TESTRUNNER_HPP
|
||||
|
||||
Reference in New Issue
Block a user