diff --git a/openVulkanoCpp/Base/Utils.hpp b/openVulkanoCpp/Base/Utils.hpp index d670f63..ecfa490 100644 --- a/openVulkanoCpp/Base/Utils.hpp +++ b/openVulkanoCpp/Base/Utils.hpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -138,13 +139,11 @@ namespace OpenVulkano return result; } + [[deprecated]] static bool IsLittleEndian() - { //TODO update with cpp20 - const int value { 0x01 }; - const void * address { static_cast(&value) }; - const unsigned char * least_significant_address { static_cast(address) }; - - return (*least_significant_address == 0x01); + { + constexpr bool isLittleEndian = std::endian::native == std::endian::little; + return isLittleEndian; } static constexpr bool StartsWith(std::string_view str, std::string_view prefix) diff --git a/tests/Utils.cpp b/tests/Utils.cpp index 4419021..46078e4 100644 --- a/tests/Utils.cpp +++ b/tests/Utils.cpp @@ -100,11 +100,6 @@ TEST_CASE("OctToInt", "[Utils]") REQUIRE(Utils::OctToInt(" 1234 ") == 668); } -TEST_CASE("IsLittleEndian", "[Utils]") -{ - REQUIRE((Utils::IsLittleEndian() || true)); -} - TEST_CASE("StartsWith", "[Utils]") { REQUIRE(Utils::StartsWith("abcdef", "abc")); @@ -206,4 +201,62 @@ TEST_CASE("Split", "[Utils]") result = Utils::Split("a,", ','); REQUIRE(result.size() == 1); REQUIRE(result[0] == "a"); +} + +TEST_CASE("Split with non-null-terminated strings", "[Utils]") +{ + std::string_view input; + std::vector result; + + input = { "a,b,c|", 5 }; + result = Utils::Split(input, ','); + + REQUIRE(result.size() == 3); + REQUIRE(result[0] == "a"); + REQUIRE(result[1] == "b"); + REQUIRE(result[2] == "c"); + + input = { "one|two|three>", 13 }; + result = Utils::Split(input, '|'); + REQUIRE(result.size() == 3); + REQUIRE(result[0] == "one"); + REQUIRE(result[1] == "two"); + REQUIRE(result[2] == "three"); + + input = { "no separator here|", 17 }; + result = Utils::Split(input, ','); + REQUIRE(result.size() == 1); + REQUIRE(result[0] == "no separator here"); + + input = { "a,,b,,c|", 7 }; + result = Utils::Split(input, ','); + REQUIRE(result.size() == 3); + REQUIRE(result[0] == "a"); + REQUIRE(result[1] == "b"); + REQUIRE(result[2] == "c"); + + input = { ",a,b,c,|", 7 }; + result = Utils::Split(input, ','); + REQUIRE(result.size() == 3); + REQUIRE(result[0] == "a"); + REQUIRE(result[1] == "b"); + REQUIRE(result[2] == "c"); + + input = { ",,,,|", 4 }; + result = Utils::Split(input, ','); + REQUIRE(result.empty()); + + input = { "a|", 1 }; + result = Utils::Split(input, ','); + REQUIRE(result.size() == 1); + REQUIRE(result[0] == "a"); + + input = { "a,|", 2 }; + result = Utils::Split(input, ','); + REQUIRE(result.size() == 1); + REQUIRE(result[0] == "a"); + + input = { ",,,|", 3 }; + result = Utils::Split(input, ','); + REQUIRE(result.empty()); } \ No newline at end of file