初始化内容

This commit is contained in:
2026-09-16 14:07:40 +08:00
parent 6934b390bf
commit 4f643c1e7c
18350 changed files with 6088489 additions and 305 deletions
+191
View File
@@ -0,0 +1,191 @@
/**
* @file test_io.cpp
* @brief io 模块单元测试(Json
*
*
* @version 1.0
* @author CodeBuddy
* @date 26-09-03
*
* @note
*/
#include <gtest/gtest.h>
#include "io/dl_json.h"
#include "io/dl_file.h"
#include "memory/dl_code_cvt.h"
#include "render/dl_factory.h"
TEST(JsonTest, ParseArray)
{
auto j = dl::Json::ParseString("[1,2,3]");
ASSERT_TRUE(j.is_array());
ASSERT_EQ(j.size(), 3u);
EXPECT_EQ(j[0], 1);
EXPECT_EQ(j[1], 2);
EXPECT_EQ(j[2], 3);
}
TEST(JsonTest, ParseObject)
{
auto j = dl::Json::ParseString(R"({"a": 123, "b": "hello"})");
ASSERT_TRUE(j.is_object());
EXPECT_EQ(j["a"], 123);
EXPECT_EQ(j["b"], "hello");
}
TEST(JsonTest, ParseNested)
{
auto j = dl::Json::ParseString(R"({"outer": {"inner": [true, false, null]}})");
ASSERT_TRUE(j.is_object());
EXPECT_TRUE(j["outer"]["inner"][0]);
EXPECT_FALSE(j["outer"]["inner"][1]);
EXPECT_TRUE(j["outer"]["inner"][2].is_null());
}
TEST(JsonTest, Get)
{
auto j = dl::Json::ParseString(R"({"key": 456})");
int v = 0;
EXPECT_TRUE(dl::Json::Get(j, "key", v));
EXPECT_EQ(v, 456);
}
TEST(JsonTest, GetMissing)
{
auto j = dl::Json::ParseString(R"({"key": 456})");
int v = 0;
EXPECT_FALSE(dl::Json::Get(j, "nokey", v));
}
TEST(JsonTest, ParseInvalid)
{
auto j = dl::Json::ParseString("{invalid json");
EXPECT_TRUE(j.is_null());
}
TEST(JsonTest, SaveFileDump)
{
json j = dl::Json::ParseString(R"({"a": 1, "b": "hello"})");
// Dump 成字符串
std::string dump = dl::Json::Dump(j);
EXPECT_NE(dump.find("\"a\""), std::string::npos);
EXPECT_NE(dump.find("1"), std::string::npos);
// SaveFile + ParseFile 往返
std::string path = dl::g_factory->GetPathTemp() + "dl_json_save_test.json";
ASSERT_TRUE(dl::Json::SaveFile(j, path));
json j2 = dl::Json::ParseFile(path);
EXPECT_EQ(j2["a"], 1);
EXPECT_EQ(j2["b"], "hello");
dl::File::Delete(path);
}
//------------------------------File------------------------------
TEST(FileTest, GetExtension)
{
EXPECT_EQ(dl::File::GetExtension("a/b/c.txt"), "txt");
EXPECT_EQ(dl::File::GetExtension("a/b/c.txt", true), ".txt");
EXPECT_EQ(dl::File::GetExtension("a/b/c"), "");
}
TEST(FileTest, GetFileName)
{
EXPECT_EQ(dl::File::GetFileName("a/b/c.txt"), "c.txt");
EXPECT_EQ(dl::File::GetFileName("a/b/"), "");
}
TEST(FileTest, GetStem)
{
EXPECT_EQ(dl::File::GetStem("a/b/c.txt"), "c");
}
TEST(FileTest, GetFilePath)
{
EXPECT_EQ(dl::File::GetFilePath("a/b/c.txt"), "a/b/");
EXPECT_EQ(dl::File::GetFilePath("a/b/"), "a/b/");
EXPECT_EQ(dl::File::GetFilePath("c.txt"), "");
}
TEST(FileTest, GetFolderName)
{
EXPECT_EQ(dl::File::GetFolderName("a/b/c.txt"), "b");
}
//------------------------------CodeCvt------------------------------
TEST(CodeCvtTest, Utf8Check)
{
EXPECT_EQ(dl::CodeCvt::Utf8::Check("hello"), 1); // ascii
EXPECT_EQ(dl::CodeCvt::Utf8::Check("你好"), 2); // utf-8
}
TEST(CodeCvtTest, Utf8Sub)
{
std::string s = "你好世界"; // 每个字 3 字节,共 12 字节
EXPECT_EQ(dl::CodeCvt::Utf8::Sub(s, 0), 0u);
EXPECT_EQ(dl::CodeCvt::Utf8::Sub(s, 4), 3u); // 截断到"你"3 字节边界)
EXPECT_EQ(dl::CodeCvt::Utf8::Sub(s, 12), 12u); // 足够时返回全部
}
TEST(CodeCvtTest, WideCharRoundtrip)
{
std::string u8 = "hello 你好";
std::wstring wc = dl::CodeCvt::Utf8ToWideChar(u8);
std::string back = dl::CodeCvt::WideCharToUtf8(wc);
EXPECT_EQ(back, u8);
}
TEST(CodeCvtTest, Utf32Roundtrip)
{
std::string u8 = "hello 你好";
std::u32string u32 = dl::CodeCvt::Utf8ToUtf32(u8);
std::string back = dl::CodeCvt::Utf32ToUtf8(u32);
EXPECT_EQ(back, u8);
}
//------------------------------File 文件操作------------------------------
TEST(FileTest, CreateReadDelete)
{
std::string dir = dl::g_factory->GetPathTemp() + "dl_file_test/";
dl::File::Delete(dir, true);
ASSERT_TRUE(dl::File::CreateFolder(dir));
EXPECT_TRUE(dl::File::IsExist(dir));
std::string file = dir + "a.txt";
ASSERT_TRUE(dl::File::SaveString("hello", file));
EXPECT_TRUE(dl::File::IsExist(file));
EXPECT_FALSE(dl::File::IsExist(dir + "none.txt"));
EXPECT_EQ(dl::File::GetString(file), "hello");
EXPECT_TRUE(dl::File::Delete(file));
EXPECT_FALSE(dl::File::IsExist(file));
dl::File::Delete(dir, true);
}
TEST(FileTest, CopyRename)
{
std::string dir = dl::g_factory->GetPathTemp() + "dl_file_test/";
dl::File::Delete(dir, true);
ASSERT_TRUE(dl::File::CreateFolder(dir));
std::string src = dir + "src.txt";
std::string dst = dir + "dst.txt";
ASSERT_TRUE(dl::File::SaveString("data", src));
EXPECT_TRUE(dl::File::Copy(src, dst));
EXPECT_TRUE(dl::File::IsExist(dst));
EXPECT_EQ(dl::File::GetString(dst), "data");
std::string dst2 = dir + "dst2.txt";
EXPECT_TRUE(dl::File::Rename(dst, dst2));
EXPECT_TRUE(dl::File::IsExist(dst2));
EXPECT_FALSE(dl::File::IsExist(dst));
dl::File::Delete(dir, true);
}