aboutsummaryrefslogtreecommitdiff
path: root/ttwhy
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2026-06-20 09:29:57 +0200
committerFelix Morgner <felix.morgner@gmail.com>2026-06-20 09:29:57 +0200
commitc5f8cd91186adbe9c68835675a019449cc275c6d (patch)
tree6fc208c628689a5a9080bc1a84f2337a3d023787 /ttwhy
parent90fa52db708c42d9707581156b957da99987bd1c (diff)
downloadttwhy-c5f8cd91186adbe9c68835675a019449cc275c6d.tar.xz
ttwhy-c5f8cd91186adbe9c68835675a019449cc275c6d.zip
lib: add basic test setup
Diffstat (limited to 'ttwhy')
-rw-r--r--ttwhy/scanners/ansi.tests.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/ttwhy/scanners/ansi.tests.cpp b/ttwhy/scanners/ansi.tests.cpp
new file mode 100644
index 0000000..6fdc8af
--- /dev/null
+++ b/ttwhy/scanners/ansi.tests.cpp
@@ -0,0 +1,38 @@
+#include <catch2/catch_test_macros.hpp>
+
+#include <string_view> // IWYU pragma: keep
+#include <variant>
+#include <vector>
+
+import ttwhy.scanners;
+
+using namespace std::string_view_literals;
+
+[[nodiscard]] constexpr auto static is_character(ttwhy::scanners::input_event & event, char expected) -> bool
+{
+ auto const * data = std::get_if<ttwhy::scanners::character_event>(&event);
+ return data != nullptr && data->value == expected;
+}
+
+SCENARIO("The ANSI scanner processes printable ASCII and standard C0 control characters", "[scanner][ansi]")
+{
+ GIVEN("An initialized scanner and event sink")
+ {
+ auto queue = std::vector<ttwhy::scanners::input_event>{};
+ auto sink = [&queue](auto const & event) {
+ queue.push_back(event);
+ };
+ auto scanner = ttwhy::scanners::ansi{sink};
+
+ WHEN("Processing a standard printable character")
+ {
+ scanner.process("A");
+
+ THEN("It yields a single character event")
+ {
+ REQUIRE(queue.size() == 1);
+ CHECK(is_character(queue.at(0), 'A'));
+ }
+ }
+ }
+}