From eb81c294532468c1fbe38c157a360cc2a9b135a5 Mon Sep 17 00:00:00 2001 From: JinWang An Date: Thu, 13 Jul 2023 17:36:05 +0900 Subject: [PATCH] Add font size configuation file To support different variable product, font_scale.json is added. With %config option in .spec file, the font_scale.json can be uploaded only when there is no the font_scale.json in /etc. In font_scale.json, there are 5 grade of font size, below. $ cat /etc/font_scale.json { "SMALL" : -80, "NORMAL" : -100, "LARGE" : -150, "HUGE" : -190, "GIANT" : -250 } -80 means that 80% font scale of each application font size. Each grade is mapping, below. SYSTEM_SETTINGS_FONT_SIZE_SMALL == "SMALL" in font_scale.json value SYSTEM_SETTINGS_FONT_SIZE_NORMAL == "NORMAL" in font_scale.json value SYSTEM_SETTINGS_FONT_SIZE_LARGE == "LARGE" in font_scale.json value SYSTEM_SETTINGS_FONT_SIZE_HUGE == "HUGE" in font_scale.json value SYSTEM_SETTINGS_FONT_SIZE_GIANT == "GIANT" in font_scale.json value Change-Id: I1fba03154630f41544dca8ef49595e9226724baf Signed-off-by: JinWang An --- conf_example/font_scale.json | 7 + libutil/CMakeLists.txt | 3 +- libutil/sstu.c | 107 +++++++++++- packaging/capi-system-system-settings.spec | 3 + tests/20200723_backup.patch | 93 +++++++++++ tests/CMakeLists.txt | 7 +- tests/CMakeLists.txt.backup | 61 +++++++ tests/res/font_scale_giant_error.json | 7 + tests/res/font_scale_huge_error.json | 7 + tests/res/font_scale_large_error.json | 7 + tests/res/font_scale_normal_error.json | 7 + tests/res/font_scale_small_error.json | 7 + tests/sst_gtest_err_font.cpp | 256 +++++++++++++++++++++++++++++ tests/sst_gtest_normal_font.cpp | 46 ++++++ 14 files changed, 610 insertions(+), 8 deletions(-) create mode 100644 conf_example/font_scale.json create mode 100644 tests/20200723_backup.patch create mode 100644 tests/CMakeLists.txt.backup create mode 100644 tests/res/font_scale_giant_error.json create mode 100644 tests/res/font_scale_huge_error.json create mode 100644 tests/res/font_scale_large_error.json create mode 100644 tests/res/font_scale_normal_error.json create mode 100644 tests/res/font_scale_small_error.json create mode 100644 tests/sst_gtest_err_font.cpp diff --git a/conf_example/font_scale.json b/conf_example/font_scale.json new file mode 100644 index 0000000..7e60c6f --- /dev/null +++ b/conf_example/font_scale.json @@ -0,0 +1,7 @@ +{ + "SMALL" : -80, + "NORMAL" : -100, + "LARGE" : -150, + "HUGE" : -190, + "GIANT" : -250 +} diff --git a/libutil/CMakeLists.txt b/libutil/CMakeLists.txt index d1a1572..1a46d3e 100644 --- a/libutil/CMakeLists.txt +++ b/libutil/CMakeLists.txt @@ -1,10 +1,11 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src) SET(LIB_UTILS system-settings-util) +ADD_DEFINITIONS(-DSYSCONF_DIR=\"${SYSCONF_DIR}\") FILE(GLOB UTILS_SRCS *.c) -PKG_CHECK_MODULES(utils_pkgs REQUIRED dlog vconf fontconfig efl-extension) +PKG_CHECK_MODULES(utils_pkgs REQUIRED dlog vconf fontconfig efl-extension json-glib-1.0) INCLUDE_DIRECTORIES(${utils_pkgs_INCLUDE_DIRS}) LINK_DIRECTORIES(${utils_pkgs_LIBRARY_DIRS}) diff --git a/libutil/sstu.c b/libutil/sstu.c index b767fa6..9c6b974 100644 --- a/libutil/sstu.c +++ b/libutil/sstu.c @@ -19,9 +19,13 @@ #include #include #include +#include #include "system_settings.h" #include "sst.h" +#define FONT_SCALE_CONF_PATH SYSCONF_DIR"/font_scale.json" +#define INTERNAL_API __attribute__((visibility("default"))) + #ifdef TIZEN_WEARABLE #define SMALL_FONT_DPI (-90) #else @@ -45,6 +49,15 @@ #define SETTING_FONT_TIZEN_FONT_ALIAS "Tizen" #define SETTING_FONT_TIZEN_DEFAULT_FONT_ALIAS "TizenDefaultFont" + +typedef struct __font_size_info { + int small; + int normal; + int large; + int huge; + int giant; +} font_size_info; + static char* _get_main_font_family(char *alias) { FcFontSet *set; @@ -207,9 +220,89 @@ API char* sstu_get_default_font() return _get_main_font_family(SETTING_FONT_TIZEN_DEFAULT_FONT_ALIAS); } +/* +To support different variable product, font_scale.json is added. +With %config option in .spec file, the font_scale.json can be +uploaded only when there is no the font_scale.json in /etc. + +In font_scale.json, there are 5 grade of font size, below. + +$ cat /etc/font_scale.json +{ + "SMALL" : -80, + "NORMAL" : -100, + "LARGE" : -150, + "HUGE" : -190, + "GIANT" : -250 +} + +-80 means that 80% font scale of each application font size. +Each grade is mapping, below. + +SYSTEM_SETTINGS_FONT_SIZE_SMALL == "SMALL" in font_scale.json value +SYSTEM_SETTINGS_FONT_SIZE_NORMAL == "NORMAL" in font_scale.json value +SYSTEM_SETTINGS_FONT_SIZE_LARGE == "LARGE" in font_scale.json value +SYSTEM_SETTINGS_FONT_SIZE_HUGE == "HUGE" in font_scale.json value +SYSTEM_SETTINGS_FONT_SIZE_GIANT == "GIANT" in font_scale.json value +*/ + +static int get_int_from_object(JsonObject *obj, const char *key, int *data) +{ + JsonNode *tmp = json_object_get_member(obj, key); + + if (tmp == NULL){ + ERR("json_object_object_get_ex(key:%s) error", key); + return -EINVAL; + } + + int tmp_int = json_node_get_int(tmp); + if (tmp_int < 0) { + *data = tmp_int; + } else { + ERR("%s key Wrong value : %d ", key, tmp_int); + } + + return 0; +} + +INTERNAL_API int load_font_size_info(font_size_info *info, const gchar *path) +{ + GError *error = NULL; + + if (info == NULL) + return -EINVAL; + + info->small = SMALL_FONT_DPI; + info->normal = MIDDLE_FONT_DPI; + info->large = LARGE_FONT_DPI; + info->huge = HUGE_FONT_DPI; + info->giant = GIANT_FONT_DPI; + + JsonParser *parser = json_parser_new(); + json_parser_load_from_file (parser, path, &error); + /* Parse configuration file */ + if (error) { + INFO("There is no json_object file(%s), loaded default font size values", path); + return 0; + } + + JsonObject *obj = json_node_get_object(json_parser_get_root (parser)); + INFO("json_object file(%s) OPENED! Try to load font size values from the file.", path); + get_int_from_object(obj, "SMALL", &info->small); + get_int_from_object(obj, "NORMAL", &info->normal); + get_int_from_object(obj, "LARGE", &info->large); + get_int_from_object(obj, "HUGE", &info->huge); + get_int_from_object(obj, "GIANT", &info->giant); + + g_object_unref(parser); + + return 0; +} + static int _get_font_size() { int font_size = -1; + font_size_info info; int vconf_value = -1; if (vconf_get_int(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, &vconf_value)) { @@ -217,24 +310,26 @@ static int _get_font_size() return -1; } + load_font_size_info(&info, FONT_SCALE_CONF_PATH); + switch (vconf_value) { case SYSTEM_SETTINGS_FONT_SIZE_SMALL: - font_size = SMALL_FONT_DPI; + font_size = info.small; break; case SYSTEM_SETTINGS_FONT_SIZE_NORMAL: - font_size = MIDDLE_FONT_DPI; + font_size = info.normal; break; case SYSTEM_SETTINGS_FONT_SIZE_LARGE: - font_size = LARGE_FONT_DPI; + font_size = info.large; break; case SYSTEM_SETTINGS_FONT_SIZE_HUGE: - font_size = HUGE_FONT_DPI; + font_size = info.huge; break; case SYSTEM_SETTINGS_FONT_SIZE_GIANT: - font_size = GIANT_FONT_DPI; + font_size = info.giant; break; default: - font_size = MIDDLE_FONT_DPI; + font_size = info.normal; break; } return font_size; diff --git a/packaging/capi-system-system-settings.spec b/packaging/capi-system-system-settings.spec index 918ab90..3e3d404 100644 --- a/packaging/capi-system-system-settings.spec +++ b/packaging/capi-system-system-settings.spec @@ -106,6 +106,7 @@ MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'` -DTZ_SYS_ETC=%{TZ_SYS_ETC} \ -DTZ_SYS_RO_SHARE=%{TZ_SYS_RO_SHARE} \ -DTZ_SYS_SHARE=%{TZ_SYS_SHARE} \ + -DSYSCONF_DIR=%{_sysconfdir} \ -DBUILD_GCOV=%{?gcov:1}%{!?gcov:0} \ -DTEST_INSTALL_DIR:PATH=%{sys_setting_test_dir} \ -DSST_RES_DIR=%{TZ_SYS_GLOBALUSER_DATA}/settings \ @@ -138,6 +139,7 @@ test_main() { echo "test_main start" /usr/bin/sys-settings/sst-unit-test /usr/bin/sys-settings/sst-unit-test-err-interface + /usr/bin/sys-settings/sst-unit-test-err-font } teardown() { @@ -160,6 +162,7 @@ install -m 0755 run-unittest.sh %{buildroot}%{_bindir}/tizen-unittests/%{name}/ #bash tests/scripts/vconf_golden_master.sh LD_LIBRARY_PATH=.:tests:libutil tests/sst-unit-test-err-interface LD_LIBRARY_PATH=.:tests:libutil tests/sst-unit-test +LD_LIBRARY_PATH=.:tests:libutil tests/sst-unit-test-err-font %if 0%{?gcov:1} lcov -c --ignore-errors graph --no-external -b . -d . -o %{name}.info genhtml %{name}.info -o out --legend --show-details diff --git a/tests/20200723_backup.patch b/tests/20200723_backup.patch new file mode 100644 index 0000000..8c724fe --- /dev/null +++ b/tests/20200723_backup.patch @@ -0,0 +1,93 @@ +diff --git a/tests/mocks/libc.c b/tests/mocks/libc.c +index 33fd011..aa5a3be 100644 +--- a/tests/mocks/libc.c ++++ b/tests/mocks/libc.c +@@ -22,11 +22,18 @@ + #include "sst.h" + #include "sstt_mock.h" + +-API int access(const char *pathname, int mode) ++static int sst_mock_access_result = 0; ++API void sm_access_setup(int result) + { +- if (true == sstt_get_error()) +- return -1; ++ sst_mock_access_result = result; ++} + ++API int access(const char *pathname, int mode) ++{ ++#if 0 ++ //return sst_mock_access_result; ++ return 0; ++#else + if (0 == strcmp(pathname, SYS_SETTINGS_TEST_DIR"/ringtone_sdk.mp3")) + return 0; + if (0 == strcmp(pathname, SYS_SETTINGS_TEST_DIR"/Over the horizon.mp3")) +@@ -46,9 +53,18 @@ API int access(const char *pathname, int mode) + + int (*org_fn)(const char *, int); + org_fn = dlsym(RTLD_NEXT, "access"); +- return org_fn(pathname, mode); ++ int ret = org_fn(pathname, mode); ++ DBG("access(%s, %d) ret(%d)", pathname, mode, ret); ++ return ret; ++#endif + } + ++//static int sm_readlink_val = 0; ++//API int sm_readlink_err_setup(int val) ++//{ ++// sm_readlink_val = val; ++//} ++ + API ssize_t readlink(const char *restrict path, char *restrict buf, size_t len) + { + const char *local = "/usr/share/zoneinfo/Asia/Seoul"; +@@ -66,7 +82,7 @@ API ssize_t readlink(const char *restrict path, char *restrict buf, size_t len) + return org_fn(path, buf, len); + } + +-API DIR *opendir(const char *name) ++API DIR* opendir(const char *name) + { + DIR *(*org_fn)(const char *); + if (true == sstt_get_error()) +@@ -81,3 +97,12 @@ API DIR *opendir(const char *name) + + return org_fn(name); + } ++ ++API void* dlopen(const char *filename, int flag) ++{ ++ void *(*org_fn)(const char *filename, int flag); ++ org_fn = dlsym(RTLD_NEXT, "dlopen"); ++ return org_fn(filename, flag); ++} ++ ++ +diff --git a/tests/mocks/sstt_mock.c b/tests/mocks/sstt_mock.c +index 9801d64..9fbf170 100644 +--- a/tests/mocks/sstt_mock.c ++++ b/tests/mocks/sstt_mock.c +@@ -25,6 +25,7 @@ API void sstt_set_error(bool flag) + sstt_error_return = flag; + sstt_efl_set_error(flag); + sstt_vconf_set_error(flag); ++// sstt_dlopen_set_error(flag); + } + + API bool sstt_get_error() +diff --git a/tests/mocks/sstt_mock.h b/tests/mocks/sstt_mock.h +index 332e9a8..eb62f73 100644 +--- a/tests/mocks/sstt_mock.h ++++ b/tests/mocks/sstt_mock.h +@@ -26,6 +26,8 @@ void sstt_efl_set_error(bool flag); + bool sstt_efl_get_error(); + void sstt_vconf_set_error(bool flag); + bool sstt_vconf_get_error(); ++void sstt_dlopen_set_error(bool flag); ++bool sstt_dlopenf_get_error(); + #ifdef __cplusplus + } + #endif diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 4183ed9..fd52afc 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -13,7 +13,7 @@ ADD_DEFINITIONS("-DSST_TEST") ADD_DEFINITIONS("-DN_THREADS=${N_THREADS}") ADD_DEFINITIONS(-DSYS_SETTINGS_TEST_DIR=\"${TEST_INSTALL_DIR}\") -pkg_check_modules(gtest_pkgs REQUIRED gmock json-glib-1.0) +pkg_check_modules(gtest_pkgs REQUIRED gmock) INCLUDE_DIRECTORIES(${gtest_pkgs_INCLUDE_DIRS}) INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src) LINK_DIRECTORIES(${gtest_pkgs_LIBRARY_DIRS}) @@ -35,4 +35,9 @@ ADD_EXECUTABLE(${SSTT_GTEST_INTERFACE} ${SSTT_COMMON_SRC} ${SSTT_GTEST_INTERFACE TARGET_LINK_LIBRARIES(${SSTT_GTEST_INTERFACE} ${MOCK_LIB} ${gtest_pkgs_LIBRARIES} ${pkgs_LIBRARIES} dl) INSTALL(TARGETS ${SSTT_GTEST_INTERFACE} DESTINATION ${TEST_INSTALL_DIR}) +SET(SSTT_GTEST_FONT_ERR "sst-unit-test-err-font") +SET(SSTT_GTEST_FONT_ERR_SRC sst_gtest_err_font.cpp) +ADD_EXECUTABLE(${SSTT_GTEST_FONT_ERR} ${SSTT_COMMON_SRC} ${SSTT_GTEST_FONT_ERR_SRC}) +TARGET_LINK_LIBRARIES(${SSTT_GTEST_FONT_ERR} ${MOCK_LIB} ${gtest_pkgs_LIBRARIES} ${pkgs_LIBRARIES} dl) +INSTALL(TARGETS ${SSTT_GTEST_FONT_ERR} DESTINATION ${TEST_INSTALL_DIR}) diff --git a/tests/CMakeLists.txt.backup b/tests/CMakeLists.txt.backup new file mode 100644 index 0000000..b76375d --- /dev/null +++ b/tests/CMakeLists.txt.backup @@ -0,0 +1,61 @@ +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIE") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIE") +SET(SST_SRC_DIR ${CMAKE_SOURCE_DIR}/src) +SET(SST_UTIL_DIR ${CMAKE_SOURCE_DIR}/libutil) + +ADD_DEFINITIONS("-DSST_TEST") +ADD_DEFINITIONS("-DN_THREADS=${N_THREADS}") +ADD_DEFINITIONS(-DSYS_SETTINGS_TEST_DIR=\"${TEST_INSTALL_DIR}\") + +INSTALL(DIRECTORY res/ DESTINATION ${TEST_INSTALL_DIR}) +INSTALL(FILES scripts/ringtone_files.sh DESTINATION ${TEST_INSTALL_DIR}) + +pkg_check_modules(gtest_pkgs REQUIRED gmock) +INCLUDE_DIRECTORIES(${gtest_pkgs_INCLUDE_DIRS}) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src) +LINK_DIRECTORIES(${gtest_pkgs_LIBRARY_DIRS}) + +SET(SSTT_MOCK_LIB "sys-settings-sstt-mock") +FILE(GLOB SSTT_MOCK_SRCS + mocks/sstt_mock.c + ) +ADD_LIBRARY(${SSTT_MOCK_LIB} SHARED ${SSTT_MOCK_SRCS}) + +SET(INNER_MOCK_LIB "sys-settings-inner-mock") +FILE(GLOB INNER_MOCK_SRCS + mocks/efl.c + mocks/libc.c + mocks/pkgmgrinfo_appinfo.c + mocks/system_info.c + mocks/vconf.cpp + ) +ADD_LIBRARY(${INNER_MOCK_LIB} SHARED ${INNER_MOCK_SRCS}) + +SET(SSTT_GTEST "sst-unit-test") +FILE(GLOB SSTT_GTEST_SRC + ${SST_SRC_DIR}/*.c + ${SST_SRC_DIR}/standard_excl/*.c + sst_gtest_api.cpp + sst_gtest_font.cpp + sst_gtest_interface.cpp + sst_gtest_main.cpp + sst_gtest_misc.cpp + sst_gtest_screen.cpp + sst_gtest_sound.cpp + sst_gtest_time_N_locale.cpp + sst_gtest_vconf.cpp + ) +ADD_EXECUTABLE(${SSTT_GTEST} ${SSTT_GTEST_SRC}) +TARGET_LINK_LIBRARIES(${SSTT_GTEST} ${gtest_pkgs_LIBRARIES} ${pkgs_LIBRARIES} dl) +INSTALL(TARGETS ${SSTT_GTEST} DESTINATION ${TEST_INSTALL_DIR}) + +SET(SSTT_GTEST_ERR "sst-unit-err-test") +FILE(GLOB SSTT_GTEST_ERR_SRC + ${SST_SRC_DIR}/*.c + ${SST_SRC_DIR}/standard_excl/*.c + sst_gtest_main.cpp + sst_gtest_vconf_e.cpp + ) +ADD_EXECUTABLE(${SSTT_GTEST_ERR} ${SSTT_GTEST_ERR_SRC}) +TARGET_LINK_LIBRARIES(${SSTT_GTEST_ERR} ${gtest_pkgs_LIBRARIES} ${SSTT_MOCK_LIB} ${pkgs_LIBRARIES} dl) +INSTALL(TARGETS ${SSTT_GTEST_ERR} DESTINATION ${TEST_INSTALL_DIR}) diff --git a/tests/res/font_scale_giant_error.json b/tests/res/font_scale_giant_error.json new file mode 100644 index 0000000..57ef590 --- /dev/null +++ b/tests/res/font_scale_giant_error.json @@ -0,0 +1,7 @@ +{ + "SMALL" : -80, + "NORMAL" : -100, + "LARGE" : -150, + "HUGE" : -190, + "GIANT" : "err_val" +} diff --git a/tests/res/font_scale_huge_error.json b/tests/res/font_scale_huge_error.json new file mode 100644 index 0000000..da49d6d --- /dev/null +++ b/tests/res/font_scale_huge_error.json @@ -0,0 +1,7 @@ +{ + "SMALL" : -80, + "NORMAL" : -100, + "LARGE" : -150, + "HUGE" : "err_val", + "GIANT" : -250 +} diff --git a/tests/res/font_scale_large_error.json b/tests/res/font_scale_large_error.json new file mode 100644 index 0000000..1126fbf --- /dev/null +++ b/tests/res/font_scale_large_error.json @@ -0,0 +1,7 @@ +{ + "SMALL" : -80, + "NORMAL" : -100, + "LARGE" : "err_val", + "HUGE" : -190, + "GIANT" : -250 +} diff --git a/tests/res/font_scale_normal_error.json b/tests/res/font_scale_normal_error.json new file mode 100644 index 0000000..6be665a --- /dev/null +++ b/tests/res/font_scale_normal_error.json @@ -0,0 +1,7 @@ +{ + "SMALL" : -80, + "NORMAL" : "err_val", + "LARGE" : -150, + "HUGE" : -190, + "GIANT" : -250 +} diff --git a/tests/res/font_scale_small_error.json b/tests/res/font_scale_small_error.json new file mode 100644 index 0000000..28e698b --- /dev/null +++ b/tests/res/font_scale_small_error.json @@ -0,0 +1,7 @@ +{ + "SMALL" : "err_val", + "NORMAL" : -100, + "LARGE" : -150, + "HUGE" : -190, + "GIANT" : -250 +} diff --git a/tests/sst_gtest_err_font.cpp b/tests/sst_gtest_err_font.cpp new file mode 100644 index 0000000..2b8249f --- /dev/null +++ b/tests/sst_gtest_err_font.cpp @@ -0,0 +1,256 @@ +/* + * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include +#include + +#include "system_settings.h" +#include "mocks/sstt_mock.h" + +extern "C" { +#include "sst.h" +#include "sst_font.h" +#include "sst_vconf.h" +#include "sst_interface.h" + +typedef struct __font_size_info { + int small; + int normal; + int large; + int huge; + int giant; +} font_size_info; +} + + +static void* _utils_load_lib() +{ + const char* const path = SETTING_UTILS_SO_FILE_PATH; + void *handle = dlopen(path, RTLD_LAZY | RTLD_GLOBAL); + if (NULL == handle) + ERR("dlopen(%s) Fail", path); + + return handle; +} + +TEST(SstFontTest,loadFontSizeInfoPathERR) +{ + static font_size_info info; + void *handle = _utils_load_lib(); + EXPECT_NE((void*)NULL, handle); + + typedef int (*fn_impl)(font_size_info *info, const char *path); + fn_impl load_font_size_info = NULL; + + load_font_size_info = (fn_impl)dlsym(handle, "load_font_size_info"); + char *error = dlerror(); + EXPECT_EQ(0, error); + + int ret = load_font_size_info(&info, "/error/asdlfajsdf.json"); + EXPECT_EQ(0, ret); + +#ifdef TIZEN_WEARABLE + EXPECT_EQ(-90, info.small); + EXPECT_EQ(-110, info.large); +#else + EXPECT_EQ(-80, info.small); + EXPECT_EQ(-150, info.large); +#endif + EXPECT_EQ(-100, info.normal); + EXPECT_EQ(-190, info.huge); + EXPECT_EQ(-250, info.giant); + + dlclose(handle); + handle = NULL; +} + +TEST(SstFontTest,loadFontSizeInfoInputERR) +{ + void *handle = _utils_load_lib(); + EXPECT_NE((void*)NULL, handle); + + typedef int (*fn_impl)(font_size_info *info, const char *path); + fn_impl load_font_size_info = NULL; + + load_font_size_info = (fn_impl)dlsym(handle, "load_font_size_info"); + char *error = dlerror(); + EXPECT_EQ(0, error); + + int ret = load_font_size_info(NULL, "/error/asdlfajsdf.json"); + EXPECT_NE(0, ret); + + dlclose(handle); + handle = NULL; +} + +TEST(SstFontTest,loadFontSizeInfoSmallERR) +{ + font_size_info info; + void *handle = _utils_load_lib(); + EXPECT_NE((void*)NULL, handle); + + typedef int (*fn_impl)(font_size_info *info, const char *path); + fn_impl load_font_size_info = NULL; + + load_font_size_info = (fn_impl)dlsym(handle, "load_font_size_info"); + char *error = dlerror(); + EXPECT_EQ(0, error); + + int ret = load_font_size_info(&info, "tests/res/font_scale_small_error.json"); + EXPECT_EQ(0, ret); + +#ifdef TIZEN_WEARABLE + EXPECT_EQ(-90, info.small); + EXPECT_EQ(-110, info.large); +#else + EXPECT_EQ(-80, info.small); + EXPECT_EQ(-150, info.large); +#endif + EXPECT_EQ(-100, info.normal); + EXPECT_EQ(-190, info.huge); + EXPECT_EQ(-250, info.giant); + + dlclose(handle); + handle = NULL; +} + +TEST(SstFontTest,loadFontSizeInfoNormalERR) +{ + font_size_info info; + void *handle = _utils_load_lib(); + EXPECT_NE((void*)NULL, handle); + + typedef int (*fn_impl)(font_size_info *info, const char *path); + fn_impl load_font_size_info = NULL; + + load_font_size_info = (fn_impl)dlsym(handle, "load_font_size_info"); + char *error = dlerror(); + EXPECT_EQ(0, error); + + int ret = load_font_size_info(&info, "tests/res/font_scale_normal_error.json"); + EXPECT_EQ(0, ret); + +#ifdef TIZEN_WEARABLE + EXPECT_EQ(-90, info.small); + EXPECT_EQ(-110, info.large); +#else + EXPECT_EQ(-80, info.small); + EXPECT_EQ(-150, info.large); +#endif + EXPECT_EQ(-100, info.normal); + EXPECT_EQ(-190, info.huge); + EXPECT_EQ(-250, info.giant); + + dlclose(handle); + handle = NULL; +} + +TEST(SstFontTest,loadFontSizeInfoLargeERR) +{ + font_size_info info; + void *handle = _utils_load_lib(); + EXPECT_NE((void*)NULL, handle); + + typedef int (*fn_impl)(font_size_info *info, const char *path); + fn_impl load_font_size_info = NULL; + + load_font_size_info = (fn_impl)dlsym(handle, "load_font_size_info"); + char *error = dlerror(); + EXPECT_EQ(0, error); + + int ret = load_font_size_info(&info, "tests/res/font_scale_large_error.json"); + EXPECT_EQ(0, ret); + +#ifdef TIZEN_WEARABLE + EXPECT_EQ(-90, info.small); + EXPECT_EQ(-110, info.large); +#else + EXPECT_EQ(-80, info.small); + EXPECT_EQ(-150, info.large); +#endif + EXPECT_EQ(-100, info.normal); + EXPECT_EQ(-190, info.huge); + EXPECT_EQ(-250, info.giant); + + dlclose(handle); + handle = NULL; +} + +TEST(SstFontTest,loadFontSizeInfoHugeERR) +{ + font_size_info info; + void *handle = _utils_load_lib(); + EXPECT_NE((void*)NULL, handle); + + typedef int (*fn_impl)(font_size_info *info, const char *path); + fn_impl load_font_size_info = NULL; + + load_font_size_info = (fn_impl)dlsym(handle, "load_font_size_info"); + char *error = dlerror(); + EXPECT_EQ(0, error); + + int ret = load_font_size_info(&info, "tests/res/font_scale_huge_error.json"); + EXPECT_EQ(0, ret); + +#ifdef TIZEN_WEARABLE + EXPECT_EQ(-90, info.small); + EXPECT_EQ(-110, info.large); +#else + EXPECT_EQ(-80, info.small); + EXPECT_EQ(-150, info.large); +#endif + EXPECT_EQ(-100, info.normal); + EXPECT_EQ(-190, info.huge); + EXPECT_EQ(-250, info.giant); + + dlclose(handle); + handle = NULL; +} + +TEST(SstFontTest,loadFontSizeInfoGiantERR) +{ + font_size_info info; + void *handle = _utils_load_lib(); + EXPECT_NE((void*)NULL, handle); + + typedef int (*fn_impl)(font_size_info *info, const char *path); + fn_impl load_font_size_info = NULL; + + load_font_size_info = (fn_impl)dlsym(handle, "load_font_size_info"); + char *error = dlerror(); + EXPECT_EQ(0, error); + + int ret = load_font_size_info(&info, "tests/res/font_scale_giant_error.json"); + EXPECT_EQ(0, ret); + +#ifdef TIZEN_WEARABLE + EXPECT_EQ(-90, info.small); + EXPECT_EQ(-110, info.large); +#else + EXPECT_EQ(-80, info.small); + EXPECT_EQ(-150, info.large); +#endif + EXPECT_EQ(-100, info.normal); + EXPECT_EQ(-190, info.huge); + EXPECT_EQ(-250, info.giant); + + dlclose(handle); + handle = NULL; +} + diff --git a/tests/sst_gtest_normal_font.cpp b/tests/sst_gtest_normal_font.cpp index a427265..964bad9 100644 --- a/tests/sst_gtest_normal_font.cpp +++ b/tests/sst_gtest_normal_font.cpp @@ -18,15 +18,25 @@ #include #include #include +#include #include "system_settings.h" #include "mocks/sstt_mock.h" +#define FONT_SCALE_CONF_PATH "conf_example/font_scale.json" extern "C" { #include "sst.h" #include "sst_font.h" #include "sst_vconf.h" #include "sst_interface.h" + +typedef struct __font_size_info { + int small; + int normal; + int large; + int huge; + int giant; +} font_size_info; } TEST(SstFontTest, getDefaultfontERR) @@ -137,6 +147,42 @@ TEST(SstFontTest, getFontType) free(val); } +static void* _utils_load_lib() +{ + const char* const path = SETTING_UTILS_SO_FILE_PATH; + void *handle = dlopen(path, RTLD_LAZY | RTLD_GLOBAL); + if (NULL == handle) + ERR("dlopen(%s) Fail", path); + + return handle; +} + +TEST(SstFontTest,loadFontSizeInfo) +{ + font_size_info info; + void *handle = _utils_load_lib(); + EXPECT_NE((void*)NULL, handle); + + typedef int (*fn_impl)(font_size_info *info, const char *path); + fn_impl load_font_size_info = NULL; + + load_font_size_info = (fn_impl)dlsym(handle, "load_font_size_info"); + char *error = dlerror(); + EXPECT_EQ(0, error); + + int ret = load_font_size_info(&info, FONT_SCALE_CONF_PATH); + EXPECT_EQ(0, ret); + + EXPECT_EQ(-80, info.small); + EXPECT_EQ(-150, info.large); + EXPECT_EQ(-100, info.normal); + EXPECT_EQ(-190, info.huge); + EXPECT_EQ(-250, info.giant); + + dlclose(handle); + handle = NULL; +} + TEST(SstFontTest, getDefaultfont) { char *val = NULL; -- 2.7.4