From 1f9392e9f651cbeb2751dbfdb06caca4f55465da Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Sun, 1 Jan 2023 22:49:22 -0600 Subject: [PATCH] QFileInputStream and QFileBuffer test --- test/data | 2 +- .../scwx/qt/util/q_file_input_stream.test.cpp | 99 +++++++++++++++++++ test/test.cmake | 3 + 3 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 test/source/scwx/qt/util/q_file_input_stream.test.cpp diff --git a/test/data b/test/data index cf7b1e86..d3617667 160000 --- a/test/data +++ b/test/data @@ -1 +1 @@ -Subproject commit cf7b1e86a0755da801040fdf24961a1e9eb0821b +Subproject commit d361766755107c9fbb48114b83de31f1149a14fa diff --git a/test/source/scwx/qt/util/q_file_input_stream.test.cpp b/test/source/scwx/qt/util/q_file_input_stream.test.cpp new file mode 100644 index 00000000..3003de59 --- /dev/null +++ b/test/source/scwx/qt/util/q_file_input_stream.test.cpp @@ -0,0 +1,99 @@ +#include + +#include + +namespace scwx +{ +namespace qt +{ +namespace util +{ +static const std::string kLoremIpsum_ {std::string(SCWX_TEST_DATA_DIR) + + "/text/lorem-ipsum.txt"}; + +TEST(QFileInputStream, Get) +{ + QFileInputStream is {kLoremIpsum_}; + + EXPECT_EQ(is.is_open(), true); + EXPECT_EQ(is.good(), true); + + std::string s; + + for (size_t i = 0; i < 5; ++i) + { + int c = is.get(); + EXPECT_NE(c, EOF); + EXPECT_EQ(is.good(), true); + s.push_back(static_cast(c)); + } + + EXPECT_EQ(s, "Lorem"); +} + +TEST(QFileInputStream, GetLine) +{ + using namespace std::string_literals; + + QFileInputStream is {kLoremIpsum_}; + + EXPECT_EQ(is.is_open(), true); + EXPECT_EQ(is.good(), true); + + std::string s; + + s.resize(5u); + is.getline(s.data(), 5u); + + EXPECT_EQ(is.good(), false); + EXPECT_EQ(is.fail(), true); + EXPECT_EQ(s, "Lore\0"s); +} + +TEST(QFileInputStream, Read) +{ + QFileInputStream is {kLoremIpsum_}; + + EXPECT_EQ(is.is_open(), true); + EXPECT_EQ(is.good(), true); + + std::string s; + + s.resize(5u); + is.read(s.data(), 5u); + + EXPECT_EQ(is.good(), true); + EXPECT_EQ(s, "Lorem"); +} + +TEST(QFileInputStream, SeekOffset) +{ + QFileInputStream is {kLoremIpsum_}; + + EXPECT_EQ(is.is_open(), true); + EXPECT_EQ(is.good(), true); + + is.seekg(6, std::ios_base::beg); + + std::string s; + s.resize(5u); + is.read(s.data(), 5u); + EXPECT_EQ(is.good(), true); + EXPECT_EQ(s, "ipsum"); + + is.seekg(1, std::ios_base::cur); + + is.read(s.data(), 5u); + EXPECT_EQ(is.good(), true); + EXPECT_EQ(s, "dolor"); + + is.seekg(-8, std::ios_base::end); + + is.read(s.data(), 5u); + EXPECT_EQ(is.good(), true); + EXPECT_EQ(s, "labor"); +} + +} // namespace util +} // namespace qt +} // namespace scwx diff --git a/test/test.cmake b/test/test.cmake index fcae73d7..a0bc5d20 100644 --- a/test/test.cmake +++ b/test/test.cmake @@ -25,6 +25,7 @@ set(SRC_QT_MANAGER_TESTS source/scwx/qt/manager/settings_manager.test.cpp) set(SRC_QT_MODEL_TESTS source/scwx/qt/model/imgui_context_model.test.cpp) set(SRC_QT_SETTINGS_TESTS source/scwx/qt/settings/settings_container.test.cpp source/scwx/qt/settings/settings_variable.test.cpp) +set(SRC_QT_UTIL_TESTS source/scwx/qt/util/q_file_input_stream.test.cpp) set(SRC_UTIL_TESTS source/scwx/util/float.test.cpp source/scwx/util/rangebuf.test.cpp source/scwx/util/streams.test.cpp @@ -44,6 +45,7 @@ add_executable(wxtest ${SRC_MAIN} ${SRC_QT_MANAGER_TESTS} ${SRC_QT_MODEL_TESTS} ${SRC_QT_SETTINGS_TESTS} + ${SRC_QT_UTIL_TESTS} ${SRC_UTIL_TESTS} ${SRC_WSR88D_TESTS} ${CMAKE_FILES}) @@ -57,6 +59,7 @@ source_group("Source Files\\qt\\config" FILES ${SRC_QT_CONFIG_TESTS}) source_group("Source Files\\qt\\manager" FILES ${SRC_QT_MANAGER_TESTS}) source_group("Source Files\\qt\\model" FILES ${SRC_QT_MODEL_TESTS}) source_group("Source Files\\qt\\settings" FILES ${SRC_QT_SETTINGS_TESTS}) +source_group("Source Files\\qt\\util" FILES ${SRC_QT_UTIL_TESTS}) source_group("Source Files\\util" FILES ${SRC_UTIL_TESTS}) source_group("Source Files\\wsr88d" FILES ${SRC_WSR88D_TESTS})