diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/base/CMakeLists.txt | 3 | ||||
| -rw-r--r-- | test/base/SubProcessTest.cpp | 4 | ||||
| -rw-r--r-- | test/base/platform/win/StreamConvertTest.cpp | 40 | ||||
| -rw-r--r-- | test/base/platform/win/StreamTest.cpp | 67 | ||||
| -rw-r--r-- | test/base/platform/win/Win32FileStreamTest.cpp | 38 |
5 files changed, 68 insertions, 84 deletions
diff --git a/test/base/CMakeLists.txt b/test/base/CMakeLists.txt index f0a7f272..731f268c 100644 --- a/test/base/CMakeLists.txt +++ b/test/base/CMakeLists.txt @@ -32,8 +32,7 @@ endif() if (WIN32) target_sources(CruBaseTest PRIVATE - platform/win/StreamConvertTest.cpp - platform/win/Win32FileStreamTest.cpp + platform/win/StreamTest.cpp ) endif() diff --git a/test/base/SubProcessTest.cpp b/test/base/SubProcessTest.cpp index f241c125..192fdfcb 100644 --- a/test/base/SubProcessTest.cpp +++ b/test/base/SubProcessTest.cpp @@ -5,10 +5,6 @@ using cru::SubProcess; TEST_CASE("SubProcess", "[subprocess]") { -#ifdef _WIN32 - SKIP("SubProcess is not implemented on Windows for now."); -#endif - SECTION("echo should work.") { SubProcess process = SubProcess::Create(CRU_TEST_HELPER_ECHO_LOCATION, {"abc"}); diff --git a/test/base/platform/win/StreamConvertTest.cpp b/test/base/platform/win/StreamConvertTest.cpp deleted file mode 100644 index b16aa7b6..00000000 --- a/test/base/platform/win/StreamConvertTest.cpp +++ /dev/null @@ -1,40 +0,0 @@ -#include "cru/base/StringUtil.h" -#include "cru/base/io/OpenFileFlag.h" -#include "cru/base/platform/win/Base.h" -#include "cru/base/platform/win/StreamConvert.h" -#include "cru/base/platform/win/Win32FileStream.h" - -#include <catch2/catch_test_macros.hpp> - -#include <cstdio> -#include <filesystem> - -TEST_CASE("StreamConvert FileStreamWork", "[stream]") { - using namespace cru; - using namespace cru::io; - using namespace cru::platform::win; - - auto temp_file_path = - (std::filesystem::temp_directory_path() / "cru_test_temp.XXXXXX") - .native(); - _wmktemp(temp_file_path.data()); - - std::string path = string::ToUtf8(temp_file_path); - - Win32FileStream file(path, OpenFileFlags::Write | OpenFileFlags::Create); - file.Write("abc", 3); - file.Close(); - - Win32FileStream file2(path, OpenFileFlags::Read); - IStream* com_stream = ConvertStreamToComStream(&file2); - LARGE_INTEGER position; - position.QuadPart = 0; - ThrowIfFailed(com_stream->Seek(position, SEEK_SET, nullptr)); - auto buffer = std::make_unique<char[]>(3); - ThrowIfFailed(com_stream->Read(buffer.get(), 3, nullptr)); - REQUIRE(std::string_view(buffer.get(), 3) == "abc"); - com_stream->Release(); - file2.Close(); - - std::filesystem::remove(temp_file_path); -} diff --git a/test/base/platform/win/StreamTest.cpp b/test/base/platform/win/StreamTest.cpp new file mode 100644 index 00000000..e1a6e4fe --- /dev/null +++ b/test/base/platform/win/StreamTest.cpp @@ -0,0 +1,67 @@ +#include "cru/base/StringUtil.h" +#include "cru/base/platform/win/Stream.h" + +#include <catch2/catch_test_macros.hpp> + +#include <cstdio> +#include <filesystem> + +TEST_CASE("StreamConvert FileStreamWork", "[stream]") { + using namespace cru; + using namespace cru::io; + using namespace cru::platform::win; + + auto temp_file_path = + (std::filesystem::temp_directory_path() / "cru_test_temp.XXXXXX") + .native(); + _wmktemp(temp_file_path.data()); + + std::string path = string::ToUtf8(temp_file_path); + + ComStream file(path, OpenFileFlags::Write | OpenFileFlags::Create); + file.Write("abc", 3); + file.Close(); + + ComStream file2(path, OpenFileFlags::Read); + IStream* com_stream = ToComStream(&file2); + LARGE_INTEGER position; + position.QuadPart = 0; + CheckHResult(com_stream->Seek(position, SEEK_SET, nullptr)); + auto buffer = std::make_unique<char[]>(3); + CheckHResult(com_stream->Read(buffer.get(), 3, nullptr)); + REQUIRE(std::string_view(buffer.get(), 3) == "abc"); + com_stream->Release(); + file2.Close(); + + std::filesystem::remove(temp_file_path); +} + +TEST_CASE("ComStream Work", "[stream]") { + using namespace cru; + using namespace cru::io; + using namespace cru::platform::win; + + auto temp_file_path = + (std::filesystem::temp_directory_path() / "cru_test_temp.XXXXXX") + .native(); + _wmktemp(temp_file_path.data()); + + std::string path = string::ToUtf8(temp_file_path); + + ComStream file(path, OpenFileFlags::Write | OpenFileFlags::Create); + auto write_count = file.Write("abc", 3); + REQUIRE(write_count == 3); + file.Close(); + + REQUIRE(std::filesystem::file_size(path) == 3); + + ComStream file2(path, OpenFileFlags::Read); + auto buffer = std::make_unique<std::byte[]>(3); + auto read_count = file2.Read(buffer.get(), 3); + REQUIRE(read_count == 3); + REQUIRE(std::string_view(reinterpret_cast<const char*>(buffer.get()), 3) == + "abc"); + file2.Close(); + + std::filesystem::remove(temp_file_path); +} diff --git a/test/base/platform/win/Win32FileStreamTest.cpp b/test/base/platform/win/Win32FileStreamTest.cpp deleted file mode 100644 index 798320f7..00000000 --- a/test/base/platform/win/Win32FileStreamTest.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include "cru/base/StringUtil.h" -#include "cru/base/io/OpenFileFlag.h" -#include "cru/base/platform/win/Win32FileStream.h" - -#include <catch2/catch_test_macros.hpp> - -#include <cstdio> -#include <filesystem> - -TEST_CASE("Win32FileStream Work", "[stream]") { - using namespace cru; - using namespace cru::io; - using namespace cru::platform::win; - - auto temp_file_path = - (std::filesystem::temp_directory_path() / "cru_test_temp.XXXXXX") - .native(); - _wmktemp(temp_file_path.data()); - - std::string path = string::ToUtf8(temp_file_path); - - Win32FileStream file(path, OpenFileFlags::Write | OpenFileFlags::Create); - auto write_count = file.Write("abc", 3); - REQUIRE(write_count == 3); - file.Close(); - - REQUIRE(std::filesystem::file_size(path) == 3); - - Win32FileStream file2(path, OpenFileFlags::Read); - auto buffer = std::make_unique<std::byte[]>(3); - auto read_count = file2.Read(buffer.get(), 3); - REQUIRE(read_count == 3); - REQUIRE(std::string_view(reinterpret_cast<const char*>(buffer.get()), 3) == - "abc"); - file2.Close(); - - std::filesystem::remove(temp_file_path); -} |
