From 7412ce3f650eadd9027521a0d49e74ff3fa78655 Mon Sep 17 00:00:00 2001 From: maxine Date: Tue, 18 Jun 2024 11:15:49 -0400 Subject: [PATCH] Decent README :) --- README.md | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++- img.png | Bin 0 -> 20664 bytes 2 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 img.png diff --git a/README.md b/README.md index fe0fe57..b99034a 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,69 @@ # jtest - Dead Simple Modern C++ Unit Testing \ No newline at end of file + Dead Simple Modern C++ Unit Testing + +![Static Badge](https://img.shields.io/badge/Lit-Based-%20) + +## Features +* Macro free, gluten free, cruelty free unit testsuite! +* Colored output! +* Single header!! +* Modern C++ (C++20) +* Public Domain +* Dead simple! + +## Installation + +Include this repository as a CPM dependency, and link against the library. + +```cmake +CPMAddPackage( + NAME jtest + URL https://git.redacted.cc/josh/jtest/archive/Prerelease-1.zip +) +# ... +include_directories(${jtest_SOURCE_DIR}/include) +# ... +target_link_libraries(YourProgram ... jtest) +``` + +## Usage + +Using jtest is simple! Dead simple! + +```cpp +#include "include/jtest/jtest.hpp" + +int main(int argc, char** argv) +{ + TEST("Test1", []{ + jtest::check(2+2 == 4); + }); + + TEST("Test2", [] { + jtest::check(2+2 == 4); + }); + + TEST("Test3", [] + { + jtest::check(6+9 == 69); + }); + + jtest::run_tests(); +} +``` + +## Output + +![Should be sample output...](img.png) + +## License + +This software is written and developed by Josh O'Leary @ Redacted Software 2024. This work is dedicated to the public domain. + +## Contributing + +Send'em pull requests. + +## Special Thanks +* Maxine Hayes \ No newline at end of file diff --git a/img.png b/img.png new file mode 100644 index 0000000000000000000000000000000000000000..006af5bf861f48bee032611f759198d95eb5ee02 GIT binary patch literal 20664 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