Files
oak-editor/tests/gtest/core_stringutils_test.cpp
T
Mike-Solar f03b6b58ff style: reformat C/C++ sources and headers with clang-format
Run clang-format over all project C/C++ source and header files
(.c, .cpp, .cc, .h, .hpp, .hh, .m, .mm) under app/ and tests/.
Non-source files (svg, qm, qrc, etc.) were not touched.
2026-07-13 15:34:11 +08:00

67 lines
1.5 KiB
C++

#include <gtest/gtest.h>
#include <regex>
#include "olive/core/util/stringutils.h"
using namespace olive::core;
TEST(CoreStringUtils, Split)
{
auto result = StringUtils::split("a,b,c", ',');
ASSERT_EQ(result.size(), 3u);
EXPECT_EQ(result[0], "a");
EXPECT_EQ(result[1], "b");
EXPECT_EQ(result[2], "c");
}
TEST(CoreStringUtils, SplitRegex)
{
auto result =
StringUtils::split_regex("one:two;three", std::regex("(:)|(;)| "));
ASSERT_EQ(result.size(), 3u);
EXPECT_EQ(result[0], "one");
EXPECT_EQ(result[1], "two");
EXPECT_EQ(result[2], "three");
}
TEST(CoreStringUtils, ToInt)
{
bool ok = false;
EXPECT_EQ(StringUtils::to_int("42", &ok), 42);
EXPECT_TRUE(ok);
EXPECT_EQ(StringUtils::to_int("-7", 10, &ok), -7);
EXPECT_TRUE(ok);
EXPECT_EQ(StringUtils::to_int("ff", 16, &ok), 255);
EXPECT_TRUE(ok);
EXPECT_EQ(StringUtils::to_int("abc", &ok), 0);
EXPECT_FALSE(ok);
}
TEST(CoreStringUtils, ToStringLeftpad)
{
EXPECT_EQ(StringUtils::to_string_leftpad(5, 3), "005");
EXPECT_EQ(StringUtils::to_string_leftpad(123, 2), "123");
EXPECT_EQ(StringUtils::to_string_leftpad(7, 4, '*'), "***7");
}
TEST(CoreStringUtils, Format)
{
EXPECT_EQ(StringUtils::format("Hello %s %d", "world", 42),
"Hello world 42");
}
TEST(CoreStringUtils, Trim)
{
std::string s = " hello world ";
StringUtils::trim(s);
EXPECT_EQ(s, "hello world");
EXPECT_EQ(StringUtils::trimmed("\t\nvalue\t\n"), "value");
EXPECT_EQ(StringUtils::ltrimmed(" left"), "left");
EXPECT_EQ(StringUtils::rtrimmed("right "), "right");
}