From e6fc6093b215935459ccb171ccf98aec1e445adc Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Fri, 2 Aug 2024 16:10:07 -0500 Subject: [PATCH] added test --- support/3rd_party/src/utils/path.cpp | 152 +++++++++- .../3rd_party/test/src/utils/path_test.cpp | 266 +++++++++--------- 2 files changed, 278 insertions(+), 140 deletions(-) rename repertory/repertory_test/src/path_utils_test.cpp => support/3rd_party/test/src/utils/path_test.cpp (92%) diff --git a/support/3rd_party/src/utils/path.cpp b/support/3rd_party/src/utils/path.cpp index 0785043f..b057b7b2 100644 --- a/support/3rd_party/src/utils/path.cpp +++ b/support/3rd_party/src/utils/path.cpp @@ -19,20 +19,158 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#include "gtest/gtest.h" + +#include "utils/path.hpp" + +namespace repertory { +TEST(path_utils, combine) { + auto s = utils::path::combine(R"(\test\path)", {}); + +#if defined(_WIN32) + EXPECT_STREQ(R"(\test\path)", s.c_str()); +#else + EXPECT_STREQ("/test/path", s.c_str()); +#endif + + s = utils::path::combine(R"(\test)", {R"(\path)"}); +#if defined(_WIN32) + EXPECT_STREQ(R"(\test\path)", s.c_str()); +#else + EXPECT_STREQ("/test/path", s.c_str()); +#endif + + s = utils::path::combine(R"(\test)", {R"(\path)", R"(\again\)"}); +#if defined(_WIN32) + EXPECT_STREQ(R"(\test\path\again)", s.c_str()); +#else + EXPECT_STREQ("/test/path/again", s.c_str()); +#endif +} + +TEST(path_utils, create_api_path) { + auto s = utils::path::create_api_path(""); + EXPECT_STREQ("/", s.c_str()); + + s = utils::path::create_api_path(R"(\)"); + EXPECT_STREQ("/", s.c_str()); + + s = utils::path::create_api_path("/"); + EXPECT_STREQ("/", s.c_str()); + + s = utils::path::create_api_path("."); + EXPECT_STREQ("/", s.c_str()); + + s = utils::path::create_api_path(R"(\\)"); + EXPECT_STREQ("/", s.c_str()); + + s = utils::path::create_api_path("//"); + EXPECT_STREQ("/", s.c_str()); + + s = utils::path::create_api_path("/cow///moose/////dog/chicken"); + EXPECT_STREQ("/cow/moose/dog/chicken", s.c_str()); + + s = utils::path::create_api_path("\\cow\\\\\\moose\\\\\\\\dog\\chicken/"); + EXPECT_STREQ("/cow/moose/dog/chicken", s.c_str()); + + s = utils::path::create_api_path("/cow\\\\/moose\\\\/\\dog\\chicken\\"); + EXPECT_STREQ("/cow/moose/dog/chicken", s.c_str()); +} + +TEST(path_utils, finalize) { + auto s = utils::path::finalize(""); + EXPECT_STREQ("", s.c_str()); + + s = utils::path::finalize(R"(\)"); +#if defined(_WIN32) + EXPECT_STREQ(R"(\)", s.c_str()); +#else + EXPECT_STREQ("/", s.c_str()); +#endif + + s = utils::path::finalize("/"); +#if defined(_WIN32) + EXPECT_STREQ(R"(\)", s.c_str()); +#else + EXPECT_STREQ("/", s.c_str()); +#endif + + s = utils::path::finalize(R"(\\)"); +#if defined(_WIN32) + EXPECT_STREQ(R"(\)", s.c_str()); +#else + EXPECT_STREQ("/", s.c_str()); +#endif + + s = utils::path::finalize("//"); +#if defined(_WIN32) + EXPECT_STREQ(R"(\)", s.c_str()); +#else + EXPECT_STREQ("/", s.c_str()); +#endif + + s = utils::path::finalize("/cow///moose/////dog/chicken"); +#if defined(_WIN32) + EXPECT_STREQ(R"(\cow\moose\dog\chicken)", s.c_str()); +#else + EXPECT_STREQ("/cow/moose/dog/chicken", s.c_str()); +#endif + + s = utils::path::finalize("\\cow\\\\\\moose\\\\\\\\dog\\chicken/"); +#if defined(_WIN32) + EXPECT_STREQ(R"(\cow\moose\dog\chicken)", s.c_str()); +#else + EXPECT_STREQ("/cow/moose/dog/chicken", s.c_str()); +#endif + + s = utils::path::finalize("/cow\\\\/moose\\\\/\\dog\\chicken\\"); +#if defined(_WIN32) + EXPECT_STREQ(R"(\cow\moose\dog\chicken)", s.c_str()); +#else + EXPECT_STREQ("/cow/moose/dog/chicken", s.c_str()); +#endif +} +} // namespace repertory +Copyright<2018 - 2024> + + Permission is hereby granted, free of charge, + to any person obtaining a copy of this software and associated documentation + files(the "Software"), + to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish + , + distribute, sublicense, and / or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, + subject to the following conditions : + + The above copyright notice and this permission notice shall be included in + all copies + or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", + WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE.* / #include "utils/path.hpp" #include "utils/common.hpp" #include "utils/string.hpp" #include "utils/unix.hpp" -namespace { -static const std::string directory_seperator_str{ - repertory::utils::path::directory_seperator, -}; + namespace { + static const std::string directory_seperator_str{ + repertory::utils::path::directory_seperator, + }; -static const std::wstring directory_seperator_str_w{ - repertory::utils::path::directory_seperator_w, -}; + static const std::wstring directory_seperator_str_w{ + repertory::utils::path::directory_seperator_w, + }; } // namespace namespace repertory::utils::path { diff --git a/repertory/repertory_test/src/path_utils_test.cpp b/support/3rd_party/test/src/utils/path_test.cpp similarity index 92% rename from repertory/repertory_test/src/path_utils_test.cpp rename to support/3rd_party/test/src/utils/path_test.cpp index a18d73c4..52c3b068 100644 --- a/repertory/repertory_test/src/path_utils_test.cpp +++ b/support/3rd_party/test/src/utils/path_test.cpp @@ -1,133 +1,133 @@ -/* - Copyright <2018-2024> - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. -*/ -#include "test_common.hpp" - -#include "utils/path.hpp" - -namespace repertory { -TEST(path_utils, combine) { - auto s = utils::path::combine(R"(\test\path)", {}); - -#if defined(_WIN32) - EXPECT_STREQ(R"(\test\path)", s.c_str()); -#else - EXPECT_STREQ("/test/path", s.c_str()); -#endif - - s = utils::path::combine(R"(\test)", {R"(\path)"}); -#if defined(_WIN32) - EXPECT_STREQ(R"(\test\path)", s.c_str()); -#else - EXPECT_STREQ("/test/path", s.c_str()); -#endif - - s = utils::path::combine(R"(\test)", {R"(\path)", R"(\again\)"}); -#if defined(_WIN32) - EXPECT_STREQ(R"(\test\path\again)", s.c_str()); -#else - EXPECT_STREQ("/test/path/again", s.c_str()); -#endif -} - -TEST(path_utils, create_api_path) { - auto s = utils::path::create_api_path(""); - EXPECT_STREQ("/", s.c_str()); - - s = utils::path::create_api_path(R"(\)"); - EXPECT_STREQ("/", s.c_str()); - - s = utils::path::create_api_path("/"); - EXPECT_STREQ("/", s.c_str()); - - s = utils::path::create_api_path("."); - EXPECT_STREQ("/", s.c_str()); - - s = utils::path::create_api_path(R"(\\)"); - EXPECT_STREQ("/", s.c_str()); - - s = utils::path::create_api_path("//"); - EXPECT_STREQ("/", s.c_str()); - - s = utils::path::create_api_path("/cow///moose/////dog/chicken"); - EXPECT_STREQ("/cow/moose/dog/chicken", s.c_str()); - - s = utils::path::create_api_path("\\cow\\\\\\moose\\\\\\\\dog\\chicken/"); - EXPECT_STREQ("/cow/moose/dog/chicken", s.c_str()); - - s = utils::path::create_api_path("/cow\\\\/moose\\\\/\\dog\\chicken\\"); - EXPECT_STREQ("/cow/moose/dog/chicken", s.c_str()); -} - -TEST(path_utils, finalize) { - auto s = utils::path::finalize(""); - EXPECT_STREQ("", s.c_str()); - - s = utils::path::finalize(R"(\)"); -#if defined(_WIN32) - EXPECT_STREQ(R"(\)", s.c_str()); -#else - EXPECT_STREQ("/", s.c_str()); -#endif - - s = utils::path::finalize("/"); -#if defined(_WIN32) - EXPECT_STREQ(R"(\)", s.c_str()); -#else - EXPECT_STREQ("/", s.c_str()); -#endif - - s = utils::path::finalize(R"(\\)"); -#if defined(_WIN32) - EXPECT_STREQ(R"(\)", s.c_str()); -#else - EXPECT_STREQ("/", s.c_str()); -#endif - - s = utils::path::finalize("//"); -#if defined(_WIN32) - EXPECT_STREQ(R"(\)", s.c_str()); -#else - EXPECT_STREQ("/", s.c_str()); -#endif - - s = utils::path::finalize("/cow///moose/////dog/chicken"); -#if defined(_WIN32) - EXPECT_STREQ(R"(\cow\moose\dog\chicken)", s.c_str()); -#else - EXPECT_STREQ("/cow/moose/dog/chicken", s.c_str()); -#endif - - s = utils::path::finalize("\\cow\\\\\\moose\\\\\\\\dog\\chicken/"); -#if defined(_WIN32) - EXPECT_STREQ(R"(\cow\moose\dog\chicken)", s.c_str()); -#else - EXPECT_STREQ("/cow/moose/dog/chicken", s.c_str()); -#endif - - s = utils::path::finalize("/cow\\\\/moose\\\\/\\dog\\chicken\\"); -#if defined(_WIN32) - EXPECT_STREQ(R"(\cow\moose\dog\chicken)", s.c_str()); -#else - EXPECT_STREQ("/cow/moose/dog/chicken", s.c_str()); -#endif -} -} // namespace repertory +/* + Copyright <2018-2024> + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. +*/ +#include "gtest/gtest.h" + +#include "utils/path.hpp" + +namespace fifthgrid { +TEST(utils_path, combine) { + auto s = utils::path::combine(R"(\test\path)", {}); + +#if defined(_WIN32) + EXPECT_STREQ(R"(\test\path)", s.c_str()); +#else + EXPECT_STREQ("/test/path", s.c_str()); +#endif + + s = utils::path::combine(R"(\test)", {R"(\path)"}); +#if defined(_WIN32) + EXPECT_STREQ(R"(\test\path)", s.c_str()); +#else + EXPECT_STREQ("/test/path", s.c_str()); +#endif + + s = utils::path::combine(R"(\test)", {R"(\path)", R"(\again\)"}); +#if defined(_WIN32) + EXPECT_STREQ(R"(\test\path\again)", s.c_str()); +#else + EXPECT_STREQ("/test/path/again", s.c_str()); +#endif +} + +TEST(utils_path, create_api_path) { + auto s = utils::path::create_api_path(""); + EXPECT_STREQ("/", s.c_str()); + + s = utils::path::create_api_path(R"(\)"); + EXPECT_STREQ("/", s.c_str()); + + s = utils::path::create_api_path("/"); + EXPECT_STREQ("/", s.c_str()); + + s = utils::path::create_api_path("."); + EXPECT_STREQ("/", s.c_str()); + + s = utils::path::create_api_path(R"(\\)"); + EXPECT_STREQ("/", s.c_str()); + + s = utils::path::create_api_path("//"); + EXPECT_STREQ("/", s.c_str()); + + s = utils::path::create_api_path("/cow///moose/////dog/chicken"); + EXPECT_STREQ("/cow/moose/dog/chicken", s.c_str()); + + s = utils::path::create_api_path("\\cow\\\\\\moose\\\\\\\\dog\\chicken/"); + EXPECT_STREQ("/cow/moose/dog/chicken", s.c_str()); + + s = utils::path::create_api_path("/cow\\\\/moose\\\\/\\dog\\chicken\\"); + EXPECT_STREQ("/cow/moose/dog/chicken", s.c_str()); +} + +TEST(utils_path, finalize) { + auto s = utils::path::finalize(""); + EXPECT_STREQ("", s.c_str()); + + s = utils::path::finalize(R"(\)"); +#if defined(_WIN32) + EXPECT_STREQ(R"(\)", s.c_str()); +#else + EXPECT_STREQ("/", s.c_str()); +#endif + + s = utils::path::finalize("/"); +#if defined(_WIN32) + EXPECT_STREQ(R"(\)", s.c_str()); +#else + EXPECT_STREQ("/", s.c_str()); +#endif + + s = utils::path::finalize(R"(\\)"); +#if defined(_WIN32) + EXPECT_STREQ(R"(\)", s.c_str()); +#else + EXPECT_STREQ("/", s.c_str()); +#endif + + s = utils::path::finalize("//"); +#if defined(_WIN32) + EXPECT_STREQ(R"(\)", s.c_str()); +#else + EXPECT_STREQ("/", s.c_str()); +#endif + + s = utils::path::finalize("/cow///moose/////dog/chicken"); +#if defined(_WIN32) + EXPECT_STREQ(R"(\cow\moose\dog\chicken)", s.c_str()); +#else + EXPECT_STREQ("/cow/moose/dog/chicken", s.c_str()); +#endif + + s = utils::path::finalize("\\cow\\\\\\moose\\\\\\\\dog\\chicken/"); +#if defined(_WIN32) + EXPECT_STREQ(R"(\cow\moose\dog\chicken)", s.c_str()); +#else + EXPECT_STREQ("/cow/moose/dog/chicken", s.c_str()); +#endif + + s = utils::path::finalize("/cow\\\\/moose\\\\/\\dog\\chicken\\"); +#if defined(_WIN32) + EXPECT_STREQ(R"(\cow\moose\dog\chicken)", s.c_str()); +#else + EXPECT_STREQ("/cow/moose/dog/chicken", s.c_str()); +#endif +} +} // namespace fifthgrid