- 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
134 lines
3.0 KiB
C++
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
|