From a7c606c8ac8951760868fd3dce2e694631c7bb4f Mon Sep 17 00:00:00 2001 From: Elad <18193363+elad335@users.noreply.github.com> Date: Wed, 15 Apr 2026 21:35:14 +0300 Subject: [PATCH] sys_fs: Add unit tests --- rpcs3/CMakeLists.txt | 1 + rpcs3/Emu/Cell/lv2/sys_fs.h | 1 + rpcs3/tests/rpcs3_test.vcxproj | 1 + rpcs3/tests/test_sys_fs.cpp | 51 ++++++++++++++++++++++++++++++++++ 4 files changed, 54 insertions(+) create mode 100644 rpcs3/tests/test_sys_fs.cpp diff --git a/rpcs3/CMakeLists.txt b/rpcs3/CMakeLists.txt index cfc2495f15..ba65a16eaf 100644 --- a/rpcs3/CMakeLists.txt +++ b/rpcs3/CMakeLists.txt @@ -187,6 +187,7 @@ if(BUILD_RPCS3_TESTS) tests/test_tuple.cpp tests/test_simple_array.cpp tests/test_address_range.cpp + tests/test_sys_fs.cpp tests/test_rsx_cfg.cpp tests/test_rsx_fp_asm.cpp tests/test_dmux_pamf.cpp diff --git a/rpcs3/Emu/Cell/lv2/sys_fs.h b/rpcs3/Emu/Cell/lv2/sys_fs.h index 68ecf1e287..c78ad7b5a2 100644 --- a/rpcs3/Emu/Cell/lv2/sys_fs.h +++ b/rpcs3/Emu/Cell/lv2/sys_fs.h @@ -4,6 +4,7 @@ #include "Emu/Cell/ErrorCodes.h" #include "Utilities/File.h" #include "Utilities/StrUtil.h" +#include "Utilities/mutex.h" #include diff --git a/rpcs3/tests/rpcs3_test.vcxproj b/rpcs3/tests/rpcs3_test.vcxproj index fb9d0d21d4..a60b150469 100644 --- a/rpcs3/tests/rpcs3_test.vcxproj +++ b/rpcs3/tests/rpcs3_test.vcxproj @@ -100,6 +100,7 @@ + diff --git a/rpcs3/tests/test_sys_fs.cpp b/rpcs3/tests/test_sys_fs.cpp new file mode 100644 index 0000000000..66db10a554 --- /dev/null +++ b/rpcs3/tests/test_sys_fs.cpp @@ -0,0 +1,51 @@ +#include + +#define private public +#include "Emu/Cell/lv2/sys_fs.h" +#undef private + +using namespace utils; + +namespace utils +{ + TEST(cellFs, PathRoot) + { + std::string path = "/."; + auto [root, trail] = lv2_fs_object::get_path_root_and_trail(path); + EXPECT_TRUE(root.empty()); + EXPECT_TRUE(trail.empty()); + + path = "/./././dev_bdvd/./"; + std::tie(root, trail) = lv2_fs_object::get_path_root_and_trail(path); + EXPECT_EQ(root, "dev_bdvd"sv); + EXPECT_TRUE(trail.empty()); + + path = "/../"; + std::tie(root, trail) = lv2_fs_object::get_path_root_and_trail(path); + EXPECT_TRUE(root.empty()); + EXPECT_EQ(trail, "ENOENT"sv); + } + + TEST(cellFs, PathSimplify) + { + std::string path = "/dev_hdd0/"; + auto [root, trail] = lv2_fs_object::get_path_root_and_trail(path); + EXPECT_EQ(root, "dev_hdd0"sv); + EXPECT_TRUE(trail.empty()); + + path = "/dev_hdd0/game"; + std::tie(root, trail) = lv2_fs_object::get_path_root_and_trail(path); + EXPECT_EQ(root, "dev_hdd0"sv); + EXPECT_EQ(trail, "game"sv); + + path = "/dev_hdd0/game/NP1234567"; + std::tie(root, trail) = lv2_fs_object::get_path_root_and_trail(path); + EXPECT_EQ(root, "dev_hdd0"sv); + EXPECT_EQ(trail, "game/NP1234567"sv); + + path = "/dev_hdd0/game/NP1234567/../../NP1234568/."; + std::tie(root, trail) = lv2_fs_object::get_path_root_and_trail(path); + EXPECT_EQ(root, "dev_hdd0"sv); + EXPECT_EQ(trail, "NP1234568"sv); + } +}