From ef0a94fbaf0a700a55285964ed6dfab304ad2889 Mon Sep 17 00:00:00 2001 From: szdytom Date: Sun, 28 May 2023 12:45:39 +0800 Subject: [PATCH] setup xmake build system --- .gitignore | 4 ++++ test/cases/2d.cpp | 4 ++-- test/cases/provider.cpp | 4 ++-- test/main.cpp | 5 ++--- test/u.hpp | 28 +++++++++++++++++++++------- xmake.lua | 15 +++++++++++++++ 6 files changed, 46 insertions(+), 14 deletions(-) create mode 100644 xmake.lua diff --git a/.gitignore b/.gitignore index e9d9405..aec5fd4 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,7 @@ # Editors *.swp .vscode/ + +# Build +.xmake/ +build/ \ No newline at end of file diff --git a/test/cases/2d.cpp b/test/cases/2d.cpp index 4c1d4e1..365247b 100644 --- a/test/cases/2d.cpp +++ b/test/cases/2d.cpp @@ -1,11 +1,11 @@ #include "2d.hpp" -#include "u.hpp" +#include "test/u.hpp" #include namespace { -AddTestCase _("2d.hpp", [](TestCase &&t) { +AddTestCase _("2d.hpp", [](TestCase &t) { t.expectEq([]{ return cross({1, 2}, {4, 1}); }, -7); t.expectEq([]{ return dot({1, 2}, {4, 1}); }, 6); }); diff --git a/test/cases/provider.cpp b/test/cases/provider.cpp index 1212828..b04e562 100644 --- a/test/cases/provider.cpp +++ b/test/cases/provider.cpp @@ -1,8 +1,8 @@ -#include "u.hpp" +#include "test/u.hpp" namespace { -AddTestCase _("tester", [](TestCase &&t) { +AddTestCase _("tester", [](TestCase &t) { t.expectTrue([]{ return true; }); t.expectFalse([]{ return false; }); t.expectEq([]{ return 42; }, 42); diff --git a/test/main.cpp b/test/main.cpp index 790f508..f9e3dd9 100644 --- a/test/main.cpp +++ b/test/main.cpp @@ -1,6 +1,5 @@ -#include "u.hpp" +#include "test/u.hpp" int main() { - TestSuit::getInstance()->evalTestCases(); - return 0; + return TestSuit::getInstance()->evalTestCases(); } \ No newline at end of file diff --git a/test/u.hpp b/test/u.hpp index cd71a4d..51938a4 100644 --- a/test/u.hpp +++ b/test/u.hpp @@ -30,7 +30,7 @@ struct TestDefaultEps { class TestCase { public: - TestCase(const char* title): ok(0), fail(0), n(0) { + TestCase(const char* title): ok(0), fail(0), n(0), ended(false) { std::printf("Testing %s:\n", title); } @@ -72,7 +72,12 @@ public: } } - ~TestCase() { + void end() noexcept { + if (ended) { + return; + } + ended = true; + std::putchar('\n'); for (int i = 0; i < 20; ++i) { std::putchar('-'); @@ -94,6 +99,10 @@ public: } } + bool hasFail() const noexcept { + return fail > 0; + } + private: void putchar(char c) noexcept { n += 1; @@ -133,6 +142,7 @@ private: } int ok, fail, n; + bool ended; std::chrono::milliseconds time_used; }; @@ -148,23 +158,27 @@ public: return instance; } - void addTestCase(const char* title, std::function f) { + void addTestCase(const char* title, std::function f) { tc.emplace_back(title, f); } - void evalTestCases() { + int evalTestCases() { for (auto [title, func] : tc) { - func(TestCase(title)); + TestCase t(title); + func(t); + t.end(); std::putchar('\n'); + if (t.hasFail()) return 1; } tc.clear(); + return 0; } private: static inline TestSuit* instance = nullptr; TestSuit() {} - std::vector>> tc; + std::vector>> tc; }; class AddTestCase { @@ -173,7 +187,7 @@ class AddTestCase { AddTestCase(AddTestCase&&) = delete; public: - AddTestCase(const char* tilte, std::function func) { + AddTestCase(const char* tilte, std::function func) { TestSuit::getInstance()->addTestCase(tilte, func); } }; diff --git a/xmake.lua b/xmake.lua new file mode 100644 index 0000000..e2f3b4e --- /dev/null +++ b/xmake.lua @@ -0,0 +1,15 @@ +set_project("arras") +set_basename("arras") +set_version("0.0a0") +set_languages("c++17") +set_targetdir(".") + +target("test") + set_kind("binary") + set_warnings("allextra") + add_files("test/main.cpp") + add_files("test/cases/*.cpp") + add_includedirs(".") + set_optimize("none") + set_symbols("debug") + add_defines("DEBUG") \ No newline at end of file