aboutsummaryrefslogtreecommitdiff
path: root/ttwhy/scanners/terminal_scanner.tests.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ttwhy/scanners/terminal_scanner.tests.cpp')
-rw-r--r--ttwhy/scanners/terminal_scanner.tests.cpp66
1 files changed, 64 insertions, 2 deletions
diff --git a/ttwhy/scanners/terminal_scanner.tests.cpp b/ttwhy/scanners/terminal_scanner.tests.cpp
index 6fdc8af..f4ea6ad 100644
--- a/ttwhy/scanners/terminal_scanner.tests.cpp
+++ b/ttwhy/scanners/terminal_scanner.tests.cpp
@@ -1,6 +1,6 @@
#include <catch2/catch_test_macros.hpp>
-#include <string_view> // IWYU pragma: keep
+#include <string_view>
#include <variant>
#include <vector>
@@ -14,6 +14,13 @@ using namespace std::string_view_literals;
return data != nullptr && data->value == expected;
}
+[[nodiscard]] constexpr auto static is_control(ttwhy::scanners::input_event & event,
+ ttwhy::scanners::control_key expected) -> bool
+{
+ auto const * data = std::get_if<ttwhy::scanners::control_event>(&event);
+ return data != nullptr && data->key == expected;
+}
+
SCENARIO("The ANSI scanner processes printable ASCII and standard C0 control characters", "[scanner][ansi]")
{
GIVEN("An initialized scanner and event sink")
@@ -26,7 +33,7 @@ SCENARIO("The ANSI scanner processes printable ASCII and standard C0 control cha
WHEN("Processing a standard printable character")
{
- scanner.process("A");
+ scanner.process("A"sv);
THEN("It yields a single character event")
{
@@ -34,5 +41,60 @@ SCENARIO("The ANSI scanner processes printable ASCII and standard C0 control cha
CHECK(is_character(queue.at(0), 'A'));
}
}
+
+ WHEN("Processing a BS byte (\\x08)")
+ {
+ scanner.process("\x08"sv);
+
+ THEN("It yields a backspace control event")
+ {
+ REQUIRE(queue.size() == 1);
+ CHECK(is_control(queue.at(0), ttwhy::scanners::control_key::backspace));
+ }
+ }
+
+ WHEN("Processing a DEL byte (\\x7f as BS)")
+ {
+ scanner.process("\x7f"sv);
+
+ THEN("It yields a backspace control event")
+ {
+ REQUIRE(queue.size() == 1);
+ CHECK(is_control(queue.at(0), ttwhy::scanners::control_key::backspace));
+ }
+ }
+
+ WHEN("Processing a TAB byte")
+ {
+ scanner.process("\x09"sv);
+
+ THEN("It yields a tab control event")
+ {
+ REQUIRE(queue.size() == 1);
+ CHECK(is_control(queue.at(0), ttwhy::scanners::control_key::tab));
+ }
+ }
+
+ WHEN("Processing an LF byte")
+ {
+ scanner.process("\x0a"sv);
+
+ THEN("It yields an enter control event")
+ {
+ REQUIRE(queue.size() == 1);
+ CHECK(is_control(queue.at(0), ttwhy::scanners::control_key::enter));
+ }
+ }
+
+ WHEN("Processing an CR byte")
+ {
+ scanner.process("\x0d"sv);
+
+ THEN("It yields an enter control event")
+ {
+ REQUIRE(queue.size() == 1);
+ CHECK(is_control(queue.at(0), ttwhy::scanners::control_key::enter));
+ }
+ }
}
}