aboutsummaryrefslogtreecommitdiff
path: root/src/context.cc
diff options
context:
space:
mode:
authorFuwn <[email protected]>2022-06-19 20:04:56 -0700
committerFuwn <[email protected]>2022-06-19 20:04:56 -0700
commit58688c8090afea95a92a147e26ad0392c1bfef14 (patch)
tree9a6b33f7d5692d3e1daacb1fa90b07098a0e1e47 /src/context.cc
downloadtael-0.1.0.tar.xz
tael-0.1.0.zip
feat: initial commitv0.1.0
Diffstat (limited to 'src/context.cc')
-rw-r--r--src/context.cc80
1 files changed, 80 insertions, 0 deletions
diff --git a/src/context.cc b/src/context.cc
new file mode 100644
index 0000000..f722d48
--- /dev/null
+++ b/src/context.cc
@@ -0,0 +1,80 @@
+/*
+ * This file is part of Tatl <https://github.com/Fuwn/tatl>.
+ * Copyright (C) 2022-2022 Fuwn <[email protected]>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) 2022-2022 Fuwn <[email protected]>
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+#include <iostream>
+
+#include <tael/context.hh>
+
+#include <tatl/context/set.h>
+
+namespace tael {
+
+context::context(const std::string &tag, bool mute) {
+ tatl_new(&this->inner_context);
+ tatl_context_set_mute(&this->inner_context, mute);
+
+ if (!tag.empty()) {
+ tatl_context_set_tag(&this->inner_context, tag.c_str());
+ }
+}
+
+context::~context() { tatl_destroy(this->inner_context); }
+
+std::size_t context::total() const { return this->inner_context._total; }
+
+std::size_t context::passed() const { return this->inner_context._passed; }
+
+std::size_t context::failed() const { return this->inner_context._failed; }
+
+const char *context::tag() const { return this->inner_context._tag; }
+
+bool context::mute() const { return this->inner_context._mute; }
+
+int context::exit_code() const { return this->inner_context._exit_code; }
+
+void context::set_mute(bool mute) { this->inner_context._mute = mute; }
+
+void context::set_tag(const std::string &tag) {
+ tatl_context_set_tag(&this->inner_context, tag.c_str());
+}
+
+void context::summary() { tatl_summary(this->inner_context); }
+
+void context::add(const char *const tag, int (*test)()) {
+ tatl_add(&this->inner_context, tag, test);
+}
+
+void context::run() { tatl_run(&this->inner_context); }
+
+void context::finish() {
+ this->run();
+
+ if (!this->inner_context._mute) {
+ std::cout << '\n';
+ }
+
+ this->summary();
+
+ if (!this->inner_context._mute) {
+ std::cout << '\n';
+ }
+}
+
+} // namespace tael