代码拉取完成,页面将自动刷新
同步操作将从 liu/LCUI 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#include <wchar.h>
#include <math.h>
#include <string.h>
#include <LCUI_Build.h>
#include <LCUI/util/logger.h>
#include <LCUI/util/object.h>
#include "test.h"
static void on_object_change(LCUI_Object object, void *data)
{
int *count = data;
*count += 1;
}
static int test_string_object(void)
{
int ret = 0;
int object_changes = 0;
LCUI_Object tmp;
LCUI_Object str1 = String_New("hello");
LCUI_Object str2 = String_New("world");
LCUI_ObjectRec str3;
LCUI_ObjectWatcher watcher;
watcher = Object_Watch(str1, on_object_change, &object_changes);
CHECK(watcher != NULL);
String_Init(&str3, "helloworld");
tmp = Object_Operate(str1, "+", str2);
CHECK(Object_Compare(&str3, tmp) == 0);
CHECK(Object_Operate(str1, "+=", str2) == str1);
CHECK(Object_Compare(str1, &str3) == 0);
CHECK(strcmp(str1->value.string, "helloworld") == 0);
CHECK(object_changes == 1);
ObjectWatcher_Delete(watcher);
Object_Delete(tmp);
Object_Delete(str1);
Object_Delete(str2);
Object_Destroy(&str3);
return ret;
}
static int test_wstring_object(void)
{
int ret = 0;
LCUI_Object tmp;
LCUI_Object str1 = WString_New(L"测试");
LCUI_Object str2 = WString_New(L"文本");
LCUI_ObjectRec str3;
LCUI_Object str4;
WString_Init(&str3, L"测试文本");
tmp = Object_Operate(str1, "+", str2);
CHECK(Object_Compare(&str3, tmp) == 0);
CHECK(Object_Operate(str1, "+=", str2) == str1);
CHECK(Object_Compare(str1, &str3) == 0);
CHECK(wcscmp(str1->value.wstring, L"测试文本") == 0);
WString_SetValue(&str3, L"1000");
str4 = Object_ToString(&str3);
CHECK(strcmp(str4->value.string, "1000") == 0);
Object_Delete(tmp);
Object_Delete(str1);
Object_Delete(str2);
Object_Delete(str4);
Object_Destroy(&str3);
return ret;
}
static int test_number_object(void)
{
int ret = 0;
int object_changes = 0;
LCUI_Object tmp;
LCUI_Object str;
LCUI_ObjectRec num1;
LCUI_ObjectRec num2;
LCUI_ObjectWatcher watcher;
Number_Init(&num1, 1.25);
Number_Init(&num2, 4.0);
watcher = Object_Watch(&num1, on_object_change, &object_changes);
CHECK(watcher != NULL);
tmp = Object_Operate(&num1, "*", &num2);
CHECK(Object_Operate(&num1, "*=", &num2) == &num1);
CHECK(Object_Compare(&num1, tmp) == 0);
CHECK(tmp->value.number == 5.0);
CHECK(object_changes == 1);
Object_Delete(tmp);
tmp = Object_Operate(&num1, "/", &num2);
CHECK(Object_Operate(&num1, "/=", &num2) == &num1);
CHECK(Object_Compare(&num1, tmp) == 0);
CHECK(tmp->value.number == 1.25);
CHECK(object_changes == 2);
Object_Delete(tmp);
Number_SetValue(&num1, 4.5);
Number_SetValue(&num2, 5.5);
CHECK(object_changes == 3);
tmp = Object_Operate(&num1, "+", &num2);
CHECK(Object_Operate(&num1, "+=", &num2) == &num1);
CHECK(Object_Compare(&num1, tmp) == 0);
CHECK(tmp->value.number == 10.0);
CHECK(object_changes == 4);
Object_Delete(tmp);
Number_SetValue(&num1, 12.5);
Number_SetValue(&num2, 7.5);
CHECK(object_changes == 5);
tmp = Object_Operate(&num1, "-", &num2);
CHECK(Object_Operate(&num1, "-=", &num2) == &num1);
CHECK(Object_Compare(&num1, tmp) == 0);
CHECK(tmp->value.number == 5.0);
CHECK(object_changes == 6);
Object_Delete(tmp);
str = Object_ToString(&num1);
CHECK(strcmp(str->value.string, "5") == 0);
ObjectWatcher_Delete(watcher);
Object_Destroy(&num1);
Object_Delete(str);
return ret;
}
int test_object(void)
{
int ret = 0;
ret += test_string_object();
ret += test_wstring_object();
ret += test_number_object();
return ret;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。