diff options
Diffstat (limited to 'ttwhy/scanners/terminal_scanner.tests.cpp')
| -rw-r--r-- | ttwhy/scanners/terminal_scanner.tests.cpp | 66 |
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)); + } + } } } |
