Compare commits
4 Commits
Prerelease
...
Prerelease
Author | SHA1 | Date | |
---|---|---|---|
|
03795a2f3a | ||
5e8c85feea | |||
4ea05e09b7 | |||
b57cc68b6f |
@@ -32,7 +32,7 @@ CPMAddPackage(
|
||||
|
||||
CPMAddPackage(
|
||||
NAME jlog
|
||||
URL https://git.redacted.cc/josh/jlog/archive/Prerelease-9.zip
|
||||
URL https://git.redacted.cc/josh/jlog/archive/Prerelease-12.zip
|
||||
)
|
||||
|
||||
|
||||
|
@@ -6,6 +6,8 @@
|
||||
#include <vector>
|
||||
#include <jlog/jlog.hpp>
|
||||
|
||||
//#define NDEBUG for disabling assert, but tests still end up passing.
|
||||
|
||||
// TODO: Move implementation to jtest::detail
|
||||
// have this file primarily expose the macros intended for users
|
||||
|
||||
@@ -21,6 +23,8 @@ namespace jtest {
|
||||
bool passed;
|
||||
};
|
||||
|
||||
/// jlog log wrapper for jtest
|
||||
void log(std::vector<jlog::token> tokens);
|
||||
|
||||
/// Generates and returns a sequence of logger tokens pre-formatted to the test data.
|
||||
std::vector<jlog::token> log_test_format(const std::string& testname, const std::string& file, int line, bool passed);
|
||||
|
16
main.cpp
16
main.cpp
@@ -10,6 +10,7 @@
|
||||
// TODO: Provide benchmarking on test running-time
|
||||
|
||||
#include <jtest/jtest.hpp>
|
||||
#include <cassert>
|
||||
|
||||
void TestA() { jtest::check("Bruh" == "Bruh"); }
|
||||
void TestB() { jtest::check(6*6 == 36); }
|
||||
@@ -33,12 +34,21 @@ int main(int argc, char** argv)
|
||||
//jtest::check(2+2 == 4);
|
||||
});
|
||||
|
||||
/*
|
||||
|
||||
TEST("Test4", []
|
||||
{
|
||||
assert(false);
|
||||
//assert(69 == 9);//, "FUCKING COCK"); stil figuring out
|
||||
});
|
||||
|
||||
TEST("Test5", []
|
||||
{
|
||||
throw std::runtime_error("HOLY SHIT");
|
||||
});
|
||||
|
||||
TEST("Test6", []
|
||||
{
|
||||
throw std::exception();
|
||||
});
|
||||
*/
|
||||
|
||||
TEST("TestGroup::A", TestA);
|
||||
TEST("TestGroup::B", TestB);
|
||||
|
@@ -10,12 +10,21 @@ namespace jtest {
|
||||
int passedtests;
|
||||
int failedtests;
|
||||
|
||||
void log(std::vector<jlog::token> tokens)
|
||||
{
|
||||
std::vector<jlog::token> wtokens;
|
||||
auto head = jlog::token{.colorCode = jlog::ansi_escape_codes::FG_WHITE, .content ="JTEST"};
|
||||
|
||||
wtokens.push_back(head);
|
||||
wtokens.insert(wtokens.end(), tokens.begin(), tokens.end());
|
||||
|
||||
jlog::log(wtokens, "test_results.log");
|
||||
}
|
||||
|
||||
std::vector<jlog::token> log_test_format(const std::string &testname, const std::string &file, int line,
|
||||
bool passed) {
|
||||
std::vector<jlog::token> wtokens;
|
||||
|
||||
auto head = jlog::token{.colorCode = jlog::ansi_escape_codes::FG_WHITE, .content ="JTEST"};
|
||||
|
||||
auto filedata = jlog::token{.content = std::format("{}:{}", file, line)};
|
||||
|
||||
std::vector<jlog::token> teststate;
|
||||
@@ -31,7 +40,6 @@ namespace jtest {
|
||||
|
||||
auto raninfo = jlog::token{.content = std::format("{}/{}", rantests, testlist.size())};
|
||||
|
||||
wtokens.push_back(head);
|
||||
wtokens.push_back(filedata);
|
||||
wtokens.insert(wtokens.end(), teststate.begin(), teststate.end());
|
||||
wtokens.push_back(raninfo);
|
||||
@@ -40,16 +48,11 @@ namespace jtest {
|
||||
}
|
||||
|
||||
std::vector<jlog::token> log_test_tracking_format() {
|
||||
auto head = jlog::token{.colorCode = jlog::ansi_escape_codes::FG_WHITE, .content = "JTEST"};
|
||||
auto tracking = jlog::token{.content = std::format("Tests Ran: [{}/{}] Failed: [{}/{}] Passed: [{}/{}]",
|
||||
rantests,
|
||||
testlist.size(),
|
||||
failedtests,
|
||||
rantests,
|
||||
passedtests,
|
||||
rantests),
|
||||
.delimiter = ""};
|
||||
return {head, tracking};
|
||||
auto ran = jlog::token{.content = std::format("Tests Ran: [{}/{}]", rantests, testlist.size()), .delimiter = ""};
|
||||
auto failed = jlog::token{.content = std::format("Failed: [{}/{}]", failedtests, rantests), .delimiter = ""};
|
||||
auto passed = jlog::token{.content = std::format("Passed: [{}/{}]", passedtests, rantests), .delimiter = ""};
|
||||
|
||||
return {ran, failed, passed};
|
||||
}
|
||||
|
||||
void definetest(const std::string &testname, const std::function<void()> &callback, const std::string &file,
|
||||
@@ -89,13 +92,15 @@ namespace jtest {
|
||||
try { callback(); }
|
||||
catch(const std::exception& e)
|
||||
{ passed = false; }
|
||||
catch(...) // <- Basically covers all exception cases. GTest does something similar
|
||||
{ passed = false; }
|
||||
|
||||
rantests++;
|
||||
|
||||
if (passed) { passedtests++; }
|
||||
else { failedtests++; }
|
||||
|
||||
jlog::log(log_test_format(testname, file, line, passed));
|
||||
jtest::log(log_test_format(testname, file, line, passed));
|
||||
|
||||
return passed;
|
||||
|
||||
@@ -106,10 +111,9 @@ namespace jtest {
|
||||
for (testdef& td : testlist)
|
||||
{
|
||||
td.passed = test(td.testname, td.callback, td.file, td.line);
|
||||
|
||||
}
|
||||
|
||||
jlog::log(log_test_tracking_format());
|
||||
jtest::log(log_test_tracking_format());
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user