From 7f0886e70ef382a2c24a2907369e040e14e5fc35 Mon Sep 17 00:00:00 2001 From: "jinwang.an" Date: Thu, 21 Dec 2017 20:17:15 +0900 Subject: [PATCH] Upgrade unit test - Move unit test source code - Add Thread unit test - Add unit thread test with gdb - Add Macro to share TCT Change-Id: Ia2d0bb8106a16c78877471114f97691b98002e92 Signed-off-by: jinwang.an Signed-off-by: MyoungJune Park Signed-off-by: jinwang.an --- CMakeLists.txt | 12 +- packaging/capi-system-system-settings.spec | 5 +- src/system_setting_platform.c | 30 +- src/system_setting_unittest.c | 17 - src/system_settings.c | 2463 +------------------- src/system_settings_json.c | 2 + src/system_settings_vconf.c | 8 + system-setting-config.h.in | 1 - system-settings-util/src/system_settings_util.c | 5 - unit_test/CMakeLists.txt | 29 + unit_test/include/unit_test_assert.h | 104 + unit_test/include/unit_test_fw.h | 30 + unit_test/resource/ringtone_sdk.mp3 | Bin 0 -> 213228 bytes unit_test/script/unit_test_gdb_script | 12 + unittest.sh => unit_test/script/unittest.sh | 32 +- unittest2.sh => unit_test/script/unittest2.sh | 0 unit_test/src/unit_test.c | 2755 +++++++++++++++++++++++ unit_test/src/unit_test_fw.c | 120 + 18 files changed, 3099 insertions(+), 2526 deletions(-) delete mode 100644 src/system_setting_unittest.c create mode 100755 unit_test/CMakeLists.txt create mode 100755 unit_test/include/unit_test_assert.h create mode 100644 unit_test/include/unit_test_fw.h create mode 100644 unit_test/resource/ringtone_sdk.mp3 create mode 100644 unit_test/script/unit_test_gdb_script rename unittest.sh => unit_test/script/unittest.sh (72%) rename unittest2.sh => unit_test/script/unittest2.sh (100%) create mode 100644 unit_test/src/unit_test.c create mode 100644 unit_test/src/unit_test_fw.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 5c5d7fe..7982879 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -87,6 +87,7 @@ ADD_DEFINITIONS("-DSETTING_DEF_RES=\"${SETTING_DEF_RES}\"") SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -Wl,--rpath=/usr/lib") IF (CMAKE_BUILD_TYPE STREQUAL "UNITTEST") SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lgcov") + ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/unit_test) ENDIF() #CMAKE_BUILD_TYPE STREQUAL "UNITTEST" INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/${SYSTEM_SETTINGS_UTIL}/include) @@ -114,17 +115,6 @@ SET_TARGET_PROPERTIES(${fw_name} ) IF (CMAKE_BUILD_TYPE STREQUAL "UNITTEST") - INCLUDE(FindPkgConfig) - INCLUDE(FindPkgConfig) - pkg_check_modules(${unit_test} REQUIRED ${requires} elementary ecore) - FOREACH(flag ${${unit_test}_CFLAGS}) - SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") - ENDFOREACH(flag) - ADD_EXECUTABLE(${unit_test} src/system_setting_unittest.c) - TARGET_LINK_LIBRARIES(${unit_test} ${fw_name}) - INSTALL(TARGETS ${unit_test} DESTINATION /usr/local/bin) - - # Coverage Testing INSTALL( DIRECTORY "CMakeFiles" DESTINATION /usr/src/packages/BUILD/capi-system-system-settings-${FULLVER} diff --git a/packaging/capi-system-system-settings.spec b/packaging/capi-system-system-settings.spec index e089e9d..e56a403 100755 --- a/packaging/capi-system-system-settings.spec +++ b/packaging/capi-system-system-settings.spec @@ -97,7 +97,6 @@ VERSION=`echo %{version} | grep Version: | awk '{ print $2 }'` RELEASE=`echo %{version} | grep Version: | awk '{ print $2 }'` MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'` - cmake . -DCMAKE_INSTALL_PREFIX=/usr -DFULLVER=%{version} -DMAJORVER=${MAJORVER} -DCMAKE_LIBDIR=%{_libdir} \ -DCMAKE_INCLUDEDIR=%{_includedir} \ -DTZ_SYS_DATA=%{TZ_SYS_DATA} \ @@ -105,6 +104,9 @@ cmake . -DCMAKE_INSTALL_PREFIX=/usr -DFULLVER=%{version} -DMAJORVER=${MAJORVER} -DTZ_SYS_RO_SHARE=%{TZ_SYS_RO_SHARE} \ -DTZ_SYS_SHARE=%{TZ_SYS_SHARE} \ -DSETTING_DEF_RES=%{TZ_SYS_GLOBALUSER_DATA}/settings \ +%if 0%{?thread_number} + -DN_THREADS=%{thread_number} \ +%endif %if "%{run_tests}" == "1" -DCMAKE_BUILD_TYPE=UNITTEST \ -DUNIT_TEST=1 \ @@ -115,6 +117,7 @@ cmake . -DCMAKE_INSTALL_PREFIX=/usr -DFULLVER=%{version} -DMAJORVER=${MAJORVER} # add empty line %endif + make %{?jobs:-j%jobs} %install diff --git a/src/system_setting_platform.c b/src/system_setting_platform.c index 41b6321..83ccddd 100644 --- a/src/system_setting_platform.c +++ b/src/system_setting_platform.c @@ -373,6 +373,7 @@ int system_setting_del_incoming_call_ringtone(system_settings_key_e key, void *v } +/* LCOV_EXCL_START */ static int _compare_cb(const void *d1, const void *d2) { fileNodeInfo *pNode1 = (fileNodeInfo *)d1; @@ -380,6 +381,7 @@ static int _compare_cb(const void *d1, const void *d2) return strcmp(pNode1->media_name, pNode2->media_name); } +/* LCOV_EXCL_STOP */ /* * get the RINGTONE list @@ -2115,7 +2117,6 @@ void make_ad_id(void) system_setting_set_ad_id(key, uuid_unparsed); //example of setting the value } #endif -/* LCOV_EXCL_START */ int system_setting_set_ads_id(system_settings_key_e key, void *value) { SETTING_TRACE_BEGIN; @@ -2129,7 +2130,6 @@ int system_setting_set_ads_id(system_settings_key_e key, void *value) return SYSTEM_SETTINGS_ERROR_NONE; } -/* LCOV_EXCL_STOP */ int system_setting_set_changed_callback_ads_id(system_settings_key_e key, system_settings_changed_cb callback, void *user_data) { @@ -2394,29 +2394,3 @@ int system_setting_unset_changed_callback_vibration(system_settings_key_e key) return system_setting_vconf_unset_changed_cb(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, 2); } -#ifdef UNIT_TEST -static void simple_test_case(void) -{ - /* a suitable test */ - g_assert(g_bit_storage(1) == 1); - - /* a test with verbose error message */ - g_assert_cmpint(g_bit_storage(1), ==, 1); -} - -static void simple_test_case02(void) -{ - /* a suitable test */ - g_assert(g_bit_storage(1) == 1); - - /* a test with verbose error message */ - g_assert_cmpint(g_bit_storage(1), ==, 1); -} -void unittest_platform() -{ - /* hook up your test functions */ - g_test_add_func("/Simple Test Case", simple_test_case); - g_test_add_func("/Simple Test Case02", simple_test_case02); - /* run tests from the suite */ -} -#endif diff --git a/src/system_setting_unittest.c b/src/system_setting_unittest.c deleted file mode 100644 index ff6a5d8..0000000 --- a/src/system_setting_unittest.c +++ /dev/null @@ -1,17 +0,0 @@ -#include -#include - -extern void unittest_platform(); -extern void unittest_api(); - -int main(int argc, char* argv[]) -{ - ecore_evas_init(); - - g_test_init(&argc, &argv, NULL); - g_test_set_nonfatal_assertions(); - unittest_platform(); - unittest_api(); - - return g_test_run(); -} diff --git a/src/system_settings.c b/src/system_settings.c index 46b05fe..c819770 100644 --- a/src/system_settings.c +++ b/src/system_settings.c @@ -32,8 +32,6 @@ #define SYSTEM_SETTINGS_MAX -1 - - system_setting_s system_setting_table[] = { { @@ -589,7 +587,6 @@ static int _dump_context_node(int key) return -1; } - /* LCOV_EXCL_STOP */ int system_settings_get_item(system_settings_key_e key, system_setting_h *item) @@ -888,10 +885,8 @@ int system_settings_get_value_bool(system_settings_key_e key, bool *value) int system_settings_set_value_string(system_settings_key_e key, const char *value) { LOGE("Enter [%s]", __FUNCTION__); - if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) { + if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER; - } - if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE) return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER; @@ -992,9 +987,8 @@ int system_settings_add_changed_cb(system_settings_key_e key, system_settings_ch char *vconf_string = NULL; system_setting_h system_setting_item; - if (callback == NULL) { + if (callback == NULL) return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER; - } if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE) return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER; @@ -1034,11 +1028,13 @@ int system_settings_remove_changed_cb(system_settings_key_e key, system_settings char *vconf_string = NULL; system_setting_h system_setting_item; - if (callback == NULL) + if (callback == NULL) { return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER; + } - if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE) + if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE) { return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER; + } int ret = system_settings_get_item(key, &system_setting_item); if (ret != 0) { @@ -1107,2450 +1103,3 @@ int system_settings_delete_value_string(system_settings_key_e key, const char* v return system_settings_del_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void *)value); } -/////////////////////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////////////////////// -#ifdef UNIT_TEST - -static int my_assert_ret(int retcode) -{ - if (retcode == SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED) { - g_assert_cmpint(retcode, ==, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED); - } else { - g_assert_cmpint(retcode, ==, SYSTEM_SETTINGS_ERROR_NONE); - } - return 1; -} - -static GMainLoop* multi_main_loop = NULL; -static bool _callback_called = false; -//static char *new_ringtonepath = "/usr/apps/org.tizen.setting/shared/res/settings/Ringtones/Basic_Bell.ogg"; -static char *new_ringtonepath = "/opt/usr/data/settings/Ringtones/ringtone_sdk.mp3"; - -/** - * @function utc_system_settings_startup - * @description Called before each test - * @parameter NA - * @return NA - */ -static void utc_system_settings_startup(void) -{ -} - -/** - * @function utc_system_settings_cleanup - * @description Called after each test - * @parameter NA - * @return NA - */ -static void utc_system_settings_cleanup(void) -{ -} - - -static gboolean timeout_callback(gpointer data) -{ - _callback_called = false; - /*g_main_loop_quit(main_loop);*/ - return FALSE; -} - - -static void utc_system_settings_changed_callback(system_settings_key_e key, void *user_data) -{ - _callback_called = true; - /*g_main_loop_quit(main_loop);*/ -} - -/** - * TEST GETTING SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE - */ -/** - * @testcase utc_system_settings_get_value_string_p1 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE is able to get the property - */ -static void utc_system_settings_get_value_string_p1(void) -{ - char *value = NULL; - - int retcode = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE, &value); - //assert_eq(retcode, SYSTEM_SETTINGS_ERROR_NONE); - my_assert_ret(retcode); - g_assert(value != NULL); - free(value); -} - -/** - * TEST GETTING SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY - */ -/** - * @testcase utc_system_settings_get_value_string_p2 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY is able to get the property - */ -static void utc_system_settings_get_value_string_p2(void) -{ - char *value = NULL; - - int retcode = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, &value); - //assert_eq(retcode, SYSTEM_SETTINGS_ERROR_NONE); - my_assert_ret(retcode); - g_assert(value != NULL); - free(value); -} - -/** - * TEST GETTING SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE - */ -/** - * @testcase utc_system_settings_get_value_string_p3 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE is able to get the property - */ -static void utc_system_settings_get_value_string_p3(void) -{ - char *value = NULL; - - int retcode = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, &value); - //assert_eq(retcode, SYSTEM_SETTINGS_ERROR_NONE); - my_assert_ret(retcode); - g_assert(value != NULL); - free(value); -} - -/** - * TEST GETTING SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE - */ -/** - * @testcase utc_system_settings_get_value_string_p4 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE is able to get the property - */ -static void utc_system_settings_get_value_string_p4(void) -{ - char *value = NULL; - - int retcode = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, &value); - //assert_eq(retcode, SYSTEM_SETTINGS_ERROR_NONE); - my_assert_ret(retcode); - g_assert(value != NULL); - free(value); -} - -/** - * TEST SETTING SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN - */ -/** - * @testcase utc_system_settings_get_value_string_p5 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN is able to get the property. - */ -static void utc_system_settings_get_value_string_p5(void) -{ - char *value = NULL; - - int retcode = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN, &value); - //assert_eq(retcode, SYSTEM_SETTINGS_ERROR_NONE); - my_assert_ret(retcode); - g_assert(value != NULL); - free(value); -} - -/** - * @testcase utc_system_settings_get_value_string_p11 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_DEVICE_NAME is able to get the property. - */ -static void utc_system_settings_get_value_string_p11(void) -{ - char *value = NULL; - - int retcode = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_DEVICE_NAME, &value); - //assert_eq(retcode, SYSTEM_SETTINGS_ERROR_NONE); - my_assert_ret(retcode); - g_assert(value != NULL); - free(value); -} - - -/** - * @testcase utc_system_settings_get_value_string_p7 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION is able to get the property. - */ -static void utc_system_settings_get_value_string_p7(void) -{ - char *value = NULL; - - int retcode = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION, &value); - my_assert_ret(retcode); - free(value); -} - -/** - * @testcase utc_system_settings_get_value_string_p6 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_LOCALE_TIMEZON is able to get the property. - */ -static void utc_system_settings_get_value_string_p6(void) -{ - char *value = NULL; - int retcode = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE, &value); - my_assert_ret(retcode); - free(value); -} - - -/** - * @testcase utc_system_settings_get_value_string_p10 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN is able to get the property. - */ -static void utc_system_settings_get_value_string_p10(void) -{ - char *value = NULL; - - int retcode = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN, &value); - my_assert_ret(retcode); - if (retcode == SYSTEM_SETTINGS_ERROR_NONE) - g_assert(value != NULL); - free(value); -} - - -/** - * @testcase utc_system_settings_get_value_string_p8 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_FONT_TYPE is able to get the property. - */ -static void utc_system_settings_get_value_string_p8(void) -{ - char *value = NULL; - - int retcode = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, &value); - my_assert_ret(retcode); - g_assert(value != NULL); - free(value); -} - - -/** - * @testcase utc_system_settings_get_value_string_p9 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE is able to get the property. - */ -static void utc_system_settings_get_value_string_p9(void) -{ - char *value = NULL; - - int retcode = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE, &value); - my_assert_ret(retcode); - if (retcode == SYSTEM_SETTINGS_ERROR_NONE) - g_assert(value != NULL); - free(value); -} - - -/** - * @testcase utc_system_settings_get_value_string_n - * @since_tizen 2.3 - * @description check if system_settings_get_value_string is able to handle invalid parameters. - */ -static void utc_system_settings_get_value_string_n(void) -{ - int retcode = system_settings_get_value_string(-1, NULL); - //assert_neq(retcode, SYSTEM_SETTINGS_ERROR_NONE); - g_assert(retcode != SYSTEM_SETTINGS_ERROR_NONE); -} - - -/** - * @testcase utc_system_settings_get_value_bool_p1 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION is able to get the property. - */ -static void utc_system_settings_get_value_bool_p1(void) -{ - bool value = false; - - int retcode = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION, &value); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_get_value_bool_p2 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED is able to get the property. - */ -static void utc_system_settings_get_value_bool_p2(void) -{ - bool value = false; - - int retcode = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED, &value); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_get_value_bool_p3 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_SOUND_LOCK is able to get the property. - */ -static void utc_system_settings_get_value_bool_p3(void) -{ - bool value = false; - - int retcode = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_SOUND_LOCK, &value); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_get_value_bool_p4 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO is able to get the property. - */ -static void utc_system_settings_get_value_bool_p4(void) -{ - bool value = false; - - int retcode = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO, &value); - my_assert_ret(retcode); -} - - -/** - * @testcase utc_system_settings_get_value_bool_p5 - * @since_tizen 2.3 - * check if SYSTEM_SETTINGS_KEY_SOUND_TOUCH is able to get the property. - */ -static void utc_system_settings_get_value_bool_p5(void) -{ - bool value = false; - - int retcode = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_SOUND_TOUCH, &value); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_get_value_bool_p6 - * @since_tizen 2.3 - * check if SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE is able to get the property. - */ -static void utc_system_settings_get_value_bool_p6(void) -{ - bool value = false; - - int retcode = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, &value); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_get_value_bool_p7 - * @since_tizen 2.3 - * check if SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE is able to get the property. - */ -static void utc_system_settings_get_value_bool_p7(void) -{ - bool value = false; - - int retcode = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE, &value); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_get_value_bool_p8 - * @since_tizen 2.3 - * check if SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION is able to get the property. - */ -static void utc_system_settings_get_value_bool_p8(void) -{ - bool value = false; - - int retcode = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, &value); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_get_value_bool_p9 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_MOTION_ENABLED is able to get the property. - */ -static void utc_system_settings_get_value_bool_p9(void) -{ - bool value = false; - - int retcode = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ENABLED, &value); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_get_value_bool_p10 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED is able to get the property. - */ -static void utc_system_settings_get_value_bool_p10(void) -{ - bool value = false; - - int retcode = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED, &value); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_get_value_bool_n - * @since_tizen 2.3 - * @description check if system_settings_get_value_bool is able to handle invalid parameters. - */ -static void utc_system_settings_get_value_bool_n(void) -{ - int retcode = system_settings_get_value_bool(-1, NULL); - //assert_neq(retcode, SYSTEM_SETTINGS_ERROR_NONE); - g_assert(retcode != SYSTEM_SETTINGS_ERROR_NONE); -} - - -/** - * @testcase utc_system_settings_get_value_int_p1 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD is able to get the property. - */ -static void utc_system_settings_get_value_int_p1(void) -{ - int value = 0; - - int retcode = system_settings_get_value_int(SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD, &value); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_get_value_int_p2 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_FONT_SIZE is able to get the property. - */ -static void utc_system_settings_get_value_int_p2(void) -{ - int font_size = 0; - - int retcode = system_settings_get_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, &font_size); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_get_value_n - * @since_tizen 2.3 - * @description check if system_settings_get_value_int is able to handle invalid parameters. - */ -static void utc_system_settings_get_value_n(void) -{ - int retcode = system_settings_get_value_int(-1, NULL); - //assert_neq(retcode, SYSTEM_SETTINGS_ERROR_NONE); - g_assert(retcode != SYSTEM_SETTINGS_ERROR_NONE); -} - - -/** - * @testcase utc_system_settings_get_value_int_p3 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME is able to get the property. - */ -static void utc_system_settings_get_value_int_p3(void) -{ - int value; - int nRetVal = system_settings_get_value_int(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, &value); - my_assert_ret(nRetVal); -} - - -/** - * @testcase utc_system_settings_get_value_bool_p11 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR is able to get the property - */ -static void utc_system_settings_get_value_bool_p11(void) -{ - bool value = false; - - int retcode = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, &value); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_set_changed_cb_p1 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION is able to set the callback for change-notification. - */ -static void utc_system_settings_set_changed_cb_p1(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_p1 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION is able to unset the callback for change-notification. - */ -static void utc_system_settings_unset_changed_cb_p1(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_set_changed_cb_p2 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE is able to set the callback for change-notification. - */ -static void utc_system_settings_set_changed_cb_p2(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_p2 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE is able to unset the callback for change-notification. - */ -static void utc_system_settings_unset_changed_cb_p2(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_set_changed_cb_p3 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN is able to set the callback for change-notification. - */ -static void utc_system_settings_set_changed_cb_p3(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_p3 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN is able to unset the callback for change-notification. - */ -static void utc_system_settings_unset_changed_cb_p3(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_set_changed_cb_p4 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN is able to set the callback for change-notification. - */ -static void utc_system_settings_set_changed_cb_p4(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_LOCK_SCREEN_unset_changed_cb_p - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_WALLPAPER is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_WALLPAPER is able to unset the callback for change-notification. - */ -static void utc_system_settings_LOCK_SCREEN_unset_changed_cb_p(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_set_changed_cb_p5 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_FONT_SIZE is able to set the callback for change-notification. - */ -static void utc_system_settings_set_changed_cb_p5(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_FONT_SIZE, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_p4 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_FONT_SIZE is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_FONT_SIZE is able to unset the callback for change-notification. - */ -static void utc_system_settings_unset_changed_cb_p4(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_FONT_SIZE, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_FONT_SIZE); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_set_changed_cb_p6 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_FONT_TYPE is able to set the callback for change-notification. - */ -static void utc_system_settings_set_changed_cb_p6(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_FONT_TYPE, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_p5 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_FONT_TYPE is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_FONT_TYPE is able to unset the callback for change-notification. - */ -static void utc_system_settings_unset_changed_cb_p5(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_FONT_TYPE, - utc_system_settings_changed_callback, NULL); - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_FONT_TYPE); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_set_changed_cb_p7 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE is able to set the callback for change-notification. - */ -static void utc_system_settings_set_changed_cb_p7(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_p6 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE is able to unset the callback for change-notification. - */ -static void utc_system_settings_unset_changed_cb_p6(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_set_changed_cb_p8 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED is able to set the callback for change-notification. - */ -static void utc_system_settings_set_changed_cb_p8(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_p7 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED is able to unset the callback for change-notification. - */ -static void utc_system_settings_unset_changed_cb_p7(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_set_changed_cb_p9 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED is able to set callback for getting notification of change - */ -static void utc_system_settings_set_changed_cb_p9(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_p8 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED is able to unset the callback for change-notification. - */ -static void utc_system_settings_unset_changed_cb_p8(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_set_changed_cb_p10 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP is able to set callback for getting notification of change - */ -static void utc_system_settings_set_changed_cb_p10(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_p9 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP is able to unset the callback for change-notification. - */ -static void utc_system_settings_unset_changed_cb_p9(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_set_changed_cb_p11 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY is able to set callback for getting notification of change - */ -static void utc_system_settings_set_changed_cb_p11(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_p10 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY is able to set callback for getting notification of change and unset doing - */ -static void utc_system_settings_unset_changed_cb_p10(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_set_changed_cb_p12 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE is able to set the callback for change-notification. - */ -static void utc_system_settings_set_changed_cb_p12(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_p11 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE is able to unset the callback for change-notification. - */ -static void utc_system_settings_unset_changed_cb_p11(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_set_changed_cb_p13 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR is able to set the callback for change-notification. - */ -static void utc_system_settings_set_changed_cb_p13(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); - -} - - -/** - * SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR - */ -/** - * @testcase utc_system_settings_unset_changed_cb_p12 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR is able to unset the callback for change-notification. - */ -static void utc_system_settings_unset_changed_cb_p12(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_set_changed_cb_p14 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_TIME_CHANGED is able to set the callback for change-notification. - */ -static void utc_system_settings_set_changed_cb_p14(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_TIME_CHANGED, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_p13 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_TIME_CHANGED is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_TIME_CHANGED is able to unset the callback for change-notification. - */ -static void utc_system_settings_unset_changed_cb_p13(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_TIME_CHANGED, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_TIME_CHANGED); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_set_changed_cb_p15 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_SOUND_LOCK is able to set the callback for change-notification. - */ -static void utc_system_settings_set_changed_cb_p15(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_LOCK, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_p14 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_SOUND_LOCK is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_SOUND_LOCK is able to unset the callback for change-notification. - */ -static void utc_system_settings_unset_changed_cb_p14(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_LOCK, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_LOCK); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_set_changed_cb_p16 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE is able to set the callback for change-notification. - */ -static void utc_system_settings_set_changed_cb_p16(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); - -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_p15 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE is able to unset the callback for change-notification. - */ -static void utc_system_settings_unset_changed_cb_p15(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE); - my_assert_ret(retcode); -} - - -/** - * @testcase utc_system_settings_set_changed_cb_p17 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_SOUND_TOUCH is able to set the callback for change-notification. - */ -static void utc_system_settings_set_changed_cb_p17(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_TOUCH, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_p16 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_SOUND_TOUCH is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_SOUND_TOUCH is able to unset the callback for change-notification. - */ -static void utc_system_settings_unset_changed_cb_p16(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_TOUCH, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_TOUCH); - my_assert_ret(retcode); -} - - -/** - * @testcase utc_system_settings_set_changed_cb_p18 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO is able to set the callback for change-notification. - */ -static void utc_system_settings_set_changed_cb_p18(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_p17 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO is able to unset the callback for change-notification. - */ -static void utc_system_settings_unset_changed_cb_p17(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO); - my_assert_ret(retcode); -} - - -/** - * @testcase utc_system_settings_set_changed_cb_p19 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME is able to set the callback for change-notification. - */ -static void utc_system_settings_set_changed_cb_p19(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_p18 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME is able to unset the callback for change-notification. - */ -static void utc_system_settings_unset_changed_cb_p18(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME); - my_assert_ret(retcode); -} - - -/** - * @testcase utc_system_settings_set_changed_cb_p20 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION is able to set the callback for change-notification. - */ -static void utc_system_settings_set_changed_cb_p20(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_p19 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION is able to unset the callback for change-notification. - */ -static void utc_system_settings_unset_changed_cb_p19(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION); - my_assert_ret(retcode); -} - - -/** - * @testcase utc_system_settings_set_changed_cb_p21 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD is able to set the callback for change-notification. - */ -static void utc_system_settings_set_changed_cb_p21(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_p20 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD is able to unset the callback for change-notification. - */ -static void utc_system_settings_unset_changed_cb_p20(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD); - my_assert_ret(retcode); -} - - -/** - * @testcase utc_system_settings_set_changed_cb_p22 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_DEVICE_NAME is able to set the callback for change-notification. - */ -static void utc_system_settings_set_changed_cb_p22(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_DEVICE_NAME, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_p21 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_DEVICE_NAME is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_DEVICE_NAME is able to unset the callback for change-notification. - */ -static void utc_system_settings_unset_changed_cb_p21(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_DEVICE_NAME, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_DEVICE_NAME); - my_assert_ret(retcode); -} - - -/** - * @testcase utc_system_settings_set_changed_cb_p23 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_MOTION_ENABLED is able to set the callback for change-notification. - */ -static void utc_system_settings_set_changed_cb_p23(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_MOTION_ENABLED, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_p22 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_MOTION_ENABLED is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_MOTION_ENABLED is able to unset the callback for change-notification. - */ -static void utc_system_settings_unset_changed_cb_p22(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_MOTION_ENABLED, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_MOTION_ENABLED); - my_assert_ret(retcode); -} - - -/** - * @testcase utc_system_settings_set_changed_cb_p24 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE is able to set the callback for change-notification. - */ -static void utc_system_settings_set_changed_cb_p24(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_p23 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE is able to unset the callback for change-notification. - */ -static void utc_system_settings_unset_changed_cb_p23(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE); - my_assert_ret(retcode); -} - - -/** - * @testcase utc_system_settings_set_changed_cb_p25 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION is able to set the callback for change-notification. - */ -static void utc_system_settings_set_changed_cb_p25(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_p24 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION is able to unset the callback for change-notification. - */ -static void utc_system_settings_unset_changed_cb_p24(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION); - my_assert_ret(retcode); -} - - - -/** - * @testcase utc_system_settings_set_value_string_p1 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE is able to get the property - */ -static void utc_system_settings_set_value_string_p1(void) -{ - int ret; - ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, new_ringtonepath); - my_assert_ret(ret); - - char *ret_ringtonepath = NULL; - ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, &ret_ringtonepath); - my_assert_ret(ret); - - if (ret_ringtonepath != NULL && 0 == strcmp(ret_ringtonepath, new_ringtonepath)) { - g_assert(1); - } else { - g_assert(0); - } - return; -} - - -/** - * TEST SETTING SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN - */ -/** - * @testcase utc_system_settings_set_value_string_n2 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN is able to get the property. - * check if SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN is able to set the property in error-case. - */ -static void utc_system_settings_set_value_string_n2(void) -{ - int ret; - char *wallpaper = NULL; - - char *wrong_wallpaper_path = "/wrongpath/aaa.png"; - ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN, wrong_wallpaper_path); - g_assert(ret != SYSTEM_SETTINGS_ERROR_NONE); - - ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN, &wallpaper); - g_assert(ret == SYSTEM_SETTINGS_ERROR_NONE); - free(wallpaper); - return; -} - -/** - * SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN - */ -/** - * @testcase utc_system_settings_set_value_string_n3 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN is able to get the property. - * check if SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN is able to set the property in error-case. - */ -static void utc_system_settings_set_value_string_n3(void) -{ - int ret; - char *wallpaper = NULL; - - char *wrong_wallpaper_path = "/wrongpath/aaa.png"; - ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN, wrong_wallpaper_path); - g_assert(ret != SYSTEM_SETTINGS_ERROR_NONE); - - ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN, &wallpaper); - //assert_eq(ret, SYSTEM_SETTINGS_ERROR_NONE); - free(wallpaper); - return; -} - -/** - * SYSTEM_SETTINGS_KEY_FONT_TYPE - */ -/** - * @testcase utc_system_settings_set_value_string_n4 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_FONT_TYPE is able to get the property. - * check if SYSTEM_SETTINGS_KEY_FONT_TYPE is able to set the property in error-case. - */ -static void utc_system_settings_set_value_string_n4(void) -{ - int ret; - - char *wrong_font_name = "WrongFontName"; - ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, wrong_font_name); - g_assert(ret != SYSTEM_SETTINGS_ERROR_NONE); - - char *font_name = NULL; - ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, &font_name); - //assert_eq(ret, SYSTEM_SETTINGS_ERROR_NONE); - free(font_name); - return; -} - - - -/** - * @testcase utc_system_settings_set_value_bool_n1 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION is able to get the property. - * check if SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION is able to set the property in a normal-case. - */ -static void utc_system_settings_set_value_bool_n1(void) -{ - int ret; - bool state = true; - ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION, state); - my_assert_ret(ret); - - bool ret_state = false; - ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION, &ret_state); - my_assert_ret(ret); - return; -} - - -/** - * @testcase utc_system_settings_set_value_bool_n2 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE is able to get the property. - * check if SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE is able to set the property in an exceptional-case. (not supported) - */ -static void utc_system_settings_set_value_bool_n2(void) -{ - int ret; - bool state = true; - ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE, state); - my_assert_ret(ret); - - bool ret_state = false; - ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE, &ret_state); - my_assert_ret(ret); - return; -} - - -/** - * @testcase utc_system_settings_set_value_bool_n3 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_MOTION_ENABLED is able to get the property. - * check if SYSTEM_SETTINGS_KEY_MOTION_ENABLED is able to set the property in an exceptional-case. (not supported) - */ -static void utc_system_settings_set_value_bool_n3(void) -{ - int ret; - bool state = true; - ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ENABLED, state); - my_assert_ret(ret); - - bool ret_state = false; - ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ENABLED, &ret_state); - my_assert_ret(ret); - return; -} - -/** - * @testcase utc_system_settings_set_value_bool_n4 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_SOUND_TOUCH is able to get the property. - * check if SYSTEM_SETTINGS_KEY_SOUND_TOUCH is able to set the property in an exceptional-case. (not supported) - */ -static void utc_system_settings_set_value_bool_n4(void) -{ - int ret; - bool state = true; - ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_SOUND_TOUCH, state); - my_assert_ret(ret); - - bool ret_state = false; - ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_SOUND_TOUCH, &ret_state); - my_assert_ret(ret); - return; -} - - -/** - * @testcase utc_system_settings_set_value_bool_n5 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_SOUND_LOCK is able to get the property. - * check if SYSTEM_SETTINGS_KEY_SOUND_LOCK is able to set the property in an exceptional-case. (not supported) - */ -static void utc_system_settings_set_value_bool_n5(void) -{ - int ret; - bool state = true; - ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_SOUND_LOCK, state); - my_assert_ret(ret); - - bool ret_state = false; - ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_SOUND_LOCK, &ret_state); - my_assert_ret(ret); - return; -} - -/** - * @testcase utc_system_settings_set_value_bool_n6 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS is able to get the property. - * check if SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS is able to set the property in an exceptional-case. (not supported) - */ -static void utc_system_settings_set_value_bool_n6(void) -{ - int ret; - bool state = true; - ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS , state); - my_assert_ret(ret); - - bool ret_state = false; - ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS , &ret_state); - my_assert_ret(ret); - return; -} - - -/** - * @testcase utc_system_settings_set_value_string_n8 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE is able to get the property. - * check if SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE is able to set the property in an exceptional-case. (not supported) - */ -static void utc_system_settings_set_value_string_n8(void) -{ - int ret; - char *new_font = "DefaultFontName"; - ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE, new_font); - //my_assert_ret(ret); - g_assert_cmpint(ret, !=, SYSTEM_SETTINGS_ERROR_NONE); - - char *ret_font = NULL; - ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE, &ret_font); - g_assert_cmpint(ret, ==, SYSTEM_SETTINGS_ERROR_NONE); - return; - -#if 0 - int ret; - char *new_font = "DefaultFontName"; - ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE, new_font); - //assert_eq(ret, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); - - char *ret_font = NULL; - ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE, &ret_font); - int ret2 = my_assert_ret(ret); - return ret2; - //return; -#endif -} - - -/** - * @testcase utc_system_settings_set_value_string_n7 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE is able to get the property. - * check if SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE is able to set the property in an exceptional-case. (not supported) - */ -static void utc_system_settings_set_value_string_n7(void) -{ - int ret; - char *new_zone = "Asia/Seoul"; - ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE, new_zone); - my_assert_ret(ret); - - char *ret_device = NULL; - ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE, &ret_device); - my_assert_ret(ret); - return; -} - - -/** - * @testcase utc_system_settings_set_value_int_n1 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_TIME_CHANGED is able to get the property. - * check if SYSTEM_SETTINGS_KEY_TIME_CHANGED is able to set the property in an exceptional-case. (not supported) - */ -static void utc_system_settings_set_value_int_n1(void) -{ - int ret; - int value = 3600; - ret = system_settings_set_value_int(SYSTEM_SETTINGS_KEY_TIME_CHANGED, value); - my_assert_ret(ret); - - int time_changed; - ret = system_settings_get_value_int(SYSTEM_SETTINGS_KEY_TIME_CHANGED, &time_changed); - my_assert_ret(ret); - - return; -} - - -/** - * SYSTEM_SETTINGS_KEY_DEVICE_NAME - * check_SYSTEM_SETTINGS_ERROR_CALL_UNSUPPORTED_API - */ -/** - * @testcase utc_system_settings_set_value_string_n5 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_DEVICE_NAME is able to get the property. - * check if SYSTEM_SETTINGS_KEY_DEVICE_NAME is able to set the property in an exceptional-case. (not supported) - */ -static void utc_system_settings_set_value_string_n5(void) -{ - int ret; - char *new_device = "Tizen222"; - ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_DEVICE_NAME, new_device); - my_assert_ret(ret); - - char *ret_device = NULL; - ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_DEVICE_NAME, &ret_device); - - if (ret_device != NULL && 0 == strcmp(ret_device, new_device)) { - g_assert(0); - } else { - g_assert(1); - } - return; -} - - -/** - * @testcase utc_system_settings_set_value_string_p2 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE is able to get the property. - * check if SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE is able to set the property in a normal-case. - */ -static void utc_system_settings_set_value_string_p2(void) -{ - int ret; - ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE, new_ringtonepath); - my_assert_ret(ret); - - char *ret_ringtonepath = NULL; - ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE, &ret_ringtonepath); - - if (ret_ringtonepath != NULL && 0 == strcmp(ret_ringtonepath, new_ringtonepath)) { - g_assert(1); - } else { - g_assert(0); - } - return; -} - - -/** - * @testcase utc_system_settings_set_value_string_p3 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY is able to get the property. - * check if SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY is able to set the property in a normal-case. - */ -static void utc_system_settings_set_value_string_p3(void) -{ - int ret; - char *new_country = "ko_KR"; - - /* backup */ - char *backup = NULL; - ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, &backup); - my_assert_ret(ret); - - ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, new_country); - my_assert_ret(ret); - - char *ret_country = NULL; - ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, &ret_country); - my_assert_ret(ret); - - if (ret_country != NULL && 0 == strcmp(ret_country, new_country)) { - g_assert(1); - } else { - g_assert(0); - } - - ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, backup); - my_assert_ret(ret); - return; -} - - -/** - * @testcase utc_system_settings_set_value_string_p4 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE is able to get the property. - * check if SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE is able to set the property in a normal-case. - */ -static void utc_system_settings_set_value_string_p4(void) -{ - int ret; - char *new_country = "ko_KR"; - - /* backup */ - char *backup = NULL; - ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, &backup); - my_assert_ret(ret); - - ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, new_country); - my_assert_ret(ret); - - char *ret_country = NULL; - ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, &ret_country); - my_assert_ret(ret); - - if (ret_country != NULL && 0 == strcmp(ret_country, new_country)) { - g_assert(1); - } else { - g_assert(0); - } - - ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, backup); - my_assert_ret(ret); - return; -} - - -/** - * @testcase utc_system_settings_set_value_bool_p1 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO is able to set the property. - * check if SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO is able to get the property. - */ -static void utc_system_settings_set_value_bool_p1(void) -{ - int ret; - bool state = true; - ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO, state); - my_assert_ret(ret); - - bool ret_state = false; - ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO, &ret_state); - my_assert_ret(ret); - - //assert_eq(state, ret_state); - - return; -} - - -/** - * @testcase utc_system_settings_set_value_bool_p2 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE is able to set the property. - * check if SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE is able to get the property. - */ -static void utc_system_settings_set_value_bool_p2(void) -{ - int ret; - bool state = true; - ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, state); - my_assert_ret(ret); - - bool ret_state = false; - ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, &ret_state); - my_assert_ret(ret); - - //assert_eq(state, ret_state); - - /* roll back */ - ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, !state); - my_assert_ret(ret); - - ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, &ret_state); - //assert_eq(ret_state, !state); - - return; -} - - -/** - * @testcase utc_system_settings_set_changed_cb_n - * @since_tizen 2.3 - * @description check if system_settings_set_changed_cb is able to handle invalid parameters. - */ -static void utc_system_settings_set_changed_cb_n(void) -{ - int retcode = system_settings_set_changed_cb(-1, NULL, NULL); - g_assert(retcode != SYSTEM_SETTINGS_ERROR_NONE); - return; -} - - - -/** - * @testcase utc_system_settings_get_value_int_p4 - * @since_tizen 3.0 - * @description check if SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE is able to get the property. - */ -static void utc_system_settings_get_value_int_p4(void) -{ - int value = 0; - int nRetVal = system_settings_get_value_int(SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE, &value); - my_assert_ret(nRetVal); - return; -} - - - -/** - * @testcase utc_system_settings_set_value_int_p1 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME is able to get the property. - */ -static void utc_system_settings_set_value_int_p1(void) -{ - int nRetVal = system_settings_set_value_int(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, 30); - my_assert_ret(nRetVal); - - int value; - nRetVal = system_settings_get_value_int(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, &value); - //assert_eq(value, 30); - return; -} - - -/** - * @testcase utc_system_settings_set_value_int_n2 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME is able to set the properties with exceptional cases. - */ -static void utc_system_settings_set_value_int_n2(void) -{ - int ret = system_settings_set_value_int(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, -5); - g_assert(ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); - - ret = system_settings_set_value_int(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, 601); - g_assert(ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); - - ret = system_settings_set_value_int(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, 0); - g_assert(ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); - return; -} - - -/** - * @testcase utc_system_settings_set_value_bool_p3 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR is able to set the property. - * check if SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR is able to get the property. - */ -static void utc_system_settings_set_value_bool_p3(void) -{ - int ret; - bool state = true; - ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, state); - my_assert_ret(ret); - - bool ret_state = false; - ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, &ret_state); - my_assert_ret(ret); - - //assert_eq(state, ret_state); - - /* roll back */ - ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, !state); - my_assert_ret(ret); - - ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, &ret_state); - //assert_eq(ret_state, !state); - - return; -} - - -/** - * @testcase utc_system_settings_set_value_bool_p4 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED is able to set the property. - * check if SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED is able to get the property. - */ -static void utc_system_settings_set_value_bool_p4(void) -{ - int ret; - - /* get current state */ - bool ret_state = false; - ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED, &ret_state); - my_assert_ret(ret); - - - bool state = !ret_state; - ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED, state); - my_assert_ret(ret); - - /* roll back */ - ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED, ret_state); - my_assert_ret(ret); - - g_assert(state != ret_state); - - return; -} - - -/** - * @testcase utc_system_settings_set_value_bool_p5 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION is able to set the property. - * check if SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION is able to get the property. - */ -static void utc_system_settings_set_value_bool_p5(void) -{ - int ret; - - /* get current state */ - bool ret_state = false; - ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, &ret_state); - my_assert_ret(ret); - - - bool state = !ret_state; - ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, state); - my_assert_ret(ret); - - - /* roll back */ - ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, ret_state); - my_assert_ret(ret); - - g_assert(state != ret_state); - return; -} - - -/** - * @testcase utc_system_settings_set_value_bool_p6 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_VIBRATION is able to set the property. - * check if SYSTEM_SETTINGS_KEY_VIBRATION is able to get the property. - */ -static void utc_system_settings_set_value_bool_p6(void) -{ - int ret; - - /* get current state */ - bool ret_state = false; - ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_VIBRATION, &ret_state); - my_assert_ret(ret); - - - bool state = !ret_state; - ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_VIBRATION, state); - my_assert_ret(ret); - - - /* roll back */ - ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_VIBRATION, ret_state); - my_assert_ret(ret); - - g_assert(state != ret_state); - return; -} - - -/** - * @testcase utc_system_settings_set_value_int_p2 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_FONT_SIZE is able to set the property. - * check if SYSTEM_SETTINGS_KEY_FONT_SIZE is able to get the property. - */ -static void utc_system_settings_set_value_int_p2(void) -{ - int ret = -1; - int backup; - int arr[] = { - SYSTEM_SETTINGS_FONT_SIZE_SMALL, - SYSTEM_SETTINGS_FONT_SIZE_NORMAL, - SYSTEM_SETTINGS_FONT_SIZE_LARGE, - SYSTEM_SETTINGS_FONT_SIZE_HUGE, - SYSTEM_SETTINGS_FONT_SIZE_GIANT - }; - - srand(time(NULL)); - int size = sizeof(arr)/sizeof(arr[0]); - int sel = rand() % size; - - /* backup */ - ret = system_settings_get_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, &backup); - my_assert_ret(ret); - - /* change font at random */ - ret = system_settings_set_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, sel); - my_assert_ret(ret); - - /* check if selection and result are identical. */ - int after; - ret = system_settings_get_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, &after); - //assert_eq(sel, after); - - /* roll back to backup */ - ret = system_settings_set_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, backup); - my_assert_ret(ret); - - return; -} - - -/** - * @testcase utc_system_settings_set_value_string_n6 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION is able to set the property. - * check if SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION is able to get the property. - */ -static void utc_system_settings_set_value_string_n6(void) -{ - int ret; - ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION, new_ringtonepath); - my_assert_ret(ret); - //assert_eq(ret, SYSTEM_SETTINGS_ERROR_NONE); - - char *ret_ringtonepath = NULL; - ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION, &ret_ringtonepath); - - if (ret_ringtonepath != NULL && 0 == strcmp(ret_ringtonepath, new_ringtonepath)) { - my_assert_ret(0); - } else { - my_assert_ret(1); - } - return; -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_n - * @since_tizen 2.3 - * @description check if system_settings_unset_changed_cb is able to handle invalid parameters. - */ -static void utc_system_settings_unset_changed_cb_n(void) -{ - int retcode = system_settings_unset_changed_cb(-1); - g_assert(retcode != SYSTEM_SETTINGS_ERROR_NONE); - return; -} - - - -/** - * @testcase utc_system_settings_set_changed_cb_p27 - * @since_tizen 3.0 - * @description check if SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE is able to set the callback for change-notification. - */ -static void utc_system_settings_set_changed_cb_p27(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); - - return; -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_p26 - * @since_tizen 3.0 - * @description check if SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE is able to unset the callback for change-notification. - */ -static void utc_system_settings_unset_changed_cb_p26(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE); - my_assert_ret(retcode); - - return; -} - -/** - * @testcase utc_system_settings_set_changed_cb_p29 - * @since_tizen 3.0 - * @description check if SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE_PKG_LIST is able to set the callback for change-notification. - */ -static void utc_system_settings_set_changed_cb_p29(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE_PKG_LIST, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); - - return; -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_p28 - * @since_tizen 3.0 - * @description check if SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE_PKG_LIST is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE_PKG_LIST is able to unset the callback for change-notification. - */ -static void utc_system_settings_unset_changed_cb_p28(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE_PKG_LIST, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE_PKG_LIST); - my_assert_ret(retcode); - - return; -} - -/** - * @testcase utc_system_settings_set_changed_cb_p31 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS is able to set the callback for change-notification. - */ -static void utc_system_settings_set_changed_cb_p31(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); - - return; -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_p30 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS is able to unset the callback for change-notification. - */ -static void utc_system_settings_unset_changed_cb_p30(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS); - my_assert_ret(retcode); - - return; -} - -/** - * @testcase utc_system_settings_set_changed_cb_p33 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_VIBRATION is able to set the callback for change-notification. - */ -static void utc_system_settings_set_changed_cb_p33(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_VIBRATION, - utc_system_settings_changed_callback, NULL); - my_assert_ret(retcode); - - return; -} - - -/** - * @testcase utc_system_settings_unset_changed_cb_p32 - * @since_tizen 2.3 - * @description check if SYSTEM_SETTINGS_KEY_VIBRATION is able to set the callback for change-notification. - * check if SYSTEM_SETTINGS_KEY_VIBRATION is able to unset the callback for change-notification. - */ -static void utc_system_settings_unset_changed_cb_p32(void) -{ - int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_VIBRATION, - utc_system_settings_changed_callback, NULL); - - retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_VIBRATION); - my_assert_ret(retcode); - - return; -} - -static int cb_count; -static bool system_setting_get_ringtone_list_cb(int index, const char* data, void *user_data) -{ - cb_count += 1; -/* printf("%s\n", (char*)data); */ - return true; -} - -static void utc_system_settings_add_ringtone_list_p1(void) -{ - int retcode = -1; - cb_count = 0; - retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/big_buck_bunny.mp4"); - my_assert_ret(retcode); - retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/daliTestVideo.mp4"); - my_assert_ret(retcode); - retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/sound_5.wav"); - my_assert_ret(retcode); - retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/tct-content-tizen-tests_video.mp4"); - my_assert_ret(retcode); - retcode = system_settings_foreach_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, system_setting_get_ringtone_list_cb, NULL); - my_assert_ret(retcode); - retcode = system_settings_delete_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/tct-content-tizen-tests_video.mp4"); - my_assert_ret(retcode); - retcode = system_settings_delete_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/sound_5.wav"); - my_assert_ret(retcode); - retcode = system_settings_delete_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/daliTestVideo.mp4"); - my_assert_ret(retcode); - retcode = system_settings_delete_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/big_buck_bunny.mp4"); - my_assert_ret(retcode); - g_assert_cmpint(cb_count, ==, 5); - - return; -} - -/** - * @function utc_system_settings_delete_ringtone_list_p1_startup - * @description Called before each test - * @parameter NA - * @return NA - */ - -/* system_settings - del ringtone list */ -static void utc_system_settings_delete_ringtone_list_p1(void) -{ - int retcode = -1; - retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/big_buck_bunny.mp4"); - my_assert_ret(retcode); - retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/daliTestVideo.mp4"); - my_assert_ret(retcode); - retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/sound_5.wav"); - my_assert_ret(retcode); - retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/tct-content-tizen-tests_video.mp4"); - my_assert_ret(retcode); - - retcode = system_settings_delete_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/tct-content-tizen-tests_video.mp4"); - my_assert_ret(retcode); - retcode = system_settings_delete_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/sound_5.wav"); - my_assert_ret(retcode); - retcode = system_settings_delete_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/daliTestVideo.mp4"); - my_assert_ret(retcode); - retcode = system_settings_delete_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/big_buck_bunny.mp4"); - my_assert_ret(retcode); - - return; -} - -#include /* to use sleep */ -static int call_cnt = 0; -static void utc_system_settings_changed_multi_callback1(system_settings_key_e key, void *user_data) -{ - call_cnt++; -} - -static void utc_system_settings_changed_multi_callback2(system_settings_key_e key, void *user_data) -{ - call_cnt++; - sleep(1); - g_main_loop_quit(multi_main_loop); -} - -static void *test_multi_callback_thread(void *arg) -{ - int retcode = system_settings_add_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, - utc_system_settings_changed_multi_callback1, NULL); - my_assert_ret(retcode); - - retcode = system_settings_add_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, - utc_system_settings_changed_multi_callback1, NULL); - - /* not support same callback about 1 system-settings key */ - g_assert_cmpint(retcode, ==, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); - - retcode = system_settings_add_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, - utc_system_settings_changed_multi_callback2, NULL); - - bool bk_state = false; - system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR , &bk_state); - - bool state = true; - system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR , state); - - sleep(1); - - my_assert_ret(retcode); - retcode = system_settings_remove_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, - utc_system_settings_changed_multi_callback1); - my_assert_ret(retcode); - retcode = system_settings_remove_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, - utc_system_settings_changed_multi_callback2); - my_assert_ret(retcode); - - system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR , bk_state); - - -} -/** - * @testcase utc_system_settings_add_changed_cb_p1 - * @since_tizen 4.0 - * @description check if SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR is able to set the callback for change-notification. - */ -static void utc_system_settings_add_changed_cb_p1(void) -{ - multi_main_loop = g_main_loop_new(NULL, FALSE); - pthread_t test_thread; - - pthread_create(&test_thread, NULL, test_multi_callback_thread, NULL); - pthread_detach(test_thread); - - g_main_loop_run(multi_main_loop); - - g_assert_cmpint(call_cnt, ==, 2); - return; -} - - -static void utc_system_settings_changed_callback_1(system_settings_key_e key, void *user_data) -{ - _callback_called = true; -} - -static void utc_system_settings_changed_callback_2(system_settings_key_e key, void *user_data) -{ - _callback_called = true; -} - -static void utc_system_settings_add_remove_changed_cb_p1(void) -{ - int retcode = 0; - int key_idx = 0; - - for (key_idx = SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE; key_idx < SYSTEM_SETTINGS_KEY_MAX ; key_idx++) { - - if (key_idx == SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED + 1) - continue; /* skip removed system-setting key */ - - if (key_idx == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE) - continue; /* skip removed system-setting key */ - - retcode = system_settings_add_changed_cb(key_idx, - utc_system_settings_changed_callback_1, NULL); - - if (retcode == SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED) { - g_assert_cmpint(retcode, ==, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED); - } else { - if (retcode != SYSTEM_SETTINGS_ERROR_NONE) - printf("ERROR !! key =%d , ret = %d\n", key_idx, retcode); - } - - retcode = system_settings_remove_changed_cb(key_idx, - utc_system_settings_changed_callback_1); - - if (retcode == SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED) { - g_assert_cmpint(retcode, ==, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED); - } else { - if (retcode != SYSTEM_SETTINGS_ERROR_NONE) - printf("ERROR !! key =%d , ret = %d\n", key_idx, retcode); - } - - retcode = system_settings_add_changed_cb(key_idx, - utc_system_settings_changed_callback_1, NULL); - my_assert_ret(retcode); - - retcode = system_settings_add_changed_cb(key_idx, - utc_system_settings_changed_callback_2, NULL); - my_assert_ret(retcode); - - retcode = system_settings_remove_changed_cb(key_idx, - utc_system_settings_changed_callback_1); - my_assert_ret(retcode); - - retcode = system_settings_remove_changed_cb(key_idx, - utc_system_settings_changed_callback_2); - my_assert_ret(retcode); - } - - return; -} - -static void simple_test_case(void) -{ - /* a suitable test */ - g_assert(g_bit_storage(1) == 1); - - /* a test with verbose error message */ - g_assert_cmpint(g_bit_storage(1), ==, 1); -} - -void unittest_api() -{ - /* hook up your test functions */ - g_test_add_func("/API Test Case", simple_test_case); - g_test_add_func("/utc_system_settings_add_changed_cb_p1", utc_system_settings_add_changed_cb_p1); - g_test_add_func("/utc_system_settings_add_remove_changed_cb_p1", utc_system_settings_add_remove_changed_cb_p1); - g_test_add_func("/utc_system_settings_get_value_string_p1", utc_system_settings_get_value_string_p1); - g_test_add_func("/utc_system_settings_get_value_string_p2", utc_system_settings_get_value_string_p2); - g_test_add_func("/utc_system_settings_get_value_string_p3", utc_system_settings_get_value_string_p3); - g_test_add_func("/utc_system_settings_get_value_string_p4", utc_system_settings_get_value_string_p4); - g_test_add_func("/utc_system_settings_get_value_string_p5", utc_system_settings_get_value_string_p5); - g_test_add_func("/utc_system_settings_get_value_string_p7", utc_system_settings_get_value_string_p7); - g_test_add_func("/utc_system_settings_get_value_string_p6", utc_system_settings_get_value_string_p6); - g_test_add_func("/utc_system_settings_get_value_string_p10", utc_system_settings_get_value_string_p10); - g_test_add_func("/utc_system_settings_get_value_string_p8", utc_system_settings_get_value_string_p8); - g_test_add_func("/utc_system_settings_get_value_string_p9", utc_system_settings_get_value_string_p9); - g_test_add_func("/utc_system_settings_get_value_string_p11", utc_system_settings_get_value_string_p11); - g_test_add_func("/utc_system_settings_get_value_string_n", utc_system_settings_get_value_string_n); - g_test_add_func("/utc_system_settings_get_value_bool_p1", utc_system_settings_get_value_bool_p1); - g_test_add_func("/utc_system_settings_get_value_bool_p2", utc_system_settings_get_value_bool_p2); - g_test_add_func("/utc_system_settings_get_value_bool_p3", utc_system_settings_get_value_bool_p3); - g_test_add_func("/utc_system_settings_get_value_bool_p4", utc_system_settings_get_value_bool_p4); - g_test_add_func("/utc_system_settings_get_value_bool_p5", utc_system_settings_get_value_bool_p5); - g_test_add_func("/utc_system_settings_get_value_bool_p6", utc_system_settings_get_value_bool_p6); - g_test_add_func("/utc_system_settings_get_value_bool_p7", utc_system_settings_get_value_bool_p7); - g_test_add_func("/utc_system_settings_get_value_bool_p8", utc_system_settings_get_value_bool_p8); - g_test_add_func("/utc_system_settings_get_value_bool_p9", utc_system_settings_get_value_bool_p9); - g_test_add_func("/utc_system_settings_get_value_bool_p10", utc_system_settings_get_value_bool_p10); - g_test_add_func("/utc_system_settings_get_value_bool_n", utc_system_settings_get_value_bool_n); - g_test_add_func("/utc_system_settings_get_value_int_p1", utc_system_settings_get_value_int_p1); - g_test_add_func("/utc_system_settings_get_value_int_p2", utc_system_settings_get_value_int_p2); - g_test_add_func("/utc_system_settings_get_value_n", utc_system_settings_get_value_n); - g_test_add_func("/utc_system_settings_get_value_int_p3", utc_system_settings_get_value_int_p3); - g_test_add_func("/utc_system_settings_get_value_bool_p11", utc_system_settings_get_value_bool_p11); - g_test_add_func("/utc_system_settings_get_value_int_p4", utc_system_settings_get_value_int_p4); - g_test_add_func("/utc_system_settings_set_value_string_n2", utc_system_settings_set_value_string_n2); - g_test_add_func("/utc_system_settings_set_value_string_n3", utc_system_settings_set_value_string_n3); - g_test_add_func("/utc_system_settings_set_value_string_n4", utc_system_settings_set_value_string_n4); - g_test_add_func("/utc_system_settings_set_value_string_n5", utc_system_settings_set_value_string_n5); - g_test_add_func("/utc_system_settings_set_value_string_n7", utc_system_settings_set_value_string_n7); - g_test_add_func("/utc_system_settings_set_value_string_n8", utc_system_settings_set_value_string_n8); - g_test_add_func("/utc_system_settings_set_changed_cb_p1", utc_system_settings_set_changed_cb_p1); - g_test_add_func("/utc_system_settings_unset_changed_cb_p1", utc_system_settings_unset_changed_cb_p1); - g_test_add_func("/utc_system_settings_set_changed_cb_p2", utc_system_settings_set_changed_cb_p2); - g_test_add_func("/utc_system_settings_unset_changed_cb_p2", utc_system_settings_unset_changed_cb_p2); - g_test_add_func("/utc_system_settings_set_changed_cb_p3", utc_system_settings_set_changed_cb_p3); - g_test_add_func("/utc_system_settings_unset_changed_cb_p3", utc_system_settings_unset_changed_cb_p3); - g_test_add_func("/utc_system_settings_set_changed_cb_p4", utc_system_settings_set_changed_cb_p4); - g_test_add_func("/utc_system_settings_LOCK_SCREEN_unset_changed_cb_p", utc_system_settings_LOCK_SCREEN_unset_changed_cb_p); - g_test_add_func("/utc_system_settings_set_changed_cb_p5", utc_system_settings_set_changed_cb_p5); - g_test_add_func("/utc_system_settings_unset_changed_cb_p4", utc_system_settings_unset_changed_cb_p4); - g_test_add_func("/utc_system_settings_set_changed_cb_p6", utc_system_settings_set_changed_cb_p6); - g_test_add_func("/utc_system_settings_unset_changed_cb_p5", utc_system_settings_unset_changed_cb_p5); - g_test_add_func("/utc_system_settings_set_changed_cb_p7", utc_system_settings_set_changed_cb_p7); - g_test_add_func("/utc_system_settings_unset_changed_cb_p6", utc_system_settings_unset_changed_cb_p6); - g_test_add_func("/utc_system_settings_set_changed_cb_p8", utc_system_settings_set_changed_cb_p8); - g_test_add_func("/utc_system_settings_unset_changed_cb_p7", utc_system_settings_unset_changed_cb_p7); - g_test_add_func("/utc_system_settings_set_changed_cb_p9", utc_system_settings_set_changed_cb_p9); - g_test_add_func("/utc_system_settings_unset_changed_cb_p8", utc_system_settings_unset_changed_cb_p8); - g_test_add_func("/utc_system_settings_set_changed_cb_p10", utc_system_settings_set_changed_cb_p10); - g_test_add_func("/utc_system_settings_unset_changed_cb_p9", utc_system_settings_unset_changed_cb_p9); - g_test_add_func("/utc_system_settings_set_changed_cb_p11", utc_system_settings_set_changed_cb_p11); - g_test_add_func("/utc_system_settings_unset_changed_cb_p10", utc_system_settings_unset_changed_cb_p10); - g_test_add_func("/utc_system_settings_set_changed_cb_p12", utc_system_settings_set_changed_cb_p12); - g_test_add_func("/utc_system_settings_unset_changed_cb_p11", utc_system_settings_unset_changed_cb_p11); - g_test_add_func("/utc_system_settings_set_changed_cb_p13", utc_system_settings_set_changed_cb_p13); - g_test_add_func("/utc_system_settings_unset_changed_cb_p12", utc_system_settings_unset_changed_cb_p12); - g_test_add_func("/utc_system_settings_set_changed_cb_p14", utc_system_settings_set_changed_cb_p14); - g_test_add_func("/utc_system_settings_unset_changed_cb_p13", utc_system_settings_unset_changed_cb_p13); - g_test_add_func("/utc_system_settings_set_changed_cb_p15", utc_system_settings_set_changed_cb_p15); - g_test_add_func("/utc_system_settings_unset_changed_cb_p14", utc_system_settings_unset_changed_cb_p14); - g_test_add_func("/utc_system_settings_set_changed_cb_p16", utc_system_settings_set_changed_cb_p16); - g_test_add_func("/utc_system_settings_unset_changed_cb_p15", utc_system_settings_unset_changed_cb_p15); - g_test_add_func("/utc_system_settings_set_changed_cb_p17", utc_system_settings_set_changed_cb_p17); - g_test_add_func("/utc_system_settings_unset_changed_cb_p16", utc_system_settings_unset_changed_cb_p16); - g_test_add_func("/utc_system_settings_set_changed_cb_p18", utc_system_settings_set_changed_cb_p18); - g_test_add_func("/utc_system_settings_unset_changed_cb_p17", utc_system_settings_unset_changed_cb_p17); - g_test_add_func("/utc_system_settings_set_changed_cb_p19", utc_system_settings_set_changed_cb_p19); - g_test_add_func("/utc_system_settings_unset_changed_cb_p18", utc_system_settings_unset_changed_cb_p18); - g_test_add_func("/utc_system_settings_set_changed_cb_p20", utc_system_settings_set_changed_cb_p20); - g_test_add_func("/utc_system_settings_unset_changed_cb_p19;", utc_system_settings_unset_changed_cb_p19); - g_test_add_func("/utc_system_settings_set_changed_cb_p21", utc_system_settings_set_changed_cb_p21); - g_test_add_func("/utc_system_settings_unset_changed_cb_p20", utc_system_settings_unset_changed_cb_p20); - g_test_add_func("/utc_system_settings_set_changed_cb_p22", utc_system_settings_set_changed_cb_p22); - g_test_add_func("/utc_system_settings_unset_changed_cb_p21", utc_system_settings_unset_changed_cb_p21); - g_test_add_func("/utc_system_settings_set_changed_cb_p23", utc_system_settings_set_changed_cb_p23); - g_test_add_func("/utc_system_settings_unset_changed_cb_p22", utc_system_settings_unset_changed_cb_p22); - g_test_add_func("/utc_system_settings_set_changed_cb_p24", utc_system_settings_set_changed_cb_p24); - g_test_add_func("/utc_system_settings_unset_changed_cb_p23", utc_system_settings_unset_changed_cb_p23); - g_test_add_func("/utc_system_settings_set_changed_cb_p25", utc_system_settings_set_changed_cb_p25); - g_test_add_func("/utc_system_settings_unset_changed_cb_p24", utc_system_settings_unset_changed_cb_p24); - g_test_add_func("/utc_system_settings_set_changed_cb_p27", utc_system_settings_set_changed_cb_p27); - g_test_add_func("/utc_system_settings_unset_changed_cb_p26", utc_system_settings_unset_changed_cb_p26); - g_test_add_func("/utc_system_settings_set_changed_cb_p29", utc_system_settings_set_changed_cb_p29); - g_test_add_func("/utc_system_settings_unset_changed_cb_p28", utc_system_settings_unset_changed_cb_p28); - g_test_add_func("/utc_system_settings_set_changed_cb_p31", utc_system_settings_set_changed_cb_p31); - g_test_add_func("/utc_system_settings_unset_changed_cb_p30", utc_system_settings_unset_changed_cb_p30); - g_test_add_func("/utc_system_settings_set_changed_cb_p33", utc_system_settings_set_changed_cb_p33); - g_test_add_func("/utc_system_settings_unset_changed_cb_p32", utc_system_settings_unset_changed_cb_p32); - g_test_add_func("/utc_system_settings_add_ringtone_list_p1", utc_system_settings_add_ringtone_list_p1); - g_test_add_func("/utc_system_settings_delete_ringtone_list_p1", utc_system_settings_delete_ringtone_list_p1); - g_test_add_func("/utc_system_settings_set_value_string_p1", utc_system_settings_set_value_string_p1); - g_test_add_func("/utc_system_settings_set_value_string_p2", utc_system_settings_set_value_string_p2); - g_test_add_func("/utc_system_settings_set_value_string_p3", utc_system_settings_set_value_string_p3); - g_test_add_func("/utc_system_settings_set_value_string_p4", utc_system_settings_set_value_string_p4); - g_test_add_func("/utc_system_settings_set_value_bool_n1", utc_system_settings_set_value_bool_n1); - g_test_add_func("/utc_system_settings_set_value_bool_n2", utc_system_settings_set_value_bool_n2); - g_test_add_func("/utc_system_settings_set_value_bool_n3", utc_system_settings_set_value_bool_n3); - g_test_add_func("/utc_system_settings_set_value_bool_n4", utc_system_settings_set_value_bool_n4); - g_test_add_func("/utc_system_settings_set_value_bool_n5", utc_system_settings_set_value_bool_n5); - g_test_add_func("/utc_system_settings_set_value_bool_n6", utc_system_settings_set_value_bool_n6); - g_test_add_func("/utc_system_settings_set_value_bool_p1", utc_system_settings_set_value_bool_p1); - g_test_add_func("/utc_system_settings_set_value_bool_p2", utc_system_settings_set_value_bool_p2); - g_test_add_func("/utc_system_settings_set_value_int_n1", utc_system_settings_set_value_int_n1); - g_test_add_func("/utc_system_settings_set_changed_cb_n", utc_system_settings_set_changed_cb_n); - g_test_add_func("/utc_system_settings_set_value_int_p1", utc_system_settings_set_value_int_p1); - g_test_add_func("/utc_system_settings_set_value_int_n2", utc_system_settings_set_value_int_n2); - g_test_add_func("/utc_system_settings_set_value_bool_p3", utc_system_settings_set_value_bool_p3); - g_test_add_func("/utc_system_settings_set_value_bool_p4", utc_system_settings_set_value_bool_p4); - g_test_add_func("/utc_system_settings_set_value_bool_p5", utc_system_settings_set_value_bool_p5); - g_test_add_func("/utc_system_settings_set_value_bool_p6", utc_system_settings_set_value_bool_p6); - g_test_add_func("/utc_system_settings_set_value_int_p2", utc_system_settings_set_value_int_p2); - g_test_add_func("/utc_system_settings_set_value_string_n6", utc_system_settings_set_value_string_n6); - g_test_add_func("/utc_system_settings_unset_changed_cb_n", utc_system_settings_unset_changed_cb_n); -} -#endif - diff --git a/src/system_settings_json.c b/src/system_settings_json.c index 6380c93..379db67 100644 --- a/src/system_settings_json.c +++ b/src/system_settings_json.c @@ -26,6 +26,7 @@ static void ss_json_ringtone_save(JsonNode *root) /* LCOV_EXCL_STOP */ +/* LCOV_EXCL_START */ JsonParser* ss_json_ringtone_open_file(char* path) { JsonParser *parser; @@ -45,6 +46,7 @@ JsonParser* ss_json_ringtone_open_file(char* path) return parser; } +/* LCOV_EXCL_STOP */ JsonParser* ss_json_ringtone_load_from_data() { diff --git a/src/system_settings_vconf.c b/src/system_settings_vconf.c index 66b4c3f..2fd4586 100644 --- a/src/system_settings_vconf.c +++ b/src/system_settings_vconf.c @@ -344,25 +344,33 @@ static void system_setting_vconf_event_multi_cb(keynode_t *node, void *event_dat LOGE("Leave [%s]", __FUNCTION__); } +/* LCOV_EXCL_START */ static void system_setting_vconf_event_multi_cb_slot_0(keynode_t *node, void *event_data) { system_setting_vconf_event_multi_cb(node, event_data); } +/* LCOV_EXCL_STOP */ +/* LCOV_EXCL_START */ static void system_setting_vconf_event_multi_cb_slot_1(keynode_t *node, void *event_data) { system_setting_vconf_event_multi_cb(node, event_data); } +/* LCOV_EXCL_STOP */ +/* LCOV_EXCL_START */ static void system_setting_vconf_event_multi_cb_slot_2(keynode_t *node, void *event_data) { system_setting_vconf_event_multi_cb(node, event_data); } +/* LCOV_EXCL_STOP */ +/* LCOV_EXCL_START */ static void system_setting_vconf_event_multi_cb_slot_3(keynode_t *node, void *event_data) { system_setting_vconf_event_multi_cb(node, event_data); } +/* LCOV_EXCL_STOP */ static system_setting_vconf_event_cb system_setting_vconf_get_event_multi_cb_slot(system_settings_key_e key) { diff --git a/system-setting-config.h.in b/system-setting-config.h.in index 75e188f..dd85b98 100644 --- a/system-setting-config.h.in +++ b/system-setting-config.h.in @@ -11,5 +11,4 @@ #define SETTING_TZONE_SYMLINK_PATH @SETTING_TZONE_SYMLINK_PATH@ - #endif /* __SYSTEM_SETTING_CONFIG_IN_H */ diff --git a/system-settings-util/src/system_settings_util.c b/system-settings-util/src/system_settings_util.c index bce6246..b7b14c5 100644 --- a/system-settings-util/src/system_settings_util.c +++ b/system-settings-util/src/system_settings_util.c @@ -242,11 +242,6 @@ bool __is_supported_image_type_load(char *path) } /* LCOV_EXCL_STOP */ -char *_get_cur_font() -{ - return __get_main_font_family_name_by_alias(SETTING_FONT_TIZEN_FONT_ALIAS); -} - /* LCOV_EXCL_START */ void font_config_set_notification() { diff --git a/unit_test/CMakeLists.txt b/unit_test/CMakeLists.txt new file mode 100755 index 0000000..af08297 --- /dev/null +++ b/unit_test/CMakeLists.txt @@ -0,0 +1,29 @@ + +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +SET(fw_name "capi-system-system-settings") +SET(unit_test "system-setting-unittest") + +SET(requires "dlog vconf fontconfig libxml-2.0 pkgmgr pkgmgr-info alarm-service capi-media-metadata-extractor eina elementary aul json-glib-1.0 capi-appfw-app-manager capi-appfw-package-manager capi-system-info glib-2.0") + +PROJECT(${unit_test}) + +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include) + +INCLUDE(FindPkgConfig) +pkg_check_modules(${fw_name} REQUIRED ${requires}) +FOREACH(flag ${${fw_name}_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +ENDFOREACH(flag) + +INCLUDE(FindPkgConfig) +pkg_check_modules(${unit_test} REQUIRED ${requires} elementary ecore) +FOREACH(flag ${${unit_test}_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +ENDFOREACH(flag) +ADD_DEFINITIONS("-DN_THREADS=${N_THREADS}") +ADD_EXECUTABLE(${unit_test} src/unit_test.c + src/unit_test_fw.c) + +TARGET_LINK_LIBRARIES(${unit_test} ${fw_name}) +INSTALL(TARGETS ${unit_test} DESTINATION /usr/local/bin) + diff --git a/unit_test/include/unit_test_assert.h b/unit_test/include/unit_test_assert.h new file mode 100755 index 0000000..93f54c5 --- /dev/null +++ b/unit_test/include/unit_test_assert.h @@ -0,0 +1,104 @@ +// +// Copyright (c) 2014 Samsung Electronics Co., Ltd. +// +// 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. +// +#ifndef _ASSERT_H_ +#define _ASSERT_H_ +#include +#include + +#ifndef GLIB_MODE +#define assert(exp) \ + do { \ + if (!(exp)) { \ + fprintf(stderr, \ + "\\n[TCT][%s][Line : %d] Assert Fail; Following expression is not true: %s\\n", \ + __FILE__, __LINE__, #exp); \ + return 1; \ + } \ + } while (0) + +#define assert_eq(var, ref) \ + do { \ + if (var != ref) { \ + fprintf(stderr, \ + "\\n[TCT][%s][Line : %d] Assert fail; Values (%s == 0x%x) and (%s == 0x%x) are not equal\\n", \ + __FILE__, __LINE__, #var, (int)var, #ref, (int)ref); \ + return 1; \ + } \ + } while (0) + +#define assert_neq(var, ref) \ + do { \ + if (var == ref) { \ + fprintf(stderr, \ + "\\n[TCT][%s][Line : %d] Assert fail; Values (%s == 0x%x) and (%s == 0x%x) are equal\\n", \ + __FILE__, __LINE__, #var, (int)var, #ref, (int)ref); \ + return 1; \ + } \ + } while (0) + +#define assert_gt(var, ref) \ + do { \ + if (var <= ref) { \ + fprintf(stderr, \ + "\\n[TCT][%s][Line : %d] Assert fail; Values (%s == 0x%x) is not greater than (%s == 0x%x)\\n", \ + __FILE__, __LINE__, #var, (int)var, #ref, (int)ref); \ + return 1; \ + } \ + } while (0) + +#define assert_geq(var, ref) \ + do { \ + if (var < ref) { \ + fprintf(stderr, \ + "\\n[TCT][%s][Line : %d] Assert fail; Values (%s == 0x%x) is not greater than or equal to (%s == 0x%x)\\n", \ + __FILE__, __LINE__, #var, (int)var, #ref, (int)ref); \ + return 1; \ + } \ + } while (0) + +#define assert_lt(var, ref) \ + do { \ + if (var >= ref) { \ + fprintf(stderr, \ + "\\n[TCT][%s][Line : %d] Assert fail; Values (%s == 0x%x) is not lower than (%s == 0x%x)\\n", \ + __FILE__, __LINE__, #var, (int)var, #ref, (int)ref); \ + return 1; \ + } \ + } while (0) + +#define assert_leq(var, ref) \ + do { \ + if (var > ref) { \ + fprintf(stderr, \ + "\\n[TCT][%s][Line : %d] Assert fail; Values (%s == 0x%x) is not lower than or equal to (%s == 0x%x)\\n", \ + __FILE__, __LINE__, #var, (int)var, #ref, (int)ref); \ + return 1; \ + } \ + } while (0) + +#else //GLIB_MODE + +#define assert(exp) g_assert(exp) +#define assert_eq(var, ref) g_assert(var == ref) +#define assert_neq(var, ref) g_assert(var != ref) +#define assert_gt(var, ref) g_assert(var > ref) +#define assert_geq(var, ref) g_assert(var >= ref) +#define assert_lt(var, ref) g_assert(var < ref) +#define assert_leq(var, ref) g_assert(var <= ref) + +#endif //GLIB_MODE + +#endif // _ASSERT_H_ diff --git a/unit_test/include/unit_test_fw.h b/unit_test/include/unit_test_fw.h new file mode 100644 index 0000000..d3cc5f9 --- /dev/null +++ b/unit_test/include/unit_test_fw.h @@ -0,0 +1,30 @@ +#ifndef __UNIT_TEST_FW__ +#define __UNIT_TEST_FW__ + +#define GLIB_MODE + +#include +#include +#include +#include + +#include + +void add_test_func(char * test_name, GTestFunc func_pointer); +void unittest_api(); + +#ifdef GLIB_MODE +#define RETTYPE void +#define RETURN(a) return +#else +#define RETTYPE int +#define RETURN(a) return a +#endif + +#ifndef N_THREADS +#define N_THERADS 0 +#endif + +#define MAX_TEST_CASE 1000 + +#endif diff --git a/unit_test/resource/ringtone_sdk.mp3 b/unit_test/resource/ringtone_sdk.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..f159e35e3f65ee01ea84c09b37680e2557217049 GIT binary patch literal 213228 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 literal 0 HcmV?d00001 diff --git a/unit_test/script/unit_test_gdb_script b/unit_test/script/unit_test_gdb_script new file mode 100644 index 0000000..e04a506 --- /dev/null +++ b/unit_test/script/unit_test_gdb_script @@ -0,0 +1,12 @@ +set pagination off +set logging file /opt/usr/share/unit_test_gdb_logs.txt +set logging on +set confirm off +file /usr/local/bin/system-setting-unittest +r # run it once +break exit +commands +run +end +set logging off +#quit diff --git a/unittest.sh b/unit_test/script/unittest.sh similarity index 72% rename from unittest.sh rename to unit_test/script/unittest.sh index 5fb7823..22d90ea 100755 --- a/unittest.sh +++ b/unit_test/script/unittest.sh @@ -1,5 +1,6 @@ #!/bin/bash +PWD=`pwd` RPATH=$1 SPECPATH=`find . -name *.spec` @@ -11,7 +12,8 @@ VER=$VER1-$REL ARCH=$2 VERSHORT=${VER%-*} # 1.2.3 - +THREAD_NUM=$3 +GDB_TEST=$4 if [ -z $RPATH ]; then echo "argument error : 1st arg is path " @@ -25,20 +27,32 @@ if [ -z $ARCH ]; then exit 1 fi -sudo gbs build -A $ARCH --include-all --define "run_tests 1" || exit 1 -# ex ) ./unittest.sh /home/mjpark/GBS-ROOT/local/repos/slp/armv7l/RPMS capi-system-system-settings 0.0.3-3 armv7l +if [ -z $THREAD_NUM ]; then + sudo gbs build -A $ARCH --include-all --define "run_tests 1" || exit 1 +else + sudo gbs build -A $ARCH --include-all --define "run_tests 1" --define "thread_number $THREAD_NUM" || exit 1 +fi + +# ex ) ./unittest.sh /home/mjpark/GBS-ROOT/local/repos/slp/armv7l/RPMS capi-system-system-settings 0.0.3-3 armv7l 5 RPM_ROOT=$RPATH +sudo mkdir -p /usr/src/packages/BUILD/$APP-$VERSHORT +sudo cp -rf . /usr/src/packages/BUILD/$APP-$VERSHORT + sudo mkdir -p /home/abuild/rpmbuild/BUILD/$APP-$VERSHORT sudo cp -rf . /home/abuild/rpmbuild/BUILD/$APP-$VERSHORT SDB=/usr/bin/sdb +GDB_SCRIPT=$PWD/unit_test/script/unit_test_gdb_script +UNIT_TEST_RESOURCE=$PWD/unit_test/resource/* $SDB root on $SDB shell mount -o remount,rw / $SDB push $RPM_ROOT/$APP-$VER.$ARCH.rpm /opt $SDB push $RPM_ROOT/$APP-debuginfo-$VER.$ARCH.rpm /opt $SDB push $RPM_ROOT/$APP-debugsource-$VER.$ARCH.rpm /opt +$SDB push $GDB_SCRIPT /usr/local/bin +$SDB push $UNIT_TEST_RESOURCE /opt/usr/share $SDB shell rpm -Uvh --force --nodeps /opt/$APP-$VER.$ARCH.rpm $SDB shell rpm -Uvh --force --nodeps /opt/$APP-debuginfo-$VER.$ARCH.rpm @@ -46,7 +60,12 @@ $SDB shell rpm -Uvh --force --nodeps /opt/$APP-debugsource-$VER.$ARCH.rpm echo "UNIT TEST----------------------------------------------------" export GCOV_PREFIX=/opt + +if [ -z $GDB_TEST]; then $SDB shell su - -c "G_DEBUG=fatal-criticals GCOV_PREFIX=/usr/src/packages GCOV_PREFIX_STRIP=3 /usr/local/bin/system-setting-unittest" +else +$SDB shell su - -c "G_DEBUG=fatal-criticals GCOV_PREFIX=/usr/src/packages GCOV_PREFIX_STRIP=3 gdb -x /usr/local/bin/unit_test_gdb_script" +fi echo "COVERAGE TEST----------------------------------------------------" sdb pull /usr/src/packages/BUILD/$APP-$VERSHORT/ @@ -55,9 +74,8 @@ rm -rf ./CMakeFiles/capi-system-system-settings.dir/src/system_setting_unittest. lcov -c -d ./CMakeFiles/$APP.dir/ -o $APP.info lcov -c -d ./system-settings-util/CMakeFiles/system-settings-util.dir -o $APP.util.info -VAR1="/home/abuild/rpmbuild/BUILD/$APP-$VERSHORT" +VAR1="/usr/src/packages/BUILD/$APP-$VERSHORT" VAR2="/usr/include" -PWD=`pwd` GBS_INCLUDE="$HOME/GBS-ROOT/local/BUILD-ROOTS/scratch.armv7l.0/usr/include" sed -i "s#$VAR1#$PWD#g" $APP.info sed -i "s#$VAR2#$GBS_INCLUDE#g" $APP.info @@ -66,7 +84,9 @@ sed -i "s#$VAR2#$GBS_INCLUDE#g" $APP.util.info echo "sed -i \"s#$VAR1#$PWD#g\" $APP.info" echo "genhtml $APP.info $APP.util.info -o out" +rm -rf out genhtml $APP.info $APP.util.info -o out find . -name "CMakeFiles" -type d -prune -exec rm -rf '{}' '+' rm $APP.info $APP.util.info - +sudo rm -rf /usr/src/packages/BUILD/$APP-$VERSHORT +sudo rm -rf /home/abuild/rpmbuild/BUILD/$APP-$VERSHORT diff --git a/unittest2.sh b/unit_test/script/unittest2.sh similarity index 100% rename from unittest2.sh rename to unit_test/script/unittest2.sh diff --git a/unit_test/src/unit_test.c b/unit_test/src/unit_test.c new file mode 100644 index 0000000..124cd96 --- /dev/null +++ b/unit_test/src/unit_test.c @@ -0,0 +1,2755 @@ +#include + +#include + + +void unit_test_callback0(system_settings_key_e key, void *user_data) { } +void unit_test_callback1(system_settings_key_e key, void *user_data) { } +void unit_test_callback2(system_settings_key_e key, void *user_data) { } +void unit_test_callback3(system_settings_key_e key, void *user_data) { } +void unit_test_callback4(system_settings_key_e key, void *user_data) { } +void unit_test_callback5(system_settings_key_e key, void *user_data) { } +void unit_test_callback6(system_settings_key_e key, void *user_data) { } +void unit_test_callback7(system_settings_key_e key, void *user_data) { } +void unit_test_callback8(system_settings_key_e key, void *user_data) { } +void unit_test_callback9(system_settings_key_e key, void *user_data) { } +void unit_test_callback10(system_settings_key_e key, void *user_data) { } +void unit_test_callback11(system_settings_key_e key, void *user_data) { } +void unit_test_callback12(system_settings_key_e key, void *user_data) { } +void unit_test_callback13(system_settings_key_e key, void *user_data) { } +void unit_test_callback14(system_settings_key_e key, void *user_data) { } +void unit_test_callback15(system_settings_key_e key, void *user_data) { } +void unit_test_callback16(system_settings_key_e key, void *user_data) { } +void unit_test_callback17(system_settings_key_e key, void *user_data) { } +void unit_test_callback18(system_settings_key_e key, void *user_data) { } +void unit_test_callback19(system_settings_key_e key, void *user_data) { } +void unit_test_callback20(system_settings_key_e key, void *user_data) { } +void unit_test_callback21(system_settings_key_e key, void *user_data) { } +void unit_test_callback22(system_settings_key_e key, void *user_data) { } +void unit_test_callback23(system_settings_key_e key, void *user_data) { } +void unit_test_callback24(system_settings_key_e key, void *user_data) { } +void unit_test_callback25(system_settings_key_e key, void *user_data) { } +void unit_test_callback26(system_settings_key_e key, void *user_data) { } +void unit_test_callback27(system_settings_key_e key, void *user_data) { } +void unit_test_callback28(system_settings_key_e key, void *user_data) { } +void unit_test_callback29(system_settings_key_e key, void *user_data) { } +void unit_test_callback30(system_settings_key_e key, void *user_data) { } +void unit_test_callback31(system_settings_key_e key, void *user_data) { } +void unit_test_callback32(system_settings_key_e key, void *user_data) { } +void unit_test_callback33(system_settings_key_e key, void *user_data) { } +void unit_test_callback34(system_settings_key_e key, void *user_data) { } +void unit_test_callback35(system_settings_key_e key, void *user_data) { } +void unit_test_callback36(system_settings_key_e key, void *user_data) { } +void unit_test_callback37(system_settings_key_e key, void *user_data) { } +void unit_test_callback38(system_settings_key_e key, void *user_data) { } +void unit_test_callback39(system_settings_key_e key, void *user_data) { } +void unit_test_callback40(system_settings_key_e key, void *user_data) { } +void unit_test_callback41(system_settings_key_e key, void *user_data) { } +void unit_test_callback42(system_settings_key_e key, void *user_data) { } +void unit_test_callback43(system_settings_key_e key, void *user_data) { } +void unit_test_callback44(system_settings_key_e key, void *user_data) { } +void unit_test_callback45(system_settings_key_e key, void *user_data) { } +void unit_test_callback46(system_settings_key_e key, void *user_data) { } +void unit_test_callback47(system_settings_key_e key, void *user_data) { } +void unit_test_callback48(system_settings_key_e key, void *user_data) { } +void unit_test_callback49(system_settings_key_e key, void *user_data) { } +void unit_test_callback50(system_settings_key_e key, void *user_data) { } +void unit_test_callback51(system_settings_key_e key, void *user_data) { } +void unit_test_callback52(system_settings_key_e key, void *user_data) { } +void unit_test_callback53(system_settings_key_e key, void *user_data) { } +void unit_test_callback54(system_settings_key_e key, void *user_data) { } +void unit_test_callback55(system_settings_key_e key, void *user_data) { } +void unit_test_callback56(system_settings_key_e key, void *user_data) { } +void unit_test_callback57(system_settings_key_e key, void *user_data) { } +void unit_test_callback58(system_settings_key_e key, void *user_data) { } +void unit_test_callback59(system_settings_key_e key, void *user_data) { } + + +static int my_assert_ret(int retcode) +{ + if (retcode == SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED) { + assert(retcode == SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED); + } else { + if (retcode != SYSTEM_SETTINGS_ERROR_NONE) + printf("Error!!\n"); + assert(retcode == SYSTEM_SETTINGS_ERROR_NONE); + } + return 1; +} + + +system_settings_changed_cb get_system_settings_test_callback() +{ + static system_settings_changed_cb func_array[] = { + unit_test_callback0, + unit_test_callback1, + unit_test_callback2, + unit_test_callback3, + unit_test_callback4, + unit_test_callback5, + unit_test_callback6, + unit_test_callback7, + unit_test_callback8, + unit_test_callback9, + unit_test_callback10, + unit_test_callback11, + unit_test_callback12, + unit_test_callback13, + unit_test_callback14, + unit_test_callback15, + unit_test_callback16, + unit_test_callback17, + unit_test_callback18, + unit_test_callback19, + unit_test_callback20, + unit_test_callback21, + unit_test_callback22, + unit_test_callback23, + unit_test_callback24, + unit_test_callback25, + unit_test_callback26, + unit_test_callback27, + unit_test_callback28, + unit_test_callback29, + unit_test_callback30, + unit_test_callback31, + unit_test_callback32, + unit_test_callback33, + unit_test_callback34, + unit_test_callback35, + unit_test_callback36, + unit_test_callback37, + unit_test_callback38, + unit_test_callback39, + unit_test_callback40, + unit_test_callback41, + unit_test_callback42, + unit_test_callback43, + unit_test_callback44, + unit_test_callback45, + unit_test_callback46, + unit_test_callback47, + unit_test_callback48, + unit_test_callback49, + unit_test_callback50, + unit_test_callback51, + unit_test_callback52, + unit_test_callback53, + unit_test_callback54, + unit_test_callback55, + unit_test_callback56, + unit_test_callback57, + unit_test_callback58, + unit_test_callback59 + }; + + static int func_num = 0; + func_num++; + if (func_num > 61) + func_num = 0; + int slot = func_num % 60; + return func_array[slot]; +} + +static bool _callback_called = false; +static char *new_ringtonepath = "/opt/usr/share/ringtone_sdk.mp3"; + +/** + * @function utc_system_settings_startup + * @description Called before each test + * @parameter NA + * @return NA + */ +RETTYPE utc_system_settings_startup(void) +{ + RETURN(0); +} + +/** + * @function utc_system_settings_cleanup + * @description Called after each test + * @parameter NA + * @return NA + */ +RETTYPE utc_system_settings_cleanup(void) +{ + RETURN(0); +} + +/** + * TEST GETTING SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE + */ +/** + * @testcase utc_system_settings_get_value_string_p1 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE is able to get the property + */ +RETTYPE utc_system_settings_get_value_string_p1(void) +{ + char *value = NULL; + + int retcode = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE, &value); + //assert_eq(retcode, SYSTEM_SETTINGS_ERROR_NONE); + my_assert_ret(retcode); + assert(value != NULL); + free(value); + RETURN(0); +} + +/** + * TEST GETTING SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY + */ +/** + * @testcase utc_system_settings_get_value_string_p2 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY is able to get the property + */ +RETTYPE utc_system_settings_get_value_string_p2(void) +{ + char *value = NULL; + + int retcode = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, &value); + //assert_eq(retcode, SYSTEM_SETTINGS_ERROR_NONE); + my_assert_ret(retcode); + assert(value != NULL); + free(value); + RETURN(0); +} + +/** + * TEST GETTING SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE + */ +/** + * @testcase utc_system_settings_get_value_string_p3 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE is able to get the property + */ +RETTYPE utc_system_settings_get_value_string_p3(void) +{ + char *value = NULL; + + int retcode = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, &value); + //assert_eq(retcode, SYSTEM_SETTINGS_ERROR_NONE); + my_assert_ret(retcode); + assert(value != NULL); + free(value); + RETURN(0); +} + +/** + * TEST GETTING SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE + */ +/** + * @testcase utc_system_settings_get_value_string_p4 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE is able to get the property + */ +RETTYPE utc_system_settings_get_value_string_p4(void) +{ + char *value = NULL; + + int retcode = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, &value); + //assert_eq(retcode, SYSTEM_SETTINGS_ERROR_NONE); + my_assert_ret(retcode); + assert(value != NULL); + free(value); + RETURN(0); +} + +/** + * TEST SETTING SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN + */ +/** + * @testcase utc_system_settings_get_value_string_p5 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN is able to get the property. + */ +RETTYPE utc_system_settings_get_value_string_p5(void) +{ + char *value = NULL; + + int retcode = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN, &value); + //assert_eq(retcode, SYSTEM_SETTINGS_ERROR_NONE); + my_assert_ret(retcode); + assert(value != NULL); + free(value); + RETURN(0); +} + +/** + * @testcase utc_system_settings_get_value_string_p11 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_DEVICE_NAME is able to get the property. + */ +RETTYPE utc_system_settings_get_value_string_p11(void) +{ + char *value = NULL; + + int retcode = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_DEVICE_NAME, &value); + //assert_eq(retcode, SYSTEM_SETTINGS_ERROR_NONE); + my_assert_ret(retcode); + assert(value != NULL); + free(value); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_get_value_string_p7 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION is able to get the property. + */ +RETTYPE utc_system_settings_get_value_string_p7(void) +{ + char *value = NULL; + + int retcode = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION, &value); + my_assert_ret(retcode); + free(value); + RETURN(0); +} + +/** + * @testcase utc_system_settings_get_value_string_p6 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_LOCALE_TIMEZON is able to get the property. + */ +RETTYPE utc_system_settings_get_value_string_p6(void) +{ + char *value = NULL; + int retcode = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE, &value); + my_assert_ret(retcode); + free(value); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_get_value_string_p10 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN is able to get the property. + */ +RETTYPE utc_system_settings_get_value_string_p10(void) +{ + char *value = NULL; + + int retcode = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN, &value); + my_assert_ret(retcode); + if (retcode == SYSTEM_SETTINGS_ERROR_NONE) + assert(value != NULL); + free(value); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_get_value_string_p8 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_FONT_TYPE is able to get the property. + */ +RETTYPE utc_system_settings_get_value_string_p8(void) +{ + char *value = NULL; + + int retcode = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, &value); + my_assert_ret(retcode); + assert(value != NULL); + free(value); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_get_value_string_p9 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE is able to get the property. + */ +RETTYPE utc_system_settings_get_value_string_p9(void) +{ + char *value = NULL; + + int retcode = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE, &value); + my_assert_ret(retcode); + if (retcode == SYSTEM_SETTINGS_ERROR_NONE) + assert(value != NULL); + free(value); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_get_value_string_n + * @since_tizen 2.3 + * @description check if system_settings_get_value_string is able to handle invalid parameters. + */ +RETTYPE utc_system_settings_get_value_string_n(void) +{ + int retcode = system_settings_get_value_string(-1, NULL); + //assert_neq(retcode, SYSTEM_SETTINGS_ERROR_NONE); + assert(retcode != SYSTEM_SETTINGS_ERROR_NONE); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_get_value_bool_p1 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION is able to get the property. + */ +RETTYPE utc_system_settings_get_value_bool_p1(void) +{ + bool value = false; + + int retcode = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION, &value); + my_assert_ret(retcode); + RETURN(0); + +} + + +/** + * @testcase utc_system_settings_get_value_bool_p2 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED is able to get the property. + */ +RETTYPE utc_system_settings_get_value_bool_p2(void) +{ + bool value = false; + + int retcode = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED, &value); + my_assert_ret(retcode); + RETURN(0); + +} + + +/** + * @testcase utc_system_settings_get_value_bool_p3 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_SOUND_LOCK is able to get the property. + */ +RETTYPE utc_system_settings_get_value_bool_p3(void) +{ + bool value = false; + + int retcode = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_SOUND_LOCK, &value); + my_assert_ret(retcode); + RETURN(0); + +} + + +/** + * @testcase utc_system_settings_get_value_bool_p4 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO is able to get the property. + */ +RETTYPE utc_system_settings_get_value_bool_p4(void) +{ + bool value = false; + + int retcode = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO, &value); + my_assert_ret(retcode); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_get_value_bool_p5 + * @since_tizen 2.3 + * check if SYSTEM_SETTINGS_KEY_SOUND_TOUCH is able to get the property. + */ +RETTYPE utc_system_settings_get_value_bool_p5(void) +{ + bool value = false; + + int retcode = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_SOUND_TOUCH, &value); + my_assert_ret(retcode); + RETURN(0); + +} + + +/** + * @testcase utc_system_settings_get_value_bool_p6 + * @since_tizen 2.3 + * check if SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE is able to get the property. + */ +RETTYPE utc_system_settings_get_value_bool_p6(void) +{ + bool value = false; + + int retcode = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, &value); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_get_value_bool_p7 + * @since_tizen 2.3 + * check if SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE is able to get the property. + */ +RETTYPE utc_system_settings_get_value_bool_p7(void) +{ + bool value = false; + + int retcode = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE, &value); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_get_value_bool_p8 + * @since_tizen 2.3 + * check if SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION is able to get the property. + */ +RETTYPE utc_system_settings_get_value_bool_p8(void) +{ + bool value = false; + + int retcode = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, &value); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_get_value_bool_p9 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_MOTION_ENABLED is able to get the property. + */ +RETTYPE utc_system_settings_get_value_bool_p9(void) +{ + bool value = false; + + int retcode = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ENABLED, &value); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_get_value_bool_p10 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED is able to get the property. + */ +RETTYPE utc_system_settings_get_value_bool_p10(void) +{ + bool value = false; + + int retcode = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED, &value); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_get_value_bool_n + * @since_tizen 2.3 + * @description check if system_settings_get_value_bool is able to handle invalid parameters. + */ +RETTYPE utc_system_settings_get_value_bool_n(void) +{ + int retcode = system_settings_get_value_bool(-1, NULL); + //assert_neq(retcode, SYSTEM_SETTINGS_ERROR_NONE); + assert(retcode != SYSTEM_SETTINGS_ERROR_NONE); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_get_value_int_p1 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD is able to get the property. + */ +RETTYPE utc_system_settings_get_value_int_p1(void) +{ + int value = 0; + + int retcode = system_settings_get_value_int(SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD, &value); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_get_value_int_p2 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_FONT_SIZE is able to get the property. + */ +RETTYPE utc_system_settings_get_value_int_p2(void) +{ + int font_size = 0; + + int retcode = system_settings_get_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, &font_size); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_get_value_n + * @since_tizen 2.3 + * @description check if system_settings_get_value_int is able to handle invalid parameters. + */ +RETTYPE utc_system_settings_get_value_n(void) +{ + int retcode = system_settings_get_value_int(-1, NULL); + //assert_neq(retcode, SYSTEM_SETTINGS_ERROR_NONE); + assert(retcode != SYSTEM_SETTINGS_ERROR_NONE); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_get_value_int_p3 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME is able to get the property. + */ +RETTYPE utc_system_settings_get_value_int_p3(void) +{ + int value; + int nRetVal = system_settings_get_value_int(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, &value); + my_assert_ret(nRetVal); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_get_value_bool_p11 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR is able to get the property + */ +RETTYPE utc_system_settings_get_value_bool_p11(void) +{ + bool value = false; + + int retcode = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, &value); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_changed_cb_p1 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION is able to set the callback for change-notification. + */ +RETTYPE utc_system_settings_set_changed_cb_p1(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, + callback, NULL); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_p1 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_unset_changed_cb_p1(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_changed_cb_p2 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE is able to set the callback for change-notification. + */ +RETTYPE utc_system_settings_set_changed_cb_p2(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, + callback, NULL); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_p2 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_unset_changed_cb_p2(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_changed_cb_p3 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN is able to set the callback for change-notification. + */ +RETTYPE utc_system_settings_set_changed_cb_p3(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN, + callback, NULL); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_p3 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_unset_changed_cb_p3(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_changed_cb_p4 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN is able to set the callback for change-notification. + */ +RETTYPE utc_system_settings_set_changed_cb_p4(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN, + callback, NULL); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_LOCK_SCREEN_unset_changed_cb_p + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_WALLPAPER is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_WALLPAPER is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_LOCK_SCREEN_unset_changed_cb_p(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_changed_cb_p5 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_FONT_SIZE is able to set the callback for change-notification. + */ +RETTYPE utc_system_settings_set_changed_cb_p5(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_FONT_SIZE, + callback, NULL); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_p4 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_FONT_SIZE is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_FONT_SIZE is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_unset_changed_cb_p4(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_FONT_SIZE, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_FONT_SIZE); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_changed_cb_p6 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_FONT_TYPE is able to set the callback for change-notification. + */ +RETTYPE utc_system_settings_set_changed_cb_p6(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_FONT_TYPE, + callback, NULL); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_p5 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_FONT_TYPE is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_FONT_TYPE is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_unset_changed_cb_p5(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_FONT_TYPE, + callback, NULL); + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_FONT_TYPE); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_changed_cb_p7 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE is able to set the callback for change-notification. + */ +RETTYPE utc_system_settings_set_changed_cb_p7(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE, + callback, NULL); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_p6 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_unset_changed_cb_p6(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_changed_cb_p8 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED is able to set the callback for change-notification. + */ +RETTYPE utc_system_settings_set_changed_cb_p8(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED, + callback, NULL); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_p7 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_unset_changed_cb_p7(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_changed_cb_p9 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED is able to set callback for getting notification of change + */ +RETTYPE utc_system_settings_set_changed_cb_p9(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED, + callback, NULL); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_p8 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_unset_changed_cb_p8(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_changed_cb_p10 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP is able to set callback for getting notification of change + */ +RETTYPE utc_system_settings_set_changed_cb_p10(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP, + callback, NULL); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_p9 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_unset_changed_cb_p9(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_changed_cb_p11 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY is able to set callback for getting notification of change + */ +RETTYPE utc_system_settings_set_changed_cb_p11(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, + callback, NULL); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_p10 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY is able to set callback for getting notification of change and unset doing + */ +RETTYPE utc_system_settings_unset_changed_cb_p10(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_changed_cb_p12 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE is able to set the callback for change-notification. + */ +RETTYPE utc_system_settings_set_changed_cb_p12(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, + callback, NULL); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_p11 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_unset_changed_cb_p11(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_changed_cb_p13 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR is able to set the callback for change-notification. + */ +RETTYPE utc_system_settings_set_changed_cb_p13(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, + callback, NULL); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR + */ +/** + * @testcase utc_system_settings_unset_changed_cb_p12 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_unset_changed_cb_p12(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_changed_cb_p14 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_TIME_CHANGED is able to set the callback for change-notification. + */ +RETTYPE utc_system_settings_set_changed_cb_p14(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_TIME_CHANGED, + callback, NULL); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_p13 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_TIME_CHANGED is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_TIME_CHANGED is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_unset_changed_cb_p13(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_TIME_CHANGED, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_TIME_CHANGED); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_changed_cb_p15 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_SOUND_LOCK is able to set the callback for change-notification. + */ +RETTYPE utc_system_settings_set_changed_cb_p15(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_LOCK, + callback, NULL); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_p14 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_SOUND_LOCK is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_SOUND_LOCK is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_unset_changed_cb_p14(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_LOCK, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_LOCK); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_changed_cb_p16 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE is able to set the callback for change-notification. + */ +RETTYPE utc_system_settings_set_changed_cb_p16(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, + callback, NULL); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_p15 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_unset_changed_cb_p15(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE); + my_assert_ret(retcode); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_changed_cb_p17 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_SOUND_TOUCH is able to set the callback for change-notification. + */ +RETTYPE utc_system_settings_set_changed_cb_p17(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_TOUCH, + callback, NULL); + my_assert_ret(retcode); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_p16 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_SOUND_TOUCH is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_SOUND_TOUCH is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_unset_changed_cb_p16(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_TOUCH, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_TOUCH); + my_assert_ret(retcode); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_changed_cb_p18 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO is able to set the callback for change-notification. + */ +RETTYPE utc_system_settings_set_changed_cb_p18(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO, + callback, NULL); + my_assert_ret(retcode); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_p17 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_unset_changed_cb_p17(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO); + my_assert_ret(retcode); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_changed_cb_p19 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME is able to set the callback for change-notification. + */ +RETTYPE utc_system_settings_set_changed_cb_p19(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, + callback, NULL); + my_assert_ret(retcode); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_p18 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_unset_changed_cb_p18(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME); + my_assert_ret(retcode); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_changed_cb_p20 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION is able to set the callback for change-notification. + */ +RETTYPE utc_system_settings_set_changed_cb_p20(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION, + callback, NULL); + my_assert_ret(retcode); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_p19 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_unset_changed_cb_p19(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION); + my_assert_ret(retcode); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_changed_cb_p21 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD is able to set the callback for change-notification. + */ +RETTYPE utc_system_settings_set_changed_cb_p21(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD, + callback, NULL); + my_assert_ret(retcode); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_p20 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_unset_changed_cb_p20(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD); + my_assert_ret(retcode); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_changed_cb_p22 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_DEVICE_NAME is able to set the callback for change-notification. + */ +RETTYPE utc_system_settings_set_changed_cb_p22(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_DEVICE_NAME, + callback, NULL); + my_assert_ret(retcode); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_p21 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_DEVICE_NAME is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_DEVICE_NAME is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_unset_changed_cb_p21(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_DEVICE_NAME, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_DEVICE_NAME); + my_assert_ret(retcode); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_changed_cb_p23 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_MOTION_ENABLED is able to set the callback for change-notification. + */ +RETTYPE utc_system_settings_set_changed_cb_p23(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_MOTION_ENABLED, + callback, NULL); + my_assert_ret(retcode); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_p22 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_MOTION_ENABLED is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_MOTION_ENABLED is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_unset_changed_cb_p22(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_MOTION_ENABLED, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_MOTION_ENABLED); + my_assert_ret(retcode); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_changed_cb_p24 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE is able to set the callback for change-notification. + */ +RETTYPE utc_system_settings_set_changed_cb_p24(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE, + callback, NULL); + my_assert_ret(retcode); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_p23 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_unset_changed_cb_p23(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE); + my_assert_ret(retcode); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_changed_cb_p25 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION is able to set the callback for change-notification. + */ +RETTYPE utc_system_settings_set_changed_cb_p25(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION, + callback, NULL); + my_assert_ret(retcode); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_p24 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_unset_changed_cb_p24(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION); + my_assert_ret(retcode); + RETURN(0); +} + + + +/** + * @testcase utc_system_settings_set_value_string_p1 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE is able to get the property + */ +RETTYPE utc_system_settings_set_value_string_p1(void) +{ + int ret; + ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, new_ringtonepath); + my_assert_ret(ret); + + char *ret_ringtonepath = NULL; + ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, &ret_ringtonepath); + my_assert_ret(ret); + + if (ret == SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED) + RETURN(0); + + if (ret_ringtonepath != NULL && 0 == strcmp(ret_ringtonepath, new_ringtonepath)) { + assert(1); + } else { + assert(0); + } + RETURN(0); +} + + +/** + * TEST SETTING SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN + */ +/** + * @testcase utc_system_settings_set_value_string_n2 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN is able to get the property. + * check if SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN is able to set the property in error-case. + */ +RETTYPE utc_system_settings_set_value_string_n2(void) +{ + int ret; + char *wallpaper = NULL; + + char *wrong_wallpaper_path = "/wrongpath/aaa.png"; + ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN, wrong_wallpaper_path); + assert(ret != SYSTEM_SETTINGS_ERROR_NONE); + + ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN, &wallpaper); + assert(ret == SYSTEM_SETTINGS_ERROR_NONE); + free(wallpaper); + RETURN(0); +} + +/** + * SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN + */ +/** + * @testcase utc_system_settings_set_value_string_n3 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN is able to get the property. + * check if SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN is able to set the property in error-case. + */ +RETTYPE utc_system_settings_set_value_string_n3(void) +{ + int ret; + char *wallpaper = NULL; + + char *wrong_wallpaper_path = "/wrongpath/aaa.png"; + ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN, wrong_wallpaper_path); + assert(ret != SYSTEM_SETTINGS_ERROR_NONE); + + ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN, &wallpaper); + //assert_eq(ret, SYSTEM_SETTINGS_ERROR_NONE); + free(wallpaper); + RETURN(0); +} + +/** + * SYSTEM_SETTINGS_KEY_FONT_TYPE + */ +/** + * @testcase utc_system_settings_set_value_string_n4 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_FONT_TYPE is able to get the property. + * check if SYSTEM_SETTINGS_KEY_FONT_TYPE is able to set the property in error-case. + */ +RETTYPE utc_system_settings_set_value_string_n4(void) +{ + int ret; + + char *wrong_font_name = "WrongFontName"; + ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, wrong_font_name); + assert(ret != SYSTEM_SETTINGS_ERROR_NONE); + + char *font_name = NULL; + ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, &font_name); + //assert_eq(ret, SYSTEM_SETTINGS_ERROR_NONE); + free(font_name); + RETURN(0); +} + + + +/** + * @testcase utc_system_settings_set_value_bool_n1 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION is able to get the property. + * check if SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION is able to set the property in a normal-case. + */ +RETTYPE utc_system_settings_set_value_bool_n1(void) +{ + int ret; + bool state = true; + ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION, state); + my_assert_ret(ret); + + bool ret_state = false; + ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION, &ret_state); + my_assert_ret(ret); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_value_bool_n2 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE is able to get the property. + * check if SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE is able to set the property in an exceptional-case. (not supported) + */ +RETTYPE utc_system_settings_set_value_bool_n2(void) +{ + int ret; + bool state = true; + ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE, state); + my_assert_ret(ret); + + bool ret_state = false; + ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE, &ret_state); + my_assert_ret(ret); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_value_bool_n3 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_MOTION_ENABLED is able to get the property. + * check if SYSTEM_SETTINGS_KEY_MOTION_ENABLED is able to set the property in an exceptional-case. (not supported) + */ +RETTYPE utc_system_settings_set_value_bool_n3(void) +{ + int ret; + bool state = true; + ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ENABLED, state); + my_assert_ret(ret); + + bool ret_state = false; + ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ENABLED, &ret_state); + my_assert_ret(ret); + RETURN(0); +} + +/** + * @testcase utc_system_settings_set_value_bool_n4 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_SOUND_TOUCH is able to get the property. + * check if SYSTEM_SETTINGS_KEY_SOUND_TOUCH is able to set the property in an exceptional-case. (not supported) + */ +RETTYPE utc_system_settings_set_value_bool_n4(void) +{ + int ret; + bool state = true; + ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_SOUND_TOUCH, state); + my_assert_ret(ret); + + bool ret_state = false; + ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_SOUND_TOUCH, &ret_state); + my_assert_ret(ret); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_value_bool_n5 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_SOUND_LOCK is able to get the property. + * check if SYSTEM_SETTINGS_KEY_SOUND_LOCK is able to set the property in an exceptional-case. (not supported) + */ +RETTYPE utc_system_settings_set_value_bool_n5(void) +{ + int ret; + bool state = true; + ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_SOUND_LOCK, state); + my_assert_ret(ret); + + bool ret_state = false; + ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_SOUND_LOCK, &ret_state); + my_assert_ret(ret); + RETURN(0); +} + +/** + * @testcase utc_system_settings_set_value_bool_n6 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS is able to get the property. + * check if SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS is able to set the property in an exceptional-case. (not supported) + */ +RETTYPE utc_system_settings_set_value_bool_n6(void) +{ + int ret; + bool state = true; + ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS , state); + my_assert_ret(ret); + + bool ret_state = false; + ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS , &ret_state); + my_assert_ret(ret); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_value_string_n8 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE is able to get the property. + * check if SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE is able to set the property in an exceptional-case. (not supported) + */ +RETTYPE utc_system_settings_set_value_string_n8(void) +{ + int ret; + char *new_font = "DefaultFontName"; + ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE, new_font); + //my_assert_ret(ret); + assert_neq(ret, SYSTEM_SETTINGS_ERROR_NONE); + + char *ret_font = NULL; + ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE, &ret_font); + assert_eq(ret, SYSTEM_SETTINGS_ERROR_NONE); + RETURN(0); + +#if 0 + int ret; + char *new_font = "DefaultFontName"; + ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE, new_font); + //assert_eq(ret, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); + + char *ret_font = NULL; + ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE, &ret_font); + int ret2 = my_assert_ret(ret); + return ret2; + //return; +#endif +} + + +/** + * @testcase utc_system_settings_set_value_string_n7 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE is able to get the property. + * check if SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE is able to set the property in an exceptional-case. (not supported) + */ +RETTYPE utc_system_settings_set_value_string_n7(void) +{ + int ret; + char *new_zone = "Asia/Seoul"; + ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE, new_zone); + my_assert_ret(ret); + + char *ret_device = NULL; + ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE, &ret_device); + my_assert_ret(ret); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_value_int_n1 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_TIME_CHANGED is able to get the property. + * check if SYSTEM_SETTINGS_KEY_TIME_CHANGED is able to set the property in an exceptional-case. (not supported) + */ +RETTYPE utc_system_settings_set_value_int_n1(void) +{ + int ret; + int value = 3600; + ret = system_settings_set_value_int(SYSTEM_SETTINGS_KEY_TIME_CHANGED, value); + my_assert_ret(ret); + + int time_changed; + ret = system_settings_get_value_int(SYSTEM_SETTINGS_KEY_TIME_CHANGED, &time_changed); + my_assert_ret(ret); + + RETURN(0); +} + + +/** + * SYSTEM_SETTINGS_KEY_DEVICE_NAME + * check_SYSTEM_SETTINGS_ERROR_CALL_UNSUPPORTED_API + */ +/** + * @testcase utc_system_settings_set_value_string_n5 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_DEVICE_NAME is able to get the property. + * check if SYSTEM_SETTINGS_KEY_DEVICE_NAME is able to set the property in an exceptional-case. (not supported) + */ +RETTYPE utc_system_settings_set_value_string_n5(void) +{ + int ret; + char *new_device = "Tizen222"; + ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_DEVICE_NAME, new_device); + my_assert_ret(ret); + + char *ret_device = NULL; + ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_DEVICE_NAME, &ret_device); + + if (ret_device != NULL && 0 == strcmp(ret_device, new_device)) { + assert(0); + } else { + assert(1); + } + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_value_string_p2 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE is able to get the property. + * check if SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE is able to set the property in a normal-case. + */ +RETTYPE utc_system_settings_set_value_string_p2(void) +{ + int ret; + ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE, new_ringtonepath); + my_assert_ret(ret); + + char *ret_ringtonepath = NULL; + ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE, &ret_ringtonepath); + + if (ret == SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED) + RETURN(0); + + if (ret_ringtonepath != NULL && 0 == strcmp(ret_ringtonepath, new_ringtonepath)) { + assert(1); + } else { + assert(0); + } + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_value_string_p3 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY is able to get the property. + * check if SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY is able to set the property in a normal-case. + */ +RETTYPE utc_system_settings_set_value_string_p3(void) +{ + int ret; + char *new_country = "ko_KR"; + + /* backup */ + char *backup = NULL; + ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, &backup); + my_assert_ret(ret); + + ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, new_country); + my_assert_ret(ret); + + char *ret_country = NULL; + ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, &ret_country); + my_assert_ret(ret); + + if (ret_country != NULL && 0 == strcmp(ret_country, new_country)) { + assert(1); + } else { + assert(0); + } + + ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, backup); + my_assert_ret(ret); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_value_string_p4 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE is able to get the property. + * check if SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE is able to set the property in a normal-case. + */ +RETTYPE utc_system_settings_set_value_string_p4(void) +{ + int ret; + char *new_country = "ko_KR"; + + /* backup */ + char *backup = NULL; + ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, &backup); + my_assert_ret(ret); + + ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, new_country); + my_assert_ret(ret); + + char *ret_country = NULL; + ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, &ret_country); + my_assert_ret(ret); + + if (ret_country != NULL && 0 == strcmp(ret_country, new_country)) { + assert(1); + } else { + assert(0); + } + + ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, backup); + my_assert_ret(ret); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_value_bool_p1 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO is able to set the property. + * check if SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO is able to get the property. + */ +RETTYPE utc_system_settings_set_value_bool_p1(void) +{ + int ret; + bool state = true; + ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO, state); + my_assert_ret(ret); + + bool ret_state = false; + ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO, &ret_state); + my_assert_ret(ret); + + //assert_eq(state, ret_state); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_value_bool_p2 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE is able to set the property. + * check if SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE is able to get the property. + */ +RETTYPE utc_system_settings_set_value_bool_p2(void) +{ + int ret; + bool state = true; + ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, state); + my_assert_ret(ret); + + bool ret_state = false; + ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, &ret_state); + my_assert_ret(ret); + + //assert_eq(state, ret_state); + + /* roll back */ + ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, !state); + my_assert_ret(ret); + + ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, &ret_state); + //assert_eq(ret_state, !state); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_changed_cb_n + * @since_tizen 2.3 + * @description check if system_settings_set_changed_cb is able to handle invalid parameters. + */ +RETTYPE utc_system_settings_set_changed_cb_n(void) +{ + int retcode = system_settings_set_changed_cb(-1, NULL, NULL); + assert(retcode != SYSTEM_SETTINGS_ERROR_NONE); + RETURN(0); +} + + + +/** + * @testcase utc_system_settings_get_value_int_p4 + * @since_tizen 3.0 + * @description check if SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE is able to get the property. + */ +RETTYPE utc_system_settings_get_value_int_p4(void) +{ + int value = 0; + int nRetVal = system_settings_get_value_int(SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE, &value); + my_assert_ret(nRetVal); + RETURN(0); +} + + + +/** + * @testcase utc_system_settings_set_value_int_p1 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME is able to get the property. + */ +RETTYPE utc_system_settings_set_value_int_p1(void) +{ + int nRetVal = system_settings_set_value_int(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, 30); + my_assert_ret(nRetVal); + + int value; + nRetVal = system_settings_get_value_int(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, &value); + //assert_eq(value, 30); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_value_int_n2 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME is able to set the properties with exceptional cases. + */ +RETTYPE utc_system_settings_set_value_int_n2(void) +{ + int ret = system_settings_set_value_int(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, -5); + assert(ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); + + ret = system_settings_set_value_int(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, 601); + assert(ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); + + ret = system_settings_set_value_int(SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME, 0); + assert(ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_value_bool_p3 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR is able to set the property. + * check if SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR is able to get the property. + */ +RETTYPE utc_system_settings_set_value_bool_p3(void) +{ + int ret; + bool state = true; + ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, state); + my_assert_ret(ret); + + bool ret_state = false; + ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, &ret_state); + my_assert_ret(ret); + + //assert_eq(state, ret_state); + + /* roll back */ + ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, !state); + my_assert_ret(ret); + + ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, &ret_state); + //assert_eq(ret_state, !state); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_value_bool_p4 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED is able to set the property. + * check if SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED is able to get the property. + */ +RETTYPE utc_system_settings_set_value_bool_p4(void) +{ + int ret; + + /* get current state */ + bool ret_state = false; + ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED, &ret_state); + my_assert_ret(ret); + + + bool state = !ret_state; + ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED, state); + my_assert_ret(ret); + + /* roll back */ + ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED, ret_state); + my_assert_ret(ret); + + assert(state != ret_state); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_value_bool_p5 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION is able to set the property. + * check if SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION is able to get the property. + */ +RETTYPE utc_system_settings_set_value_bool_p5(void) +{ + int ret; + + /* get current state */ + bool ret_state = false; + ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, &ret_state); + my_assert_ret(ret); + + + bool state = !ret_state; + ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, state); + my_assert_ret(ret); + + + /* roll back */ + ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, ret_state); + my_assert_ret(ret); + + assert(state != ret_state); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_value_bool_p6 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_VIBRATION is able to set the property. + * check if SYSTEM_SETTINGS_KEY_VIBRATION is able to get the property. + */ +RETTYPE utc_system_settings_set_value_bool_p6(void) +{ + int ret; + + /* get current state */ + bool ret_state = false; + ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_VIBRATION, &ret_state); + my_assert_ret(ret); + + + bool state = !ret_state; + ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_VIBRATION, state); + my_assert_ret(ret); + + + /* roll back */ + ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_VIBRATION, ret_state); + my_assert_ret(ret); + + assert(state != ret_state); + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_value_int_p2 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_FONT_SIZE is able to set the property. + * check if SYSTEM_SETTINGS_KEY_FONT_SIZE is able to get the property. + */ +RETTYPE utc_system_settings_set_value_int_p2(void) +{ + int ret = -1; + int backup; + int arr[] = { + SYSTEM_SETTINGS_FONT_SIZE_SMALL, + SYSTEM_SETTINGS_FONT_SIZE_NORMAL, + SYSTEM_SETTINGS_FONT_SIZE_LARGE, + SYSTEM_SETTINGS_FONT_SIZE_HUGE, + SYSTEM_SETTINGS_FONT_SIZE_GIANT + }; + + srand(time(NULL)); + int size = sizeof(arr)/sizeof(arr[0]); + int sel = rand() % size; + + /* backup */ + ret = system_settings_get_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, &backup); + my_assert_ret(ret); + + /* change font at random */ + ret = system_settings_set_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, sel); + my_assert_ret(ret); + + /* check if selection and result are identical. */ + int after; + ret = system_settings_get_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, &after); + //assert_eq(sel, after); + + /* roll back to backup */ + ret = system_settings_set_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, backup); + my_assert_ret(ret); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_set_value_string_n6 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION is able to set the property. + * check if SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION is able to get the property. + */ +RETTYPE utc_system_settings_set_value_string_n6(void) +{ + int ret; + ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION, new_ringtonepath); + my_assert_ret(ret); + //assert_eq(ret, SYSTEM_SETTINGS_ERROR_NONE); + + char *ret_ringtonepath = NULL; + ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION, &ret_ringtonepath); + + if (ret_ringtonepath != NULL && 0 == strcmp(ret_ringtonepath, new_ringtonepath)) { + my_assert_ret(0); + } else { + my_assert_ret(1); + } + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_n + * @since_tizen 2.3 + * @description check if system_settings_unset_changed_cb is able to handle invalid parameters. + */ +RETTYPE utc_system_settings_unset_changed_cb_n(void) +{ + int retcode = system_settings_unset_changed_cb(-1); + assert(retcode != SYSTEM_SETTINGS_ERROR_NONE); + RETURN(0); +} + + + +/** + * @testcase utc_system_settings_set_changed_cb_p27 + * @since_tizen 3.0 + * @description check if SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE is able to set the callback for change-notification. + */ +RETTYPE utc_system_settings_set_changed_cb_p27(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE, + callback, NULL); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_p26 + * @since_tizen 3.0 + * @description check if SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_unset_changed_cb_p26(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE); + my_assert_ret(retcode); + + RETURN(0); +} + +/** + * @testcase utc_system_settings_set_changed_cb_p29 + * @since_tizen 3.0 + * @description check if SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE_PKG_LIST is able to set the callback for change-notification. + */ +RETTYPE utc_system_settings_set_changed_cb_p29(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE_PKG_LIST, + callback, NULL); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_p28 + * @since_tizen 3.0 + * @description check if SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE_PKG_LIST is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE_PKG_LIST is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_unset_changed_cb_p28(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE_PKG_LIST, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE_PKG_LIST); + my_assert_ret(retcode); + + RETURN(0); +} + +/** + * @testcase utc_system_settings_set_changed_cb_p31 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS is able to set the callback for change-notification. + */ +RETTYPE utc_system_settings_set_changed_cb_p31(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS, + callback, NULL); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_p30 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_unset_changed_cb_p30(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS); + my_assert_ret(retcode); + + RETURN(0); +} + +/** + * @testcase utc_system_settings_set_changed_cb_p33 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_VIBRATION is able to set the callback for change-notification. + */ +RETTYPE utc_system_settings_set_changed_cb_p33(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_VIBRATION, + callback, NULL); + my_assert_ret(retcode); + + RETURN(0); +} + + +/** + * @testcase utc_system_settings_unset_changed_cb_p32 + * @since_tizen 2.3 + * @description check if SYSTEM_SETTINGS_KEY_VIBRATION is able to set the callback for change-notification. + * check if SYSTEM_SETTINGS_KEY_VIBRATION is able to unset the callback for change-notification. + */ +RETTYPE utc_system_settings_unset_changed_cb_p32(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_VIBRATION, + callback, NULL); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_VIBRATION); + my_assert_ret(retcode); + + RETURN(0); +} + +static int cb_count; +static bool system_setting_get_ringtone_list_cb(int index, const char* data, void *user_data) +{ + cb_count += 1; +/* printf("%s\n", (char*)data); */ + return true; +} + +RETTYPE utc_system_settings_add_ringtone_list_p1(void) +{ + int retcode = -1; + cb_count = 0; + retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/big_buck_bunny.mp4"); + my_assert_ret(retcode); + retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/daliTestVideo.mp4"); + my_assert_ret(retcode); + retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/sound_5.wav"); + my_assert_ret(retcode); + retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/tct-content-tizen-tests_video.mp4"); + my_assert_ret(retcode); + retcode = system_settings_foreach_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, system_setting_get_ringtone_list_cb, NULL); + my_assert_ret(retcode); + retcode = system_settings_delete_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/tct-content-tizen-tests_video.mp4"); + my_assert_ret(retcode); + retcode = system_settings_delete_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/sound_5.wav"); + my_assert_ret(retcode); + retcode = system_settings_delete_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/daliTestVideo.mp4"); + my_assert_ret(retcode); + retcode = system_settings_delete_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/big_buck_bunny.mp4"); + my_assert_ret(retcode); + assert_eq(cb_count, 5); + + RETURN(0); +} + +/** + * @function utc_system_settings_delete_ringtone_list_p1_startup + * @description Called before each test + * @parameter NA + * @return NA + */ + +/* system_settings - del ringtone list */ +RETTYPE utc_system_settings_delete_ringtone_list_p1(void) +{ + int retcode = -1; + retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/big_buck_bunny.mp4"); + my_assert_ret(retcode); + retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/daliTestVideo.mp4"); + my_assert_ret(retcode); + retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/sound_5.wav"); + my_assert_ret(retcode); + retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/tct-content-tizen-tests_video.mp4"); + my_assert_ret(retcode); + + retcode = system_settings_delete_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/tct-content-tizen-tests_video.mp4"); + my_assert_ret(retcode); + retcode = system_settings_delete_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/sound_5.wav"); + my_assert_ret(retcode); + retcode = system_settings_delete_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/daliTestVideo.mp4"); + my_assert_ret(retcode); + retcode = system_settings_delete_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/big_buck_bunny.mp4"); + my_assert_ret(retcode); + + RETURN(0); +} + +#include /* to use sleep */ +typedef struct __in_callback_test { + int call_cnt1; + int call_cnt2; +} __in_callback_data; + +static void utc_system_settings_changed_multi_callback1(system_settings_key_e key, void *user_data) +{ + __in_callback_data *cb_data = (__in_callback_data*)user_data; + if (!cb_data) + return; + cb_data->call_cnt1++; +} + +static void utc_system_settings_changed_multi_callback2(system_settings_key_e key, void *user_data) +{ + __in_callback_data *cb_data = (__in_callback_data*)user_data; + if (!cb_data) + return; + cb_data->call_cnt2++; +} + +static gpointer test_multi_callback_thread(gpointer arg) +{ + int retcode = system_settings_add_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, + utc_system_settings_changed_multi_callback1, arg); + my_assert_ret(retcode); + + retcode = system_settings_add_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, + utc_system_settings_changed_multi_callback1, arg); + + /* not support same callback about 1 system-settings key */ + assert_eq(retcode, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER); + + retcode = system_settings_add_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, + utc_system_settings_changed_multi_callback2, arg); + + bool bk_state = false; + system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR , &bk_state); + + bool state = true; + system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR , state); + + sleep(1); + + my_assert_ret(retcode); + retcode = system_settings_remove_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, + utc_system_settings_changed_multi_callback1); + my_assert_ret(retcode); + retcode = system_settings_remove_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, + utc_system_settings_changed_multi_callback2); + my_assert_ret(retcode); + + system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR , bk_state); + + return 0; + +} +/** + * @testcase utc_system_settings_add_changed_cb_p1 + * @since_tizen 4.0 + * @description check if SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR is able to set the callback for change-notification. + */ +RETTYPE utc_system_settings_add_changed_cb_p1(void) +{ + __in_callback_data *cb_data = calloc(sizeof(__in_callback_data), 1); + GThread *test_thread; + + test_thread = g_thread_new(NULL, test_multi_callback_thread, cb_data); + + g_thread_join(test_thread); + assert_eq(cb_data->call_cnt1, 1); + assert_eq(cb_data->call_cnt2, 1); + if (cb_data) + free(cb_data); + + RETURN(0); +} + + +RETTYPE utc_system_settings_changed_callback_1(system_settings_key_e key, void *user_data) +{ + _callback_called = true; +} + +RETTYPE utc_system_settings_changed_callback_2(system_settings_key_e key, void *user_data) +{ + _callback_called = true; +} + +RETTYPE utc_system_settings_add_remove_changed_cb_p1(void) +{ + int retcode = 0; + int key_idx = 0; + + for (key_idx = SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE; key_idx < SYSTEM_SETTINGS_KEY_MAX ; key_idx++) { + system_settings_changed_cb callback_1 = get_system_settings_test_callback(); + system_settings_changed_cb callback_2 = get_system_settings_test_callback(); + + if (key_idx == SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED + 1) + continue; /* skip removed system-setting key */ + + if (key_idx == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE) + continue; /* skip not supported notification callback of system-setting key */ + + retcode = system_settings_add_changed_cb(key_idx, + callback_1, NULL); + + if (retcode == SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED) { + assert_eq(retcode, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED); + } else { + if (retcode != SYSTEM_SETTINGS_ERROR_NONE) + printf("ERROR !! key =%d , ret = %d\n", key_idx, retcode); + } + + retcode = system_settings_remove_changed_cb(key_idx, + callback_1); + + if (retcode == SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED) { + assert_eq(retcode, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED); + } else { + if (retcode != SYSTEM_SETTINGS_ERROR_NONE) + printf("ERROR !! key =%d , ret = %d\n", key_idx, retcode); + } + + retcode = system_settings_add_changed_cb(key_idx, + callback_1, NULL); + my_assert_ret(retcode); + + retcode = system_settings_add_changed_cb(key_idx, + callback_2, NULL); + my_assert_ret(retcode); + + retcode = system_settings_remove_changed_cb(key_idx, + callback_1); + my_assert_ret(retcode); + + retcode = system_settings_remove_changed_cb(key_idx, + callback_2); + my_assert_ret(retcode); + } + + RETURN(0); +} + +RETTYPE utc_system_settings_ads_id_p1(void) +{ + system_settings_changed_cb callback = get_system_settings_test_callback(); + int retcode = 0; + char *ret_ads_id = NULL; + retcode = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_ADS_ID, &ret_ads_id); + + char *set_ads_id = "00000215-0156-0133-0034-000000000102"; + retcode = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_ADS_ID, set_ads_id); + my_assert_ret(retcode); + + system_settings_set_value_string(SYSTEM_SETTINGS_KEY_ADS_ID, ret_ads_id); + if (ret_ads_id) + free(ret_ads_id); + + retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_ADS_ID, + callback, NULL); + my_assert_ret(retcode); + + retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_ADS_ID); + my_assert_ret(retcode); + RETURN(0); +} + +RETTYPE utc_system_settings_lock_screen_app_p1(void) +{ + int retcode = 0; + char *ret_lock_screen_id = NULL; + retcode = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP, &ret_lock_screen_id); + + char *set_lock_screen_id = "org.tizen.voice-control-panel"; + retcode = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP, set_lock_screen_id); + my_assert_ret(retcode); + + system_settings_set_value_string(SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP, ret_lock_screen_id); + if (ret_lock_screen_id) + free(ret_lock_screen_id); + RETURN(0); +} + +void unittest_api() +{ + /* hook up your test functions */ + g_test_add_func("/utc_system_settings_add_changed_cb_p1", utc_system_settings_add_changed_cb_p1); + g_test_add_func("/utc_system_settings_add_remove_changed_cb_p1", utc_system_settings_add_remove_changed_cb_p1); + g_test_add_func("/utc_system_settings_ads_id_p1", utc_system_settings_ads_id_p1); + add_test_func("/utc_system_settings_lock_screen_app_p1", utc_system_settings_lock_screen_app_p1); + add_test_func("/utc_system_settings_get_value_string_p1", utc_system_settings_get_value_string_p1); + add_test_func("/utc_system_settings_get_value_string_p2", utc_system_settings_get_value_string_p2); + add_test_func("/utc_system_settings_get_value_string_p3", utc_system_settings_get_value_string_p3); + add_test_func("/utc_system_settings_get_value_string_p4", utc_system_settings_get_value_string_p4); + add_test_func("/utc_system_settings_get_value_string_p5", utc_system_settings_get_value_string_p5); + add_test_func("/utc_system_settings_get_value_string_p7", utc_system_settings_get_value_string_p7); + add_test_func("/utc_system_settings_get_value_string_p6", utc_system_settings_get_value_string_p6); + add_test_func("/utc_system_settings_get_value_string_p10", utc_system_settings_get_value_string_p10); + add_test_func("/utc_system_settings_get_value_string_p8", utc_system_settings_get_value_string_p8); + add_test_func("/utc_system_settings_get_value_string_p9", utc_system_settings_get_value_string_p9); + add_test_func("/utc_system_settings_get_value_string_p11", utc_system_settings_get_value_string_p11); + add_test_func("/utc_system_settings_get_value_string_n", utc_system_settings_get_value_string_n); + add_test_func("/utc_system_settings_get_value_bool_p1", utc_system_settings_get_value_bool_p1); + add_test_func("/utc_system_settings_get_value_bool_p2", utc_system_settings_get_value_bool_p2); + add_test_func("/utc_system_settings_get_value_bool_p3", utc_system_settings_get_value_bool_p3); + add_test_func("/utc_system_settings_get_value_bool_p4", utc_system_settings_get_value_bool_p4); + add_test_func("/utc_system_settings_get_value_bool_p5", utc_system_settings_get_value_bool_p5); + add_test_func("/utc_system_settings_get_value_bool_p6", utc_system_settings_get_value_bool_p6); + add_test_func("/utc_system_settings_get_value_bool_p7", utc_system_settings_get_value_bool_p7); + add_test_func("/utc_system_settings_get_value_bool_p8", utc_system_settings_get_value_bool_p8); + add_test_func("/utc_system_settings_get_value_bool_p9", utc_system_settings_get_value_bool_p9); + add_test_func("/utc_system_settings_get_value_bool_p10", utc_system_settings_get_value_bool_p10); + add_test_func("/utc_system_settings_get_value_bool_n", utc_system_settings_get_value_bool_n); + add_test_func("/utc_system_settings_get_value_int_p1", utc_system_settings_get_value_int_p1); + add_test_func("/utc_system_settings_get_value_int_p2", utc_system_settings_get_value_int_p2); + add_test_func("/utc_system_settings_get_value_n", utc_system_settings_get_value_n); + add_test_func("/utc_system_settings_get_value_int_p3", utc_system_settings_get_value_int_p3); + add_test_func("/utc_system_settings_get_value_bool_p11", utc_system_settings_get_value_bool_p11); + add_test_func("/utc_system_settings_get_value_int_p4", utc_system_settings_get_value_int_p4); + g_test_add_func("/utc_system_settings_set_value_string_n2", utc_system_settings_set_value_string_n2); + g_test_add_func("/utc_system_settings_set_value_string_n3", utc_system_settings_set_value_string_n3); + add_test_func("/utc_system_settings_set_value_string_n4", utc_system_settings_set_value_string_n4); + add_test_func("/utc_system_settings_set_value_string_n5", utc_system_settings_set_value_string_n5); + g_test_add_func("/utc_system_settings_set_value_string_n7", utc_system_settings_set_value_string_n7); + add_test_func("/utc_system_settings_set_value_string_n8", utc_system_settings_set_value_string_n8); + g_test_add_func("/utc_system_settings_set_changed_cb_p1", utc_system_settings_set_changed_cb_p1); + g_test_add_func("/utc_system_settings_unset_changed_cb_p1", utc_system_settings_unset_changed_cb_p1); + g_test_add_func("/utc_system_settings_set_changed_cb_p2", utc_system_settings_set_changed_cb_p2); + g_test_add_func("/utc_system_settings_unset_changed_cb_p2", utc_system_settings_unset_changed_cb_p2); + g_test_add_func("/utc_system_settings_set_changed_cb_p3", utc_system_settings_set_changed_cb_p3); + g_test_add_func("/utc_system_settings_unset_changed_cb_p3", utc_system_settings_unset_changed_cb_p3); + g_test_add_func("/utc_system_settings_set_changed_cb_p4", utc_system_settings_set_changed_cb_p4); + g_test_add_func("/utc_system_settings_LOCK_SCREEN_unset_changed_cb_p", utc_system_settings_LOCK_SCREEN_unset_changed_cb_p); + g_test_add_func("/utc_system_settings_set_changed_cb_p5", utc_system_settings_set_changed_cb_p5); + g_test_add_func("/utc_system_settings_unset_changed_cb_p4", utc_system_settings_unset_changed_cb_p4); + g_test_add_func("/utc_system_settings_set_changed_cb_p6", utc_system_settings_set_changed_cb_p6); + g_test_add_func("/utc_system_settings_unset_changed_cb_p5", utc_system_settings_unset_changed_cb_p5); + g_test_add_func("/utc_system_settings_set_changed_cb_p7", utc_system_settings_set_changed_cb_p7); + g_test_add_func("/utc_system_settings_unset_changed_cb_p6", utc_system_settings_unset_changed_cb_p6); + g_test_add_func("/utc_system_settings_set_changed_cb_p8", utc_system_settings_set_changed_cb_p8); + g_test_add_func("/utc_system_settings_unset_changed_cb_p7", utc_system_settings_unset_changed_cb_p7); + g_test_add_func("/utc_system_settings_set_changed_cb_p9", utc_system_settings_set_changed_cb_p9); + g_test_add_func("/utc_system_settings_unset_changed_cb_p8", utc_system_settings_unset_changed_cb_p8); + g_test_add_func("/utc_system_settings_set_changed_cb_p10", utc_system_settings_set_changed_cb_p10); + g_test_add_func("/utc_system_settings_unset_changed_cb_p9", utc_system_settings_unset_changed_cb_p9); + g_test_add_func("/utc_system_settings_set_changed_cb_p11", utc_system_settings_set_changed_cb_p11); + g_test_add_func("/utc_system_settings_unset_changed_cb_p10", utc_system_settings_unset_changed_cb_p10); + g_test_add_func("/utc_system_settings_set_changed_cb_p12", utc_system_settings_set_changed_cb_p12); + g_test_add_func("/utc_system_settings_unset_changed_cb_p11", utc_system_settings_unset_changed_cb_p11); + g_test_add_func("/utc_system_settings_set_changed_cb_p13", utc_system_settings_set_changed_cb_p13); + g_test_add_func("/utc_system_settings_unset_changed_cb_p12", utc_system_settings_unset_changed_cb_p12); + g_test_add_func("/utc_system_settings_set_changed_cb_p14", utc_system_settings_set_changed_cb_p14); + g_test_add_func("/utc_system_settings_unset_changed_cb_p13", utc_system_settings_unset_changed_cb_p13); + g_test_add_func("/utc_system_settings_set_changed_cb_p15", utc_system_settings_set_changed_cb_p15); + g_test_add_func("/utc_system_settings_unset_changed_cb_p14", utc_system_settings_unset_changed_cb_p14); + g_test_add_func("/utc_system_settings_set_changed_cb_p16", utc_system_settings_set_changed_cb_p16); + g_test_add_func("/utc_system_settings_unset_changed_cb_p15", utc_system_settings_unset_changed_cb_p15); + g_test_add_func("/utc_system_settings_set_changed_cb_p17", utc_system_settings_set_changed_cb_p17); + g_test_add_func("/utc_system_settings_unset_changed_cb_p16", utc_system_settings_unset_changed_cb_p16); + g_test_add_func("/utc_system_settings_set_changed_cb_p18", utc_system_settings_set_changed_cb_p18); + g_test_add_func("/utc_system_settings_unset_changed_cb_p17", utc_system_settings_unset_changed_cb_p17); + g_test_add_func("/utc_system_settings_set_changed_cb_p19", utc_system_settings_set_changed_cb_p19); + g_test_add_func("/utc_system_settings_unset_changed_cb_p18", utc_system_settings_unset_changed_cb_p18); + g_test_add_func("/utc_system_settings_set_changed_cb_p20", utc_system_settings_set_changed_cb_p20); + g_test_add_func("/utc_system_settings_unset_changed_cb_p19;", utc_system_settings_unset_changed_cb_p19); + g_test_add_func("/utc_system_settings_set_changed_cb_p21", utc_system_settings_set_changed_cb_p21); + g_test_add_func("/utc_system_settings_unset_changed_cb_p20", utc_system_settings_unset_changed_cb_p20); + g_test_add_func("/utc_system_settings_set_changed_cb_p22", utc_system_settings_set_changed_cb_p22); + g_test_add_func("/utc_system_settings_unset_changed_cb_p21", utc_system_settings_unset_changed_cb_p21); + g_test_add_func("/utc_system_settings_set_changed_cb_p23", utc_system_settings_set_changed_cb_p23); + g_test_add_func("/utc_system_settings_unset_changed_cb_p22", utc_system_settings_unset_changed_cb_p22); + g_test_add_func("/utc_system_settings_set_changed_cb_p24", utc_system_settings_set_changed_cb_p24); + g_test_add_func("/utc_system_settings_unset_changed_cb_p23", utc_system_settings_unset_changed_cb_p23); + g_test_add_func("/utc_system_settings_set_changed_cb_p25", utc_system_settings_set_changed_cb_p25); + g_test_add_func("/utc_system_settings_unset_changed_cb_p24", utc_system_settings_unset_changed_cb_p24); + g_test_add_func("/utc_system_settings_set_changed_cb_p27", utc_system_settings_set_changed_cb_p27); + g_test_add_func("/utc_system_settings_unset_changed_cb_p26", utc_system_settings_unset_changed_cb_p26); + g_test_add_func("/utc_system_settings_set_changed_cb_p29", utc_system_settings_set_changed_cb_p29); + g_test_add_func("/utc_system_settings_unset_changed_cb_p28", utc_system_settings_unset_changed_cb_p28); + g_test_add_func("/utc_system_settings_set_changed_cb_p31", utc_system_settings_set_changed_cb_p31); + g_test_add_func("/utc_system_settings_unset_changed_cb_p30", utc_system_settings_unset_changed_cb_p30); + g_test_add_func("/utc_system_settings_set_changed_cb_p33", utc_system_settings_set_changed_cb_p33); + g_test_add_func("/utc_system_settings_unset_changed_cb_p32", utc_system_settings_unset_changed_cb_p32); + g_test_add_func("/utc_system_settings_add_ringtone_list_p1", utc_system_settings_add_ringtone_list_p1); + g_test_add_func("/utc_system_settings_delete_ringtone_list_p1", utc_system_settings_delete_ringtone_list_p1); + add_test_func("/utc_system_settings_set_value_string_p1", utc_system_settings_set_value_string_p1); + add_test_func("/utc_system_settings_set_value_string_p2", utc_system_settings_set_value_string_p2); + g_test_add_func("/utc_system_settings_set_value_string_p3", utc_system_settings_set_value_string_p3); + g_test_add_func("/utc_system_settings_set_value_string_p4", utc_system_settings_set_value_string_p4); + add_test_func("/utc_system_settings_set_value_bool_n1", utc_system_settings_set_value_bool_n1); + add_test_func("/utc_system_settings_set_value_bool_n2", utc_system_settings_set_value_bool_n2); + add_test_func("/utc_system_settings_set_value_bool_n3", utc_system_settings_set_value_bool_n3); + add_test_func("/utc_system_settings_set_value_bool_n4", utc_system_settings_set_value_bool_n4); + add_test_func("/utc_system_settings_set_value_bool_n5", utc_system_settings_set_value_bool_n5); + add_test_func("/utc_system_settings_set_value_bool_n6", utc_system_settings_set_value_bool_n6); + add_test_func("/utc_system_settings_set_value_bool_p1", utc_system_settings_set_value_bool_p1); + add_test_func("/utc_system_settings_set_value_bool_p2", utc_system_settings_set_value_bool_p2); + add_test_func("/utc_system_settings_set_value_int_n1", utc_system_settings_set_value_int_n1); + g_test_add_func("/utc_system_settings_set_changed_cb_n", utc_system_settings_set_changed_cb_n); + add_test_func("/utc_system_settings_set_value_int_p1", utc_system_settings_set_value_int_p1); + add_test_func("/utc_system_settings_set_value_int_n2", utc_system_settings_set_value_int_n2); + add_test_func("/utc_system_settings_set_value_bool_p3", utc_system_settings_set_value_bool_p3); + add_test_func("/utc_system_settings_set_value_bool_p4", utc_system_settings_set_value_bool_p4); + add_test_func("/utc_system_settings_set_value_bool_p5", utc_system_settings_set_value_bool_p5); + add_test_func("/utc_system_settings_set_value_bool_p6", utc_system_settings_set_value_bool_p6); + add_test_func("/utc_system_settings_set_value_int_p2", utc_system_settings_set_value_int_p2); + add_test_func("/utc_system_settings_set_value_string_n6", utc_system_settings_set_value_string_n6); + g_test_add_func("/utc_system_settings_unset_changed_cb_n", utc_system_settings_unset_changed_cb_n); +} + diff --git a/unit_test/src/unit_test_fw.c b/unit_test/src/unit_test_fw.c new file mode 100644 index 0000000..4f92c32 --- /dev/null +++ b/unit_test/src/unit_test_fw.c @@ -0,0 +1,120 @@ +#include + +typedef struct __thread_test_table { + char * test_name; + GTestFunc t_func; +} thread_test_node; + + +static GThread *my_thread = NULL; +static GMainLoop *main_loop = NULL; +static thread_test_node thread_test_table[1000] = {0}; +static int thread_test_idx = 0; +static int loop = 100; +static int thread_sw = 1; + + +void *thread_function(void *data) +{ + int cnt = 0; + int test_idx = (int)data; + + while (thread_sw) { + if (cnt > loop) + break; + cnt++; + thread_test_table[test_idx].t_func(); + sleep(0); + } + + return 0; + +} + +static GThread **unit_test_thread_start(int test_num) +{ + int i; + GThread **thread_list = (GThread **)calloc(sizeof(GThread*), N_THREADS); + for (i = 0; i < N_THREADS; i++) { + thread_list[i] = g_thread_new(NULL, thread_function, (void*)test_num); + } + return thread_list; +} + +static void unit_test_thread_stop(GThread **thread_list) +{ + int i; + for (i = 0; i < N_THREADS; i++) { + g_thread_join(thread_list[i]); + } + + g_free(thread_list); +} + +static void unit_thread_test() +{ + int i; + GThread **thread_test[MAX_TEST_CASE]; + + printf("START!!!! thread test for system-settings %d tests\n", thread_test_idx); + + thread_sw = 1; + for (i = 0; i < thread_test_idx; i++) { + thread_test[i] = unit_test_thread_start(i); + printf("%3d %s:start!\n", i, thread_test_table[i].test_name); + + unit_test_thread_stop(thread_test[i]); + printf("%3d %s:OK\n", i, thread_test_table[i].test_name); + } + + printf("END!!!! thread test for system-settings\n"); +} + +static gpointer loop_func(gpointer data) +{ + g_main_loop_run(main_loop); + return NULL; +} + +static void start_main_loop_thread() +{ + my_thread = g_thread_new(NULL, loop_func, NULL); +} + +static void stop_main_loop_thread() +{ + g_main_loop_quit(main_loop); + g_thread_join(my_thread); + g_main_loop_unref(main_loop); +} + +int main(int argc, char* argv[]) +{ + ecore_evas_init(); + + main_loop = g_main_loop_new(NULL, FALSE); + + g_test_init(&argc, &argv, NULL); + g_test_set_nonfatal_assertions(); + + start_main_loop_thread(); + + unittest_api(); + + g_test_run(); + unit_thread_test(); + + stop_main_loop_thread(); + return 0; +} + +void add_test_func(char * test_name, GTestFunc func_pointer) +{ + g_test_add_func(test_name, func_pointer); + + thread_test_table[thread_test_idx].test_name = test_name; + thread_test_table[thread_test_idx].t_func = func_pointer; + + thread_test_idx++; +} + -- 2.7.4