aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--test/unit_tests/shared/console.hpp30
-rw-r--r--test/unit_tests/worker/worker.cpp4
2 files changed, 19 insertions, 15 deletions
diff --git a/test/unit_tests/shared/console.hpp b/test/unit_tests/shared/console.hpp
index 274c232..cd9cccf 100644
--- a/test/unit_tests/shared/console.hpp
+++ b/test/unit_tests/shared/console.hpp
@@ -14,8 +14,10 @@
#include <windows.h>
#include <cstddef>
+#include <cstdint>
#include <cstring>
#include <sstream>
+#include <stdexcept>
#include <string>
#include <utility>
#include <vector>
@@ -30,13 +32,13 @@ public:
Buffer(winapi::Handle&& handle) : m_handle(std::move(handle)), m_info(get_info(m_handle)) {}
- std::size_t get_columns() const { return m_info.dwSize.X; }
+ int16_t get_columns() const { return m_info.dwSize.X; }
- std::size_t get_lines() const { return m_info.dwSize.Y; }
+ int16_t get_lines() const { return m_info.dwSize.Y; }
- std::size_t get_cursor_column() const { return m_info.dwCursorPosition.X; }
+ int16_t get_cursor_column() const { return m_info.dwCursorPosition.X; }
- std::size_t get_cursor_line() const { return m_info.dwCursorPosition.Y; }
+ int16_t get_cursor_line() const { return m_info.dwCursorPosition.Y; }
void update() { m_info = get_info(m_handle); }
@@ -65,17 +67,17 @@ public:
* I also don't know how it interacts with tab characters '\t', encodings,
* etc. It sucks, don't use it.
*/
- std::vector<std::string> read_lines(int top, int bottom) const {
- if (top < 0) {
+ std::vector<std::string> read_lines(int16_t top, int16_t bottom) const {
+ if (top < 0)
top = get_cursor_line() + top;
- }
- if (bottom < 0) {
+ if (bottom < 0)
bottom = get_cursor_line() + bottom;
- }
+ if (top < 0 || bottom < 0)
+ throw std::range_error{"Invalid console line"};
if (top > bottom) {
std::swap(top, bottom);
}
- int numof_lines = bottom - top + 1;
+ int16_t numof_lines = bottom - top + 1;
COORD buffer_size;
buffer_size.X = get_columns();
@@ -111,13 +113,15 @@ public:
return result;
}
- std::vector<std::string> read_last_lines(int numof_lines = 1) const {
- return read_lines(-numof_lines, -1);
+ std::vector<std::string> read_last_lines(std::size_t numof_lines = 1) const {
+ if (numof_lines < 1 || numof_lines > INT16_MAX)
+ throw std::range_error{"Invalid number of lines"};
+ return read_lines(-static_cast<int16_t>(numof_lines), -1);
}
std::string read_last_line() const { return read_lines(-1, -1)[0]; }
- std::string read_line(int n) const { return read_lines(n, n)[0]; }
+ std::string read_line(int16_t n) const { return read_lines(n, n)[0]; }
private:
static Info get_info(const winapi::Handle& handle) {
diff --git a/test/unit_tests/worker/worker.cpp b/test/unit_tests/worker/worker.cpp
index 9e48deb..093bba8 100644
--- a/test/unit_tests/worker/worker.cpp
+++ b/test/unit_tests/worker/worker.cpp
@@ -43,7 +43,7 @@ bool is_window_visible() {
winapi::Handle write_to(winapi::Handle dest, const std::string& msg) {
try {
dest.write(msg + "\r\n");
- } catch (const std::exception& e) {
+ } catch (const std::exception&) {
return winapi::Handle{};
}
return dest;
@@ -111,7 +111,7 @@ int loop() {
} // namespace
-int main(int argc, char* argv[]) {
+int main() {
int ec = loop();
std::this_thread::sleep_for(std::chrono::milliseconds{1000});
return ec;