dl
dl_test.h
浏览该文件的文档.
1
12#pragma once
13
14#include "misc/dl_tester.h"
15#include "io/dl_json.h"
16#include "base/dl_string.h"
17#include "io/dl_http.h"
18#include "io/dl_file.h"
19#include "io/dl_file_xml.h"
20#include "io/dl_file_ini.h"
21#include "render/dl_image.h"
22#include "memory/dl_memory.h"
23
24namespace dl
25{
26#define DL_TESTER_CHECK(cond) if(!(cond))return false
27
28
30{
31 Tester t{ "json测试" };
32 t.AddTest("Parse", [](size_t i, float)
33 {
34 json j = Json::ParseString("[1,2,3]");
35 std::vector<int> vec = j;
36 return vec.size() == 3 && vec[0] == 1 && vec[1] == 2 && vec[2] == 3;
37 });
38 t.AddTest("Dump", [](size_t i, float)
39 {
40 json j = Json::ParseString("[1,2,3]");
41 return j.dump() == "[1,2,3]";
42 });
43 t.AddTest("DumpUtf8", [](size_t i, float)
44 {
45 std::string str = R"({ "键": 123 })";
46 //str = CodeCvt::Utf8ToMultiByte(str);
47 json j = Json::ParseString(str);
48 int v;
49 if (!Json::Get(j, "键", v))
50 return false;
51 return v == 123;
52 });
53 t.PrintAll();
54 return t;
55}
56
58{
59 Tester t{ "字符串测试" };
60 t.AddTest("TestSplit", [](size_t i, float)
61 {
62 std::string str0 = "0,1,2,,3";
63 std::string str1 = ",0,1,2,,3,";
64 std::string str2 = ",,0,1,2,,3,";
65
66 using namespace std::literals;
67 {
68 std::vector<std::string_view> vec0 = String::SplitView(str0, ","sv);
69 std::vector<std::string_view> vec1 = String::SplitView(str1, ","sv);
70 std::vector<std::string_view> vec2 = String::SplitView(str2, ","sv);
71
72 DL_TESTER_CHECK(vec0[0] == "0" && vec0[1] == "1" && vec0[2] == "2" && vec0[3] == "" && vec0[4] == "3");
73 DL_TESTER_CHECK(vec1[0] == "" && vec1[1] == "0" && vec1[2] == "1" && vec1[3] == "2" && vec1[4] == ""
74 && vec1[5] == "3" && vec1[6] == "");
75 DL_TESTER_CHECK(vec2[0] == "" && vec2[1] == "" && vec2[2] == "0" && vec2[3] == "1" && vec2[4] == "2"
76 && vec2[5] == "" && vec2[6] == "3" && vec2[7] == "");
77 }
78
79
80 {
81 std::vector<std::string_view> vec0 = String::SplitViewNoEmpty(str0, ","sv);
82 std::vector<std::string_view> vec1 = String::SplitViewNoEmpty(str1, ","sv);
83 std::vector<std::string_view> vec2 = String::SplitViewNoEmpty(str2, ","sv);
84
85 DL_TESTER_CHECK(vec0[0] == "0" && vec0[1] == "1" && vec0[2] == "2" && vec0[3] == "3");
86 DL_TESTER_CHECK(vec1[0] == "0" && vec1[1] == "1" && vec1[2] == "2" && vec1[3] == "3");
87 DL_TESTER_CHECK(vec2[0] == "0" && vec2[1] == "1" && vec2[2] == "2" && vec2[3] == "3");
88 }
89 return true;
90 });
91 t.AddTest("TestReplace", [](size_t i, float) {
92 std::string str0 = "元宝数量增加10,元宝增加9";
93 std::string str1 = "元宝";
94 std::string str2 = "元宝数量";
95
96 std::string str = Sub::ReplaceAll(str0, str1, str2);
97 if (str != "元宝数量数量增加10,元宝数量增加9")
98 return false;
99 return true;
100 });
101 t.PrintAll();
102 return t;
103}
104
106{
107 Tester t{ "HTTP测试" };
108 t.AddTestOnce("GetRequest", [](size_t i, float)
109 {
110 Http::Request req;
112 req.SetUrl("https://httpbin.org/get");
113 if (g_http->SendRequest(req))
114 {
115 log_msg("{}", to_string(req.GetDataRecv()));
116 return true;
117 }
118 return false;
119 });
120 t.PrintAll();
121 return t;
122}
123
125{
126 Tester t{ "内存测试" };
127 t.AddTest("TestLz4", [](size_t i, float)
128 {
129 std::string str("abcabcabcabcabc");
130 BufferView buf = CreateBufferView(str);
131 Buffer zip = Memory::CompressLz4(buf);
132 Buffer unzip = Memory::DecompressLz4(zip);
133 zip.clear();
134 std::string str1 = to_string(unzip);
135 unzip.clear();
136 assert(str == str1);
137 return true;
138 });
139 t.AddTest("TestZip", [](size_t i, float)
140 {
141 std::string str("abcabcabcabcabc");
142 BufferView buf = CreateBufferView(str);
143 Buffer zip = Memory::CompressZip(buf);
144 Buffer unzip = Memory::DecompressZip(zip);
145 zip.clear();
146 std::string str1 = to_string(unzip);
147 unzip.clear();
148 assert(str == str1);
149 return true;
150 });
151 t.PrintAll();
152 return t;
153}
154
156{
157 Tester t{ "文件测试" };
158 /*t.AddTestOnce("FileXml", [](size_t i, float)
159 {
160 FileXml xml;
161 if (xml.Open("test.xml"))
162 {
163 FileXmlElement ele = xml.GetChildElement({ "Marker", "Config" });
164 if (ele.Get())
165 {
166 const XMLAttribute* attr = ele.Get()->FindAttribute("name");
167 if (attr)
168 {
169 log_msg("{}", attr->Value());
170 return true;
171 }
172 }
173 }
174 return false;
175 });
176 t.AddTestOnce("FileIni", [](size_t i, float)
177 {
178 FileIni ini;
179 if (ini.Open("test.ini"))
180 {
181 FileIniSection sec = ini.GetSection("");
182 std::string v = sec.Get("g_y");
183 log_msg("{}", v);
184 return true;
185 }
186 return false;
187 });*/
188 t.PrintAll();
189 return t;
190}
191
193{
194 Tester t{ "图像测试" };
195 t.AddTestOnce("CreateFolder", [](size_t i, float)
196 {
198 return true;
199 });
200 /*t.AddTestOnce("CreateImageSvg", [](size_t i, float)
201 {
202 Image* img = Img::CreateSvg("vulkan-logo.svg", { 400, 200 });
203 if (img)
204 {
205 Img::Save(img, File::PathStorage() + "image/vk_logo.png");
206 g_factory->RegisterSprite("vk_logo", 0, img);
207 delete img;
208 return true;
209 }
210 return false;
211 });
212 t.AddTestOnce("CreateImageWebp", [](size_t i, float)
213 {
214 Image* img1 = Img::CreateWebp("man.webp");
215 if (img1)
216 {
217 Img::Save(img1, "image/man.png");
218 delete img1;
219 return true;
220 }
221 return false;
222 });*/
223 t.PrintAll();
224 return t;
225}
226
228{
229 int error_count = 0;
230 log_test("开始进行dl测试……");
231 error_count += !TestJson();
232 error_count += !TestString();
233 error_count += !TestHttp();
234 error_count += !TestMemory();
235 error_count += !TestFile();
236 error_count += !TestImage();
237 log_test("完成dl测试,失败数量:{}", error_count);
238}
239
240
241}
242
243
void SetUrl(std::string_view url)
void SetType(Type type)
BufferView GetDataRecv()
void AddTestOnce(std::string_view name, F func)
单次执行测试
void AddTest(std::string_view name, F func)
时间内执行
文件系统
ini文件操作相关
xml文件操作相关
http协议相关
图像对象
json格式相关
nlohmann::json json
#define log_msg(...)
#define log_test(...)
内存操作相关
字符串相关
#define DL_TESTER_CHECK(cond)
测试器
bool CreateFolder(std::string_view path)
创建目录
std::string PathStorage()
返回存储路径 rw
json ParseString(std::string_view str)
从 字符串 构建json对象
bool Get(const json &j, const std::string &name, T &t)
从json返回子元素值,不存在则返回false,打印日志
Buffer CompressLz4(BufferView src)
压缩数据,使用lz4算法
Buffer DecompressLz4(BufferView src, size_t size_origin=0)
解压缩数据,使用lz4算法
Buffer DecompressZip(BufferView src, size_t size_origin=0)
解压缩数据,使用libz
Buffer CompressZip(BufferView src)
压缩数据,使用libz
T ReplaceAll(const T &a, const T &sub, const T &tar)
子串替换
bool TestString()
bool TestFile()
void TestAll()
Http * g_http
std::string to_string(T v)
to_string包装
bool TestHttp()
bool TestMemory()
bool TestJson()
bool TestImage()
BufferView CreateBufferView(const Buffer &buf)
创建buffer视图(右值不能默认转换)