mirror of
https://github.com/zlgopen/awtk.git
synced 2025-05-09 03:51:08 +08:00
sync tkc
This commit is contained in:
parent
ac46275c9d
commit
5a65d44b33
@ -1,5 +1,10 @@
|
||||
# 最新动态
|
||||
|
||||
2022/09/22
|
||||
* 完善fscript单元测试(感谢雨欣提供补丁)
|
||||
* 增加判断目录是否为空的接口(感谢兆坤提供补丁)
|
||||
* 完善types_def.h(感谢文静提供补丁)
|
||||
|
||||
2022/09/21
|
||||
* 完善编译脚本对mingw的支持(感谢俊杰提供补丁)
|
||||
* 按钮失去焦点后取消按下状态(感谢兆坤提供补丁)。
|
||||
|
25
src/tkc/fs.c
25
src/tkc/fs.c
@ -545,6 +545,31 @@ ret_t fs_remove_dir_r(fs_t* fs, const char* name) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool_t fs_dir_is_empty(fs_t* fs, const char* name) {
|
||||
bool_t ret = TRUE;
|
||||
fs_dir_t* dir = NULL;
|
||||
fs_item_t item;
|
||||
return_value_if_fail(fs != NULL && name != NULL, ret);
|
||||
|
||||
dir = fs_open_dir(fs, name);
|
||||
return_value_if_fail(dir != NULL, ret);
|
||||
|
||||
do {
|
||||
if (fs_dir_read(dir, &item) != RET_OK) {
|
||||
break;
|
||||
}
|
||||
if (tk_str_eq(item.name, ".") || tk_str_eq(item.name, "..")) {
|
||||
continue;
|
||||
} else {
|
||||
ret = FALSE;
|
||||
}
|
||||
} while (ret);
|
||||
|
||||
fs_dir_close(dir);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifndef TK_COPY_BUFF_SIZE
|
||||
#define TK_COPY_BUFF_SIZE 4096
|
||||
#endif /*TK_COPY_BUFF_SIZE*/
|
||||
|
12
src/tkc/fs.h
12
src/tkc/fs.h
@ -579,6 +579,18 @@ ret_t fs_create_dir_r(fs_t* fs, const char* name);
|
||||
*/
|
||||
ret_t fs_remove_dir_r(fs_t* fs, const char* name);
|
||||
|
||||
/**
|
||||
* @method fs_dir_is_empty
|
||||
*
|
||||
* 判断目录是否为空。
|
||||
*
|
||||
* @param {fs_t*} fs 文件系统对象,一般赋值为os_fs()。
|
||||
* @param {const char*} name 目录名称。
|
||||
*
|
||||
* @return {bool_t} 返回TRUE表示目录为空,否则表示目录不为空。
|
||||
*/
|
||||
bool_t fs_dir_is_empty(fs_t* fs, const char* name);
|
||||
|
||||
/**
|
||||
* @method fs_dir_exist
|
||||
*
|
||||
|
@ -32,6 +32,7 @@
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <strings.h>
|
||||
#include <limits.h>
|
||||
#include <inttypes.h>
|
||||
|
||||
|
@ -156,6 +156,18 @@ TEST(Fs, create_dir_r) {
|
||||
ASSERT_EQ(fs_dir_exist(os_fs(), "a"), FALSE);
|
||||
}
|
||||
|
||||
TEST(Fs, dir_empty) {
|
||||
ASSERT_EQ(fs_create_dir_r(os_fs(), "a/b/c/d"), RET_OK);
|
||||
ASSERT_EQ(fs_dir_exist(os_fs(), "a/b/c/d"), TRUE);
|
||||
|
||||
ASSERT_EQ(fs_dir_is_empty(os_fs(), "a/b/c/d"), TRUE);
|
||||
ASSERT_EQ(file_write("a/b/c/d/test.txt", "hello", 5), RET_OK);
|
||||
ASSERT_EQ(fs_dir_is_empty(os_fs(), "a/b/c/d"), FALSE);
|
||||
|
||||
ASSERT_EQ(fs_remove_dir_r(os_fs(), "a"), RET_OK);
|
||||
ASSERT_EQ(fs_dir_exist(os_fs(), "a"), FALSE);
|
||||
}
|
||||
|
||||
TEST(Fs, copy_file) {
|
||||
const char* src = "./test.txt";
|
||||
const char* dst = "./a/b/test.txt";
|
||||
|
@ -308,6 +308,10 @@ TEST(FScript, join) {
|
||||
ASSERT_STREQ(value_str(&v), "a,b,c");
|
||||
value_reset(&v);
|
||||
|
||||
fscript_eval(obj, "join(\",\", str(123), str(456), str(789), \"abc\")", &v);
|
||||
ASSERT_STREQ(value_str(&v), "123,456,789,abc");
|
||||
value_reset(&v);
|
||||
|
||||
TK_OBJECT_UNREF(obj);
|
||||
}
|
||||
|
||||
@ -328,6 +332,11 @@ TEST(FScript, iformat) {
|
||||
ASSERT_STREQ(value_str(&v), "hello:123");
|
||||
value_reset(&v);
|
||||
|
||||
fscript_eval(obj, "iformat(\"hello:%d\", 123) + str(456)", &v);
|
||||
ASSERT_STREQ(value_str(&v), "hello:123456");
|
||||
value_reset(&v);
|
||||
|
||||
|
||||
TK_OBJECT_UNREF(obj);
|
||||
}
|
||||
|
||||
@ -338,6 +347,10 @@ TEST(FScript, fformat) {
|
||||
ASSERT_STREQ(value_str(&v), "hello:123.000000");
|
||||
value_reset(&v);
|
||||
|
||||
fscript_eval(obj, "fformat(\"hello:%f\", 123) + str(456)", &v);
|
||||
ASSERT_STREQ(value_str(&v), "hello:123.000000456");
|
||||
value_reset(&v);
|
||||
|
||||
TK_OBJECT_UNREF(obj);
|
||||
}
|
||||
|
||||
@ -549,6 +562,10 @@ TEST(FScript, trim) {
|
||||
ASSERT_STREQ(value_str(&v), "aaa");
|
||||
value_reset(&v);
|
||||
|
||||
fscript_eval(obj, "trim(\"aaa \") + str(123)", &v);
|
||||
ASSERT_STREQ(value_str(&v), "aaa123");
|
||||
value_reset(&v);
|
||||
|
||||
TK_OBJECT_UNREF(obj);
|
||||
}
|
||||
|
||||
@ -579,6 +596,10 @@ TEST(FScript, toupper) {
|
||||
ASSERT_STREQ(value_str(&v), "AAA");
|
||||
value_reset(&v);
|
||||
|
||||
fscript_eval(obj, "toupper(\"aaa\") + str(123)", &v);
|
||||
ASSERT_STREQ(value_str(&v), "AAA123");
|
||||
value_reset(&v);
|
||||
|
||||
TK_OBJECT_UNREF(obj);
|
||||
}
|
||||
|
||||
@ -594,6 +615,10 @@ TEST(FScript, tolower) {
|
||||
ASSERT_STREQ(value_str(&v), "aaa");
|
||||
value_reset(&v);
|
||||
|
||||
fscript_eval(obj, "tolower(\"AAA\") + str(123)", &v);
|
||||
ASSERT_STREQ(value_str(&v), "aaa123");
|
||||
value_reset(&v);
|
||||
|
||||
TK_OBJECT_UNREF(obj);
|
||||
}
|
||||
|
||||
@ -609,6 +634,10 @@ TEST(FScript, replace) {
|
||||
ASSERT_STREQ(value_str(&v), "123");
|
||||
value_reset(&v);
|
||||
|
||||
fscript_eval(obj, "replace(\"aaa123\", \"a\", \"\") + str(456)", &v);
|
||||
ASSERT_STREQ(value_str(&v), "123456");
|
||||
value_reset(&v);
|
||||
|
||||
TK_OBJECT_UNREF(obj);
|
||||
}
|
||||
|
||||
@ -643,6 +672,10 @@ TEST(FScript, substr) {
|
||||
ASSERT_STREQ(value_str(&v), "1234567");
|
||||
value_reset(&v);
|
||||
|
||||
fscript_eval(obj, "substr(\"1234567\", 1, 3) + str(123)", &v);
|
||||
ASSERT_STREQ(value_str(&v), "234123");
|
||||
value_reset(&v);
|
||||
|
||||
TK_OBJECT_UNREF(obj);
|
||||
}
|
||||
|
||||
@ -917,6 +950,10 @@ TEST(FExr, sum) {
|
||||
ASSERT_EQ(value_int(&v), 0);
|
||||
value_reset(&v);
|
||||
|
||||
fscript_eval(obj, "str(123) + str(456)", &v);
|
||||
ASSERT_STREQ(value_str(&v), "123456");
|
||||
value_reset(&v);
|
||||
|
||||
TK_OBJECT_UNREF(obj);
|
||||
}
|
||||
|
||||
@ -1701,6 +1738,21 @@ TEST(FExr, global) {
|
||||
TK_OBJECT_UNREF(obj);
|
||||
}
|
||||
|
||||
TEST(FExr, totitle) {
|
||||
value_t v;
|
||||
tk_object_t* obj = object_default_create();
|
||||
|
||||
fscript_eval(obj, "totitle(\"it is ok!\")", &v);
|
||||
ASSERT_STREQ(value_str(&v), "It Is Ok!");
|
||||
value_reset(&v);
|
||||
|
||||
fscript_eval(obj, "totitle(\"it is ok!\") + str(123)", &v);
|
||||
ASSERT_STREQ(value_str(&v), "It Is Ok!123");
|
||||
value_reset(&v);
|
||||
|
||||
TK_OBJECT_UNREF(obj);
|
||||
}
|
||||
|
||||
TEST(FExr, text_count) {
|
||||
value_t v;
|
||||
tk_object_t* obj = object_default_create();
|
||||
@ -1722,6 +1774,37 @@ TEST(FExr, text_reverse) {
|
||||
ASSERT_STREQ(value_str(&v), "cba");
|
||||
value_reset(&v);
|
||||
|
||||
fscript_eval(obj, "text_reverse(\"abc\") + str(123)", &v);
|
||||
ASSERT_STREQ(value_str(&v), "cba123");
|
||||
value_reset(&v);
|
||||
|
||||
TK_OBJECT_UNREF(obj);
|
||||
}
|
||||
|
||||
TEST(FExr, usubstr) {
|
||||
value_t v;
|
||||
tk_object_t* obj = object_default_create();
|
||||
|
||||
fscript_eval(obj, "usubstr('致远电子', 0, 1)", &v);
|
||||
ASSERT_STREQ(value_str(&v), "致");
|
||||
value_reset(&v);
|
||||
|
||||
fscript_eval(obj, "usubstr('致远电子', 0, -1)", &v);
|
||||
ASSERT_STREQ(value_str(&v), "致远电");
|
||||
value_reset(&v);
|
||||
|
||||
fscript_eval(obj, "usubstr('致远电子', -2, -1)", &v);
|
||||
ASSERT_STREQ(value_str(&v), "电");
|
||||
value_reset(&v);
|
||||
|
||||
fscript_eval(obj, "usubstr('致远电子', -3)", &v);
|
||||
ASSERT_STREQ(value_str(&v), "远电子");
|
||||
value_reset(&v);
|
||||
|
||||
fscript_eval(obj, "usubstr('致远电子', -3) + str(123)", &v);
|
||||
ASSERT_STREQ(value_str(&v), "远电子123");
|
||||
value_reset(&v);
|
||||
|
||||
TK_OBJECT_UNREF(obj);
|
||||
}
|
||||
|
||||
@ -2084,6 +2167,10 @@ TEST(FExr, char_at) {
|
||||
ASSERT_STREQ(value_str(&v1), "h");
|
||||
value_reset(&v1);
|
||||
|
||||
fscript_eval(obj, "char_at(\"hello\", 2) + str(123)", &v1);
|
||||
ASSERT_STREQ(value_str(&v1), "l123");
|
||||
value_reset(&v1);
|
||||
|
||||
TK_OBJECT_UNREF(obj);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user