Files
XCEngine/tests/containers/test_string.cpp
ssdfasd d575532966 docs: update TEST_SPEC.md and README.md to reflect new directory structure
- TEST_SPEC.md: Updated test directory structure to reflect Core/Asset,
  Core/IO, and Resources/<Type> subdirectories
- TEST_SPEC.md: Updated module names and test counts (852 total)
- TEST_SPEC.md: Updated build commands for new Resources subdirectories
- README.md: Updated engine structure with Core/Asset/ and Core/IO/
- README.md: Updated Resources section with layered architecture
- README.md: Updated test coverage table with accurate counts
2026-03-24 16:14:05 +08:00

134 lines
3.0 KiB
C++

#include <gtest/gtest.h>
#include <XCEngine/Core/Containers/String.h>
using namespace XCEngine::Containers;
namespace {
TEST(Containers_String, DefaultConstructor_EmptyString) {
String s;
EXPECT_EQ(s.Length(), 0u);
EXPECT_STREQ(s.CStr(), "");
EXPECT_TRUE(s.Empty());
}
TEST(Containers_String, ConstructorFromCString) {
String s("Hello");
EXPECT_EQ(s.Length(), 5u);
EXPECT_STREQ(s.CStr(), "Hello");
}
TEST(Containers_String, CopyConstructor) {
String s1("Hello");
String s2(s1);
EXPECT_EQ(s2.Length(), 5u);
EXPECT_STREQ(s2.CStr(), "Hello");
}
TEST(Containers_String, MoveConstructor) {
String s1("Hello");
String s2(std::move(s1));
EXPECT_EQ(s2.Length(), 5u);
EXPECT_STREQ(s2.CStr(), "Hello");
}
TEST(Containers_String, CopyAssignment) {
String s1("Hello");
String s2;
s2 = s1;
EXPECT_EQ(s2.Length(), 5u);
EXPECT_STREQ(s2.CStr(), "Hello");
}
TEST(Containers_String, MoveAssignment) {
String s1("Hello");
String s2;
s2 = std::move(s1);
EXPECT_EQ(s2.Length(), 5u);
EXPECT_STREQ(s2.CStr(), "Hello");
}
TEST(Containers_String, OperatorPlusEqual_String) {
String s("Hello");
s += String(" World");
EXPECT_EQ(s.Length(), 11u);
EXPECT_STREQ(s.CStr(), "Hello World");
}
TEST(Containers_String, OperatorPlusEqual_CString) {
String s("Hello");
s += " World";
EXPECT_EQ(s.Length(), 11u);
EXPECT_STREQ(s.CStr(), "Hello World");
}
TEST(Containers_String, Substring) {
String s("Hello World");
String sub = s.Substring(0, 5);
EXPECT_STREQ(sub.CStr(), "Hello");
String sub2 = s.Substring(6);
EXPECT_STREQ(sub2.CStr(), "World");
String sub3 = s.Substring(6, 3);
EXPECT_STREQ(sub3.CStr(), "Wor");
}
TEST(Containers_String, Trim) {
String s(" Hello ");
String trimmed = s.Trim();
EXPECT_STREQ(trimmed.CStr(), "Hello");
}
TEST(Containers_String, ToLower) {
String s("HELLO");
String lower = s.ToLower();
EXPECT_STREQ(lower.CStr(), "hello");
}
TEST(Containers_String, ToUpper) {
String s("hello");
String upper = s.ToUpper();
EXPECT_STREQ(upper.CStr(), "HELLO");
}
TEST(Containers_String, Find_Found) {
String s("Hello World");
EXPECT_EQ(s.Find("World"), 6u);
EXPECT_EQ(s.Find("Hello"), 0u);
}
TEST(Containers_String, Find_NotFound) {
String s("Hello");
EXPECT_EQ(s.Find("World"), String::npos);
}
TEST(Containers_String, StartsWith) {
String s("Hello World");
EXPECT_TRUE(s.StartsWith("Hello"));
EXPECT_TRUE(s.StartsWith(String("Hello")));
EXPECT_FALSE(s.StartsWith("World"));
}
TEST(Containers_String, EndsWith) {
String s("Hello World");
EXPECT_TRUE(s.EndsWith("World"));
EXPECT_TRUE(s.EndsWith(String("World")));
EXPECT_FALSE(s.EndsWith("Hello"));
}
TEST(Containers_String, Clear) {
String s("Hello");
s.Clear();
EXPECT_EQ(s.Length(), 0u);
EXPECT_TRUE(s.Empty());
}
TEST(Containers_String, Reserve) {
String s("Hi");
s.Reserve(100);
EXPECT_GE(s.Capacity(), 100u);
}
} // namespace