fix unit tests

This commit is contained in:
lixianjing 2021-12-24 13:35:28 +08:00
parent d86646e61c
commit ec3550a098
5 changed files with 37 additions and 15 deletions

View File

@ -4,6 +4,7 @@
* 修复mingw编译说明文档感谢智明提供补丁 * 修复mingw编译说明文档感谢智明提供补丁
* 修复SDL释放的时候内存泄露的问题感谢智明提供补丁 * 修复SDL释放的时候内存泄露的问题感谢智明提供补丁
* 增加状态机(感谢林福提供补丁) * 增加状态机(感谢林福提供补丁)
* 修复单元测试兼容非utf8编码的编译器VS2015(感谢雨欣提供补丁)
2021/12/23 2021/12/23
* 增加aworkslp平台支持(感谢林福提供补丁) * 增加aworkslp平台支持(感谢林福提供补丁)

View File

@ -1,8 +1,12 @@
#include "charset/encoding.h" #include "tkc/utf8.h"
#include "charset/encoding.h"
#include "gtest/gtest.h" #include "gtest/gtest.h"
TEST(Encoding, basic) { TEST(Encoding, basic) {
const char* str = "中文"; char str[16];
const wchar_t* wstr = L"中文";
tk_utf8_from_utf16(wstr, str, sizeof(str));
char gbk[32]; char gbk[32];
char utf8[32]; char utf8[32];
ASSERT_EQ(encoding_utf8_to_gbk(str, strlen(str), gbk, sizeof(gbk)), RET_OK); ASSERT_EQ(encoding_utf8_to_gbk(str, strlen(str), gbk, sizeof(gbk)), RET_OK);

View File

@ -1,4 +1,5 @@
#include "tkc/fscript.h" #include "tkc/utf8.h"
#include "tkc/fscript.h"
#include "tkc/object_default.h" #include "tkc/object_default.h"
#include "gtest/gtest.h" #include "gtest/gtest.h"
@ -1326,9 +1327,13 @@ TEST(FExr, get_last_error) {
TEST(FExr, chinese_var) { TEST(FExr, chinese_var) {
value_t v; value_t v;
char code[128];
const wchar_t* wcode = L"set(变量,100);(变量+100)*2";
tk_object_t* obj = object_default_create(); tk_object_t* obj = object_default_create();
fscript_eval(obj, "set(变量,100);(变量+100)*2", &v); tk_utf8_from_utf16(wcode, code, sizeof(code));
fscript_eval(obj, code, &v);
ASSERT_EQ(value_int(&v), 400); ASSERT_EQ(value_int(&v), 400);
value_reset(&v); value_reset(&v);
@ -1337,9 +1342,13 @@ TEST(FExr, chinese_var) {
TEST(FScript, chinese_func) { TEST(FScript, chinese_func) {
value_t v; value_t v;
char code[128];
tk_object_t* obj = object_default_create(); tk_object_t* obj = object_default_create();
const wchar_t* wcode = L"function 求和(数1,数2) {return 数1+数2;}; 求和(100, 23)";
tk_utf8_from_utf16(wcode, code, sizeof(code));
fscript_eval(obj, code, &v);
fscript_eval(obj, "function 求和(数1,数2) {return 数1+数2;}; 求和(100, 23)", &v);
ASSERT_EQ(value_int(&v), 123); ASSERT_EQ(value_int(&v), 123);
value_reset(&v); value_reset(&v);

View File

@ -34,7 +34,8 @@ static void dump_unicode(const wchar_t* str) {
} }
TEST(Utf8, chinese) { TEST(Utf8, chinese) {
const char* str = "中文"; /* 兼容非utf8编码的编译器采用utf8编码初始化str编码内容"中文" */
char str[7] = {(char)0xe4, (char)0xb8, (char)0xad, (char)0xe6, (char)0x96, (char)0x87, 0};
const wchar_t* wstr = L"中文"; const wchar_t* wstr = L"中文";
char res_str[128]; char res_str[128];
wchar_t res_wstr[128]; wchar_t res_wstr[128];
@ -49,7 +50,8 @@ TEST(Utf8, chinese) {
} }
TEST(Utf8, dup) { TEST(Utf8, dup) {
const char* str = "中文"; /* 兼容非utf8编码的编译器采用utf8编码初始化str编码内容"中文" */
char str[7] = {(char)0xe4, (char)0xb8, (char)0xad, (char)0xe6, (char)0x96, (char)0x87, 0};
const wchar_t* wstr = L"中文"; const wchar_t* wstr = L"中文";
char* text = tk_utf8_dup_utf16(wstr, -1); char* text = tk_utf8_dup_utf16(wstr, -1);
@ -59,7 +61,9 @@ TEST(Utf8, dup) {
TEST(Utf8, trim_invalid) { TEST(Utf8, trim_invalid) {
char text[32] = {0}; char text[32] = {0};
const char* str = "中文"; /* 兼容非utf8编码的编译器采用utf8编码初始化str编码内容"中"、"中文" */
char s[4] = {(char)0xe4, (char)0xb8, (char)0xad, 0};
char str[7] = {(char)0xe4, (char)0xb8, (char)0xad, (char)0xe6, (char)0x96, (char)0x87, 0};
memset(text, 0x00, sizeof(text)); memset(text, 0x00, sizeof(text));
@ -70,19 +74,19 @@ TEST(Utf8, trim_invalid) {
ASSERT_STREQ(tk_utf8_trim_invalid_char(text), ""); ASSERT_STREQ(tk_utf8_trim_invalid_char(text), "");
strncpy(text, str, 3); strncpy(text, str, 3);
ASSERT_STREQ(tk_utf8_trim_invalid_char(text), ""); ASSERT_STREQ(tk_utf8_trim_invalid_char(text), s);
strncpy(text, str, 4); strncpy(text, str, 4);
ASSERT_STREQ(tk_utf8_trim_invalid_char(text), ""); ASSERT_STREQ(tk_utf8_trim_invalid_char(text), s);
strncpy(text, str, 5); strncpy(text, str, 5);
ASSERT_STREQ(tk_utf8_trim_invalid_char(text), ""); ASSERT_STREQ(tk_utf8_trim_invalid_char(text), s);
strncpy(text, str, 6); strncpy(text, str, 6);
ASSERT_STREQ(tk_utf8_trim_invalid_char(text), "中文"); ASSERT_STREQ(tk_utf8_trim_invalid_char(text), str);
strncpy(text, str, 7); strncpy(text, str, 7);
ASSERT_STREQ(tk_utf8_trim_invalid_char(text), "中文"); ASSERT_STREQ(tk_utf8_trim_invalid_char(text), str);
strncpy(text, "abc", 4); strncpy(text, "abc", 4);
ASSERT_STREQ(tk_utf8_trim_invalid_char(text), "abc"); ASSERT_STREQ(tk_utf8_trim_invalid_char(text), "abc");

View File

@ -29,8 +29,10 @@ TEST(WStr, demo) {
} }
TEST(WStr, basic) { TEST(WStr, basic) {
/* 兼容非utf8编码的编译器采用utf8编码初始化str编码内容"中文" */
char str[7] = {(char)0xe4, (char)0xb8, (char)0xad, (char)0xe6, (char)0x96, (char)0x87, 0};
testSetWStr("Hello", L"Hello"); testSetWStr("Hello", L"Hello");
testSetWStr("中文", L"中文"); testSetWStr(str, L"中文");
} }
static void testSetUtf8(const char* utf8, const wchar_t* cstr) { static void testSetUtf8(const char* utf8, const wchar_t* cstr) {
@ -50,8 +52,10 @@ static void testSetUtf8(const char* utf8, const wchar_t* cstr) {
} }
TEST(WStr, utf8) { TEST(WStr, utf8) {
/* 兼容非utf8编码的编译器采用utf8编码初始化str编码内容"中文" */
char str[7] = {(char)0xe4, (char)0xb8, (char)0xad, (char)0xe6, (char)0x96, (char)0x87, 0};
testSetUtf8("Hello", L"Hello"); testSetUtf8("Hello", L"Hello");
testSetUtf8("中文", L"中文"); testSetUtf8(str, L"中文");
} }
static void testRemove(const wchar_t* cstr, uint16_t offset, uint16_t nr, ret_t ret, static void testRemove(const wchar_t* cstr, uint16_t offset, uint16_t nr, ret_t ret,