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 <jinwang.an@samsung.com>
--- /dev/null
+{
+ "SMALL" : -80,
+ "NORMAL" : -100,
+ "LARGE" : -150,
+ "HUGE" : -190,
+ "GIANT" : -250
+}
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})
#include <vconf.h>
#include <fontconfig/fontconfig.h>
#include <efl_extension.h>
+#include <json-glib/json-glib.h>
#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
#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;
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)) {
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;
-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 \
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() {
#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
--- /dev/null
+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
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})
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})
--- /dev/null
+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})
--- /dev/null
+{
+ "SMALL" : -80,
+ "NORMAL" : -100,
+ "LARGE" : -150,
+ "HUGE" : -190,
+ "GIANT" : "err_val"
+}
--- /dev/null
+{
+ "SMALL" : -80,
+ "NORMAL" : -100,
+ "LARGE" : -150,
+ "HUGE" : "err_val",
+ "GIANT" : -250
+}
--- /dev/null
+{
+ "SMALL" : -80,
+ "NORMAL" : -100,
+ "LARGE" : "err_val",
+ "HUGE" : -190,
+ "GIANT" : -250
+}
--- /dev/null
+{
+ "SMALL" : -80,
+ "NORMAL" : "err_val",
+ "LARGE" : -150,
+ "HUGE" : -190,
+ "GIANT" : -250
+}
--- /dev/null
+{
+ "SMALL" : "err_val",
+ "NORMAL" : -100,
+ "LARGE" : -150,
+ "HUGE" : -190,
+ "GIANT" : -250
+}
--- /dev/null
+/*
+ * 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 <string.h>
+#include <glib.h>
+#include <gtest/gtest.h>
+#include <vconf.h>
+#include <dlfcn.h>
+
+#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;
+}
+
#include <glib.h>
#include <gtest/gtest.h>
#include <vconf.h>
+#include <dlfcn.h>
#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)
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;