From: Youngjae Cho Date: Tue, 28 May 2024 02:55:21 +0000 (+0900) Subject: resource-manager: Fix parameter of string type setter X-Git-Tag: accepted/tizen/8.0/unified/20240618.013421^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fa51c4fd52800b3dcbb1ca999d301e3b8d099382;p=platform%2Fcore%2Fsystem%2Flibsyscommon.git resource-manager: Fix parameter of string type setter Change-Id: I1d6cfc4dea96730aaf6d6a69ba346300031a447c Signed-off-by: Youngjae Cho (cherry picked from commit b6e10eabcf25d2f4da7d357f08f093ccd5b30c26) --- diff --git a/include/libsyscommon/resource-manager.h b/include/libsyscommon/resource-manager.h index 609b8e9..9bea67a 100644 --- a/include/libsyscommon/resource-manager.h +++ b/include/libsyscommon/resource-manager.h @@ -242,7 +242,7 @@ int syscommon_resman_set_resource_attr_uint64_3(int resource_id, u_int64_t attr_ int syscommon_resman_set_resource_attr_uint64_4(int resource_id, u_int64_t attr_id, u_int64_t data1, u_int64_t data2, u_int64_t data3, u_int64_t data4); int syscommon_resman_set_resource_attr_double(int resource_id, u_int64_t attr_id, double data); -int syscommon_resman_set_resource_attr_string(int resource_id, u_int64_t attr_id, char data); +int syscommon_resman_set_resource_attr_string(int resource_id, u_int64_t attr_id, const char *data); int syscommon_resman_set_resource_attr_array(int resource_id, u_int64_t attr_id, void *data, int count); int syscommon_resman_set_resource_attr_ptr(int resource_id, u_int64_t attr_id, void *data); diff --git a/src/resource-manager/resource-manager.c b/src/resource-manager/resource-manager.c index 0a2e39b..683c7d4 100644 --- a/src/resource-manager/resource-manager.c +++ b/src/resource-manager/resource-manager.c @@ -1678,7 +1678,7 @@ syscommon_resman_set_resource_attr_double(int resource_id, u_int64_t attr_id, do } int -syscommon_resman_set_resource_attr_string(int resource_id, u_int64_t attr_id, char data) +syscommon_resman_set_resource_attr_string(int resource_id, u_int64_t attr_id, const char *data) { struct syscommon_resman_resource *resource = find_resource(resource_id); diff --git a/tests/resource-manager/common-interface.h b/tests/resource-manager/common-interface.h index 2876175..1a418aa 100644 --- a/tests/resource-manager/common-interface.h +++ b/tests/resource-manager/common-interface.h @@ -17,6 +17,7 @@ typedef union { uint64_t u64; double d; void* p; + char *s; bool b; } resource_attr_data_t; diff --git a/tests/resource-manager/display-interface.h b/tests/resource-manager/display-interface.h index 835d367..b6a4b5b 100644 --- a/tests/resource-manager/display-interface.h +++ b/tests/resource-manager/display-interface.h @@ -6,13 +6,14 @@ #define DISPLAY_ATTR_UINT (1ULL << 2) #define DISPLAY_ATTR_UINT64 (1ULL << 3) #define DISPLAY_ATTR_DOUBLE (1ULL << 4) -#define DISPLAY_ATTR_2_UINT64 (1ULL << 5) -#define DISPLAY_ATTR_3_UINT64 (1ULL << 6) -#define DISPLAY_ATTR_4_UINT64 (1ULL << 7) -#define DISPLAY_ATTR_INT_IS_SUPPORT_FUNC (1ULL << 8) -#define DISPLAY_ATTR_INT_NO_IS_SUPPORT_FUNC (1ULL << 9) -#define DISPLAY_ATTR_INT_NO_GETTER (1ULL << 10) -#define DISPLAY_ATTR_INT_NO_SETTER (1ULL << 11) -#define DISPLAY_ATTR_MAX (1ULL << 12) +#define DISPLAY_ATTR_STRING (1ULL << 5) +#define DISPLAY_ATTR_2_UINT64 (1ULL << 6) +#define DISPLAY_ATTR_3_UINT64 (1ULL << 7) +#define DISPLAY_ATTR_4_UINT64 (1ULL << 8) +#define DISPLAY_ATTR_INT_IS_SUPPORT_FUNC (1ULL << 9) +#define DISPLAY_ATTR_INT_NO_IS_SUPPORT_FUNC (1ULL << 10) +#define DISPLAY_ATTR_INT_NO_GETTER (1ULL << 11) +#define DISPLAY_ATTR_INT_NO_SETTER (1ULL << 12) +#define DISPLAY_ATTR_MAX (1ULL << 13) #endif /* __TEST_DISPLAY_INTERFACE_H__ */ diff --git a/tests/resource-manager/resource-display.c b/tests/resource-manager/resource-display.c index 795a72a..1719057 100644 --- a/tests/resource-manager/resource-display.c +++ b/tests/resource-manager/resource-display.c @@ -59,6 +59,9 @@ static int test_display_get(int resource_id, case DISPLAY_ATTR_DOUBLE: attr_data.d = mock_type(double); break; + case DISPLAY_ATTR_STRING: + attr_data.s = mock_ptr_type(char *); + break; } ret = mock_type(int); @@ -88,6 +91,9 @@ static int test_display_get(int resource_id, case SYSCOMMON_RESMAN_DATA_TYPE_BOOLEAN: *(bool *) data = attr_data.b; break; + case SYSCOMMON_RESMAN_DATA_TYPE_STRING: + strncpy(data, attr_data.s, SYSCOMMON_RESMAN_BUFF_MAX); + break; default: return -EINVAL; } @@ -155,6 +161,16 @@ static const struct syscommon_resman_resource_attribute display_attrs[] = { .set = test_display_set, .is_supported = syscommon_resman_resource_attr_supported_always, }, + }, { + .name = "DISPLAY_ATTR_STRING", + .id = DISPLAY_ATTR_STRING, + .type = SYSCOMMON_RESMAN_DATA_TYPE_STRING, + .flag = SYSCOMMON_RESMAN_RESOURCE_ATTR_FLAG_PUBLIC, + .ops = { + .get = test_display_get, + .set = test_display_set, + .is_supported = syscommon_resman_resource_attr_supported_always, + }, }, { .name = "DISPLAY_ATTR_2_UINT64", .id = DISPLAY_ATTR_2_UINT64, diff --git a/tests/resource-manager/test.c b/tests/resource-manager/test.c index aac81ff..5fda2b6 100644 --- a/tests/resource-manager/test.c +++ b/tests/resource-manager/test.c @@ -57,6 +57,7 @@ static void test_create_resource_pass(void **state) case DISPLAY_ATTR_UINT: case DISPLAY_ATTR_UINT64: case DISPLAY_ATTR_DOUBLE: + case DISPLAY_ATTR_STRING: /** * Check created resource has attr_value that has * successfully been allocated memory for data @@ -176,6 +177,49 @@ static void test_get_resource_attr_int_pass(void **state) delete_display_resource(resource_id); } +static void test_get_resource_attr_string_pass_1(void **state) +{ + int resource_id; + int ret; + const char *expect = "expect"; + char result[SYSCOMMON_RESMAN_BUFF_MAX] = { 0 , }; + + resource_id = create_display_resource(); + + will_return(test_display_get, expect); + will_return(test_display_get, 0); + + ret = syscommon_resman_get_resource_attr_string(resource_id, DISPLAY_ATTR_STRING, result); + assert_int_equal(ret, 0); + assert_string_equal(result, expect); + + delete_display_resource(resource_id); +} + +static void test_get_resource_attr_string_pass_2(void **state) +{ + int resource_id; + int ret; + const char *expect = "expect"; + char *result = NULL; + + resource_id = create_display_resource(); + + will_return(test_display_get, expect); + will_return(test_display_get, 0); + + result = calloc(SYSCOMMON_RESMAN_BUFF_MAX, sizeof(char)); + assert_non_null(result); + + ret = syscommon_resman_get_resource_attr_string(resource_id, DISPLAY_ATTR_STRING, result); + assert_int_equal(ret, 0); + assert_string_equal(result, expect); + free(result); + result = NULL; + + delete_display_resource(resource_id); +} + static void test_get_resource_attr_int_fail_getter(void **state) { int resource_id; @@ -309,6 +353,23 @@ static void test_set_resource_attr_int_pass(void **state) delete_display_resource(resource_id); } +static void test_set_resource_attr_string_pass(void **state) +{ + int resource_id; + int ret; + const char *s = "address to a readonly segment"; + + resource_id = create_display_resource(); + + expect_memory(test_display_set, data, &s, sizeof(char *)); + will_return(test_display_set, 0); + + ret = syscommon_resman_set_resource_attr_string(resource_id, DISPLAY_ATTR_STRING, s); + assert_int_equal(ret, 0); + + delete_display_resource(resource_id); +} + static void test_set_resource_attr_int_fail_setter(void **state) { int resource_id; @@ -785,6 +846,8 @@ static const struct CMUnitTest resource_manager_testsuite[] = { cmocka_unit_test(test_create_resource_fail_is_support_2), cmocka_unit_test(test_get_resource_attr_int_pass), + cmocka_unit_test(test_get_resource_attr_string_pass_1), + cmocka_unit_test(test_get_resource_attr_string_pass_2), cmocka_unit_test(test_get_resource_attr_int_fail_getter), cmocka_unit_test(test_get_resource_attr_int_fail_no_getter), cmocka_unit_test(test_get_resource_attr_int_fail_unmatched_type), @@ -797,6 +860,7 @@ static const struct CMUnitTest resource_manager_testsuite[] = { cmocka_unit_test(test_get_resource_attr_int_fail_invalid_parameter_3), cmocka_unit_test(test_set_resource_attr_int_pass), + cmocka_unit_test(test_set_resource_attr_string_pass), cmocka_unit_test(test_set_resource_attr_int_fail_setter), cmocka_unit_test(test_set_resource_attr_int_fail_no_setter), cmocka_unit_test(test_set_resource_attr_int_fail_unmatched_type),