#include <Ecore.h>
#include <system_info.h>
#include <tzplatform_config.h>
+#include <vconf.h>
#include <tts.h>
#include <tts_internal.h>
static char *g_language = NULL;
static int g_voice_type;
static int is_created_hndl = -1;
-static void __tts_state_changed_cb(tts_h tts, tts_state_e previous, tts_state_e current, void* user_data);
static bool g_supported = false;
static tts_state_e g_current_state;
static bool g_utterance_started_cb = false;
static bool g_utterance_completed_cb = false;
+static bool g_screen_reader_changed_cb = false;
+static bool g_error_cb = false;
+static const char* g_test_engine = "test";
static int g_utt_id = -1;
static char* g_pcm_data = nullptr;
static long g_pcm_size = 0;
of the target prosody (pitch contour, phoneme durations),[4] which is then imposed on the output speech. From Wikipedia";
static const int g_sample_rate = 24000;
+static const char* ENGINE_VCONF_KEY = "db/voice/tts/engine/default";
static bool __tts_supported_voice_cb(tts_h tts, const char* language, int voice_type, void* user_data)
{
g_current_state = current;
}
+static void __tts_state_changed_cb_destroy_test(tts_h tts, tts_state_e previous, tts_state_e current, void* user_data)
+{
+ g_current_state = current;
+
+ ASSERT_NE(tts_destroy(g_tts), TTS_ERROR_NONE);
+}
+
static void __tts_utterance_started_cb(tts_h tts, int utt_id, void* user_data)
{
g_utterance_started_cb = true;
static void __tts_error_cb(tts_h tts, int utt_id, tts_error_e reason, void* user_data)
{
+ g_error_cb = true;
}
static void __tts_default_voice_changed_cb(tts_h tts, const char* previous_language, int previous_voice_type, const char* current_language, int current_voice_type, void* user_data)
{
}
+static void __tts_screen_reader_changed_cb(tts_h tts, bool is_on, void* user_data)
+{
+ g_screen_reader_changed_cb = true;
+}
+
+static void __tts_engine_changed_cb(tts_h tts, const char* engine_id, const char* language, int voice_type, bool need_credential, void* user_data)
+{
+}
+
static bool __is_state_changed(tts_state_e state, int wait_delay)
{
int max_count = wait_delay * 10;
return true;
}
+static bool __is_screen_reader_changed(int wait_delay)
+{
+ int max_count = wait_delay * 10;
+ int count = 0;
+ while (max_count > count && false == g_screen_reader_changed_cb) {
+ ecore_main_loop_iterate();
+ usleep(100000);
+ count++;
+ }
+
+ return g_screen_reader_changed_cb;
+}
+
+static bool __is_error_occur(int wait_delay)
+{
+ int max_count = wait_delay * 10;
+ int count = 0;
+ while (max_count > count && false == g_error_cb) {
+ ecore_main_loop_iterate();
+ usleep(100000);
+ count++;
+ }
+
+ return g_error_cb;
+}
+
static void __get_test_PCM_Data()
{
const char* pcm_path = tzplatform_mkpath(tzplatform_getid("TZ_SYS_RO_APP"), "/org.tizen.tts-unittests/res/test_pcm.dat");
EXPECT_EQ(ret, TTS_ERROR_NONE);
}
+TEST_F(TTSTest, utc_tts_destroy_n3)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_destroy(g_tts), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(tts_set_state_changed_cb(g_tts, __tts_state_changed_cb_destroy_test, nullptr), TTS_ERROR_NONE);
+ EXPECT_EQ(tts_prepare_sync(g_tts), TTS_ERROR_NONE);
+}
+
TEST_F(TTSTest, utc_tts_set_mode_p)
{
int ret = TTS_ERROR_NONE;
}
/**
+ * @testcase utc_tts_prepare_n3
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts sets screen reader mode without feature on.
+ */
+TEST_F(TTSTest, utc_tts_prepare_n3)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_prepare(g_tts), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_set_mode(g_tts, TTS_MODE_SCREEN_READER), TTS_ERROR_NONE);
+ ASSERT_NE(tts_prepare(g_tts), TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_prepare_n4
+ * @since_tizen 2.3
+ * @description test whether state does not change to ready. (expired handle)
+ */
+TEST_F(TTSTest, utc_tts_prepare_n4)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_prepare(g_tts), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_prepare(g_tts), TTS_ERROR_NONE);
+ EXPECT_EQ(tts_destroy(g_tts), TTS_ERROR_NONE);
+
+ EXPECT_EQ(false, __is_state_changed(TTS_STATE_READY, 5));
+
+ EXPECT_EQ(tts_create(&g_tts), TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_prepare_n5
+ * @since_tizen 2.3
+ * @description test whether state does not change to ready. (screen reader feature off)
+ */
+TEST_F(TTSTest, utc_tts_prepare_n5)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_prepare(g_tts), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_set_mode(g_tts, TTS_MODE_SCREEN_READER), TTS_ERROR_NONE);
+ EXPECT_EQ(vconf_set_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, true), 0);
+
+ EXPECT_EQ(tts_prepare(g_tts), TTS_ERROR_NONE);
+
+ EXPECT_EQ(vconf_set_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, false), 0);
+ EXPECT_EQ(false, __is_state_changed(TTS_STATE_READY, 5));
+}
+
+/**
* @testcase utc_tts_prepare_sync_p
* @since_tizen 2.3
* @description test whether tts daemon is prepared properly.
}
/**
+ * @testcase utc_tts_prepare_sync_n3
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts sets screen reader mode without feature on.
+ */
+TEST_F(TTSTest, utc_tts_prepare_sync_n3)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_prepare_sync(g_tts), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_set_mode(g_tts, TTS_MODE_SCREEN_READER), TTS_ERROR_NONE);
+ ASSERT_NE(tts_prepare_sync(g_tts), TTS_ERROR_NONE);
+}
+
+/**
* @testcase utc_tts_foreach_supported_voices_p
* @since_tizen 2.3
* @description test whether each supported voices are gotten properly.
}
/**
+ * @testcase utc_tts_add_text_n6
+ * @since_tizen 2.3
+ * @description test whether function returns error with empty string.
+ */
+TEST_F(TTSPreparedTest, utc_tts_add_text_n6)
+{
+ int utt_id;
+ if (g_supported == false) {
+ EXPECT_EQ(tts_add_text(g_tts, "", g_language, g_voice_type, TTS_SPEED_AUTO, &utt_id), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_NE(tts_add_text(g_tts, "", g_language, g_voice_type, TTS_SPEED_AUTO, &utt_id), TTS_ERROR_NONE);
+}
+
+/**
* @testcase utc_tts_play_p
* @since_tizen 2.3
* @description test whether tts is played properly.
}
/**
+ * @testcase utc_tts_play_p3
+ * @since_tizen 2.3
+ * @description test whether tts is played all text properly.
+ */
+TEST_F(TTSPreparedWithUttCbTest, utc_tts_play_p3)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_play(g_tts), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ g_utterance_completed_cb = false;
+
+ int utt_id1 = -1;
+ int utt_id2 = -1;
+ EXPECT_EQ(tts_add_text(g_tts, "1 2 3 4 5", g_language, g_voice_type, TTS_SPEED_AUTO, &utt_id1), TTS_ERROR_NONE);
+ EXPECT_EQ(tts_add_text(g_tts, "1 2 3 4 5", g_language, g_voice_type, TTS_SPEED_AUTO, &utt_id2), TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_play(g_tts), TTS_ERROR_NONE);
+ EXPECT_EQ(true, __is_state_changed(TTS_STATE_PLAYING, 5));
+
+ while (true != g_utterance_completed_cb) {
+ ecore_main_loop_iterate();
+ }
+ g_utterance_completed_cb = false;
+ EXPECT_EQ(utt_id1, g_utt_id);
+
+ while (true != g_utterance_completed_cb) {
+ ecore_main_loop_iterate();
+ }
+ EXPECT_EQ(utt_id2, g_utt_id);
+
+ EXPECT_EQ(tts_stop(g_tts), TTS_ERROR_NONE);
+ EXPECT_EQ(true, __is_state_changed(TTS_STATE_READY, 5));
+}
+
+/**
+ * @testcase utc_tts_play_p4
+ * @since_tizen 2.3
+ * @description test whether tts is played properly.
+ */
+TEST_F(TTSPreparedTest, utc_tts_play_p4)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_play(g_tts), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ tts_h tts = NULL;
+ EXPECT_EQ(tts_create(&tts), TTS_ERROR_NONE);
+ EXPECT_EQ(tts_prepare_sync(tts), TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_play(g_tts), TTS_ERROR_NONE);
+ EXPECT_EQ(true, __is_state_changed(TTS_STATE_PLAYING, 5));
+
+ EXPECT_EQ(tts_play(tts), TTS_ERROR_NONE);
+ EXPECT_EQ(true, __is_state_changed(TTS_STATE_READY, 5));
+
+ EXPECT_EQ(tts_stop(g_tts), TTS_ERROR_NONE);
+ EXPECT_EQ(tts_stop(tts), TTS_ERROR_NONE);
+ EXPECT_EQ(tts_unprepare(tts), TTS_ERROR_NONE);
+ EXPECT_EQ(tts_destroy(tts), TTS_ERROR_NONE);
+ tts = NULL;
+}
+
+/**
* @testcase utc_tts_play_n
* @since_tizen 2.3
* @description test whether function returns error with NULL parameter.
}
/**
+ * @testcase utc_tts_play_n4
+ * @since_tizen 2.3
+ * @description test whether function returns error when interrupt mode client plays.
+ */
+TEST_F(TTSPreparedTest, utc_tts_play_n4)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_play(g_tts), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ tts_h tts = NULL;
+ EXPECT_EQ(tts_create(&tts), TTS_ERROR_NONE);
+ EXPECT_EQ(tts_set_mode(tts, (tts_mode_e)TTS_MODE_INTERRUPT), TTS_ERROR_NONE);
+ EXPECT_EQ(tts_prepare_sync(tts), TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_play(tts), TTS_ERROR_NONE);
+ EXPECT_EQ(true, __is_state_changed(TTS_STATE_READY, 5));
+
+ EXPECT_NE(tts_play(g_tts), TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_stop(tts), TTS_ERROR_NONE);
+ EXPECT_EQ(tts_unprepare(tts), TTS_ERROR_NONE);
+ EXPECT_EQ(tts_destroy(tts), TTS_ERROR_NONE);
+ tts = NULL;
+}
+
+/**
* @testcase utc_tts_pause_p
* @since_tizen 2.3
* @description test whether tts is paused properly.
EXPECT_EQ(ret, TTS_ERROR_NONE);
}
+/**
+ * @testcase utc_tts_unprepare_p3
+ * @since_tizen 2.3
+ * @description test whether tts is unprepared properly when tts is in screen reader mode.
+ */
+TEST_F(TTSTest, utc_tts_unprepare_p3)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_unprepare(g_tts), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(vconf_set_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, true), 0);
+ EXPECT_EQ(tts_set_mode(g_tts, TTS_MODE_SCREEN_READER), TTS_ERROR_NONE);
+ EXPECT_EQ(tts_prepare(g_tts), TTS_ERROR_NONE);
+ EXPECT_EQ(true, __is_state_changed(TTS_STATE_READY, 5));
+
+
+ EXPECT_EQ(vconf_set_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, false), 0);
+ EXPECT_EQ(tts_unprepare(g_tts), TTS_ERROR_NONE);
+}
+
TEST_F(TTSTest, utc_tts_unprepare_n)
{
int ret = tts_unprepare(NULL);
}
/**
+ * @testcase utc_tts_set_error_cb_p2
+ * @since_tizen 2.3
+ * @description test whether error callback function is invoked when error occurs.
+ */
+TEST_F(TTSTest, utc_tts_set_error_cb_p2)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_set_error_cb(g_tts, __tts_error_cb, NULL), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ char* engine_id = vconf_get_str(ENGINE_VCONF_KEY);
+
+ g_error_cb = false;
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+ EXPECT_EQ(tts_set_error_cb(g_tts, __tts_error_cb, NULL), TTS_ERROR_NONE);
+ EXPECT_EQ(tts_prepare(g_tts), TTS_ERROR_NONE);
+ EXPECT_EQ(true, __is_state_changed(TTS_STATE_READY, 5));
+
+ EXPECT_EQ(vconf_set_str(ENGINE_VCONF_KEY, g_test_engine), 0);
+
+ EXPECT_EQ(__is_error_occur(5), true);
+ sleep(1);
+
+ EXPECT_EQ(vconf_set_str(ENGINE_VCONF_KEY, engine_id), 0);
+ g_current_state = TTS_STATE_CREATED;
+ EXPECT_EQ(true, __is_state_changed(TTS_STATE_READY, 5));
+ EXPECT_EQ(tts_unprepare(g_tts), TTS_ERROR_NONE);
+}
+
+/**
* @testcase utc_tts_set_error_cb_n
* @since_tizen 2.3
* @description test whether function returns error with NULL parameter.
}
/**
+ * @testcase utc_tts_get_error_message_p
+ * @since_tizen 3.0
+ * @description Positive UTC for get error message
+ */
+TEST_F(TTSTest, utc_tts_get_error_message_p)
+{
+ char* error_message = nullptr;
+ if (g_supported == false) {
+ EXPECT_EQ(tts_get_error_message(g_tts, &error_message), TTS_ERROR_NOT_SUPPORTED);
+ free(error_message);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_get_error_message(g_tts, &error_message), TTS_ERROR_NONE);
+ free(error_message);
+}
+
+/**
+ * @testcase utc_tts_get_error_message_p2
+ * @since_tizen 3.0
+ * @description Positive UTC for get error message
+ */
+TEST_F(TTSTest, utc_tts_get_error_message_p2)
+{
+ char* error_message = nullptr;
+ if (g_supported == false) {
+ EXPECT_EQ(tts_get_error_message(g_tts, &error_message), TTS_ERROR_NOT_SUPPORTED);
+ free(error_message);
+ return;
+ }
+
+ char* engine_id = vconf_get_str(ENGINE_VCONF_KEY);
+
+ g_error_cb = false;
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+ EXPECT_EQ(tts_set_error_cb(g_tts, __tts_error_cb, NULL), TTS_ERROR_NONE);
+ EXPECT_EQ(tts_prepare(g_tts), TTS_ERROR_NONE);
+ EXPECT_EQ(true, __is_state_changed(TTS_STATE_READY, 5));
+
+ EXPECT_EQ(vconf_set_str(ENGINE_VCONF_KEY, g_test_engine), 0);
+
+ EXPECT_EQ(__is_error_occur(5), true);
+
+ EXPECT_EQ(tts_get_error_message(g_tts, &error_message), TTS_ERROR_NONE);
+ EXPECT_NE(error_message, nullptr);
+ free(error_message);
+
+ sleep(1);
+
+ EXPECT_EQ(vconf_set_str(ENGINE_VCONF_KEY, engine_id), 0);
+ g_current_state = TTS_STATE_CREATED;
+ EXPECT_EQ(true, __is_state_changed(TTS_STATE_READY, 5));
+ EXPECT_EQ(tts_unprepare(g_tts), TTS_ERROR_NONE);
+}
+
+/**
* @testcase utc_tts_get_error_message_n
* @since_tizen 3.0
* @description Negative UTC for get error message (invalid parameter)
/**
+ * @testcase utc_tts_set_server_tts_p
+ * @since_tizen 3.0
+ * @description Positive UTC for set server TTS as enabled
+ */
+TEST_F(TTSPreparedTest, utc_tts_set_server_tts_p)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_set_server_tts(g_tts, "test"), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_set_server_tts(g_tts, "test"), TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_server_tts_p2
+ * @since_tizen 3.0
+ * @description Positive UTC for set server TTS as disabled
+ */
+TEST_F(TTSPreparedTest, utc_tts_set_server_tts_p2)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_set_server_tts(g_tts, nullptr), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_set_server_tts(g_tts, nullptr), TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_server_tts_n
+ * @since_tizen 3.0
+ * @description Negative UTC for set server TTS (Invalid parameter)
+ */
+TEST_F(TTSTest, utc_tts_set_server_tts_n)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_set_server_tts(nullptr, "test"), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_set_server_tts(nullptr, "test"), TTS_ERROR_INVALID_PARAMETER);
+}
+
+/**
+ * @testcase utc_tts_set_server_tts_n2
+ * @since_tizen 3.0
+ * @description Negative UTC for set server TTS (Invalid state)
+ */
+TEST_F(TTSPreparedTest, utc_tts_set_server_tts_n2)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_set_server_tts(g_tts, "test"), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_play(g_tts), TTS_ERROR_NONE);
+ EXPECT_EQ(true, __is_state_changed(TTS_STATE_PLAYING, 5));
+
+ EXPECT_EQ(tts_set_server_tts(g_tts, "test"), TTS_ERROR_INVALID_STATE);
+
+ EXPECT_EQ(tts_stop(g_tts), TTS_ERROR_NONE);
+ EXPECT_EQ(true, __is_state_changed(TTS_STATE_READY, 5));
+}
+
+/**
+ * @testcase utc_tts_check_screen_reader_on_p
+ * @since_tizen 6.5
+ * @description Positive UTC for checking screen reader on
+ */
+TEST_F(TTSTest, utc_tts_check_screen_reader_on_p)
+{
+ bool is_on = false;
+ if (g_supported == false) {
+ EXPECT_EQ(tts_check_screen_reader_on(g_tts, &is_on), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_check_screen_reader_on(g_tts, &is_on), TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_check_screen_reader_on_p2
+ * @since_tizen 6.5
+ * @description Positive UTC for checking screen reader on
+ */
+TEST_F(TTSTest, utc_tts_check_screen_reader_on_p2)
+{
+ bool is_on = false;
+ if (g_supported == false) {
+ EXPECT_EQ(tts_check_screen_reader_on(g_tts, &is_on), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_set_mode(g_tts, TTS_MODE_SCREEN_READER), TTS_ERROR_NONE);
+
+ EXPECT_EQ(vconf_set_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, false), 0);
+ EXPECT_EQ(tts_check_screen_reader_on(g_tts, &is_on), TTS_ERROR_NONE);
+
+ EXPECT_EQ(is_on, false);
+}
+
+/**
+ * @testcase utc_tts_check_screen_reader_on_n
+ * @since_tizen 6.5
+ * @description Negative UTC for checking screen reader on (invalid parameter)
+ */
+TEST_F(TTSTest, utc_tts_check_screen_reader_on_n)
+{
+ bool is_on = false;
+ if (g_supported == false) {
+ EXPECT_EQ(tts_check_screen_reader_on(g_tts, nullptr), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_check_screen_reader_on(g_tts, nullptr), TTS_ERROR_INVALID_PARAMETER);
+ EXPECT_EQ(tts_check_screen_reader_on(nullptr, &is_on), TTS_ERROR_INVALID_PARAMETER);
+}
+
+/**
+ * @testcase utc_tts_set_screen_reader_changed_cb_p
+ * @since_tizen 6.5
+ * @description Positive UTC for set screen reader changed callback
+ */
+TEST_F(TTSTest, utc_tts_set_screen_reader_changed_cb_p)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_set_screen_reader_changed_cb(g_tts, __tts_screen_reader_changed_cb, nullptr), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_set_screen_reader_changed_cb(g_tts, __tts_screen_reader_changed_cb, nullptr), TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_screen_reader_changed_cb_p2
+ * @since_tizen 6.5
+ * @description Positive UTC for invoking screen reader changed callback
+ */
+TEST_F(TTSTest, utc_tts_set_screen_reader_changed_cb_p2)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_set_screen_reader_changed_cb(g_tts, __tts_screen_reader_changed_cb, nullptr), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ g_screen_reader_changed_cb = false;
+ EXPECT_EQ(vconf_set_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, true), 0);
+ EXPECT_EQ(tts_set_screen_reader_changed_cb(g_tts, __tts_screen_reader_changed_cb, nullptr), TTS_ERROR_NONE);
+
+ EXPECT_EQ(vconf_set_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, false), 0);
+ EXPECT_EQ(__is_screen_reader_changed(5), true);
+}
+
+/**
+ * @testcase utc_tts_set_screen_reader_changed_cb_n
+ * @since_tizen 6.5
+ * @description Negative UTC for set screen reader changed callback (Invalid handle)
+ */
+TEST_F(TTSTest, utc_tts_set_screen_reader_changed_cb_n)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_set_screen_reader_changed_cb(nullptr, __tts_screen_reader_changed_cb, nullptr), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(tts_set_screen_reader_changed_cb(nullptr, __tts_screen_reader_changed_cb, nullptr), TTS_ERROR_INVALID_PARAMETER);
+}
+
+/**
+ * @testcase utc_tts_set_screen_reader_changed_cb_n2
+ * @since_tizen 6.5
+ * @description Negative UTC for set screen reader changed callback (Invalid parameter)
+ */
+TEST_F(TTSTest, utc_tts_set_screen_reader_changed_cb_n2)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_set_screen_reader_changed_cb(g_tts, nullptr, nullptr), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(tts_set_screen_reader_changed_cb(g_tts, nullptr, nullptr), TTS_ERROR_INVALID_PARAMETER);
+}
+
+/**
+ * @testcase utc_tts_set_screen_reader_changed_cb_n2
+ * @since_tizen 6.5
+ * @description Negative UTC for set screen reader changed callback (Invalid state)
+ */
+TEST_F(TTSPreparedTest, utc_tts_set_screen_reader_changed_cb_n2)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_set_screen_reader_changed_cb(g_tts, __tts_screen_reader_changed_cb, nullptr), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_set_screen_reader_changed_cb(g_tts, __tts_screen_reader_changed_cb, nullptr), TTS_ERROR_INVALID_STATE);
+}
+
+/**
+ * @testcase utc_tts_unset_screen_reader_changed_cb_p
+ * @since_tizen 6.5
+ * @description Positive UTC for unset screen reader changed callback
+ */
+TEST_F(TTSTest, utc_tts_unset_screen_reader_changed_cb_p)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_unset_screen_reader_changed_cb(g_tts), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_set_screen_reader_changed_cb(g_tts, __tts_screen_reader_changed_cb, nullptr), TTS_ERROR_NONE);
+ EXPECT_EQ(tts_unset_screen_reader_changed_cb(g_tts), TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_unset_screen_reader_changed_cb_n
+ * @since_tizen 6.5
+ * @description Negative UTC for unset screen reader changed callback (Invalid handle)
+ */
+TEST_F(TTSTest, utc_tts_unset_screen_reader_changed_cb_n)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_unset_screen_reader_changed_cb(nullptr), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(tts_unset_screen_reader_changed_cb(nullptr), TTS_ERROR_INVALID_PARAMETER);
+}
+
+/**
+ * @testcase utc_tts_unset_screen_reader_changed_cb_n2
+ * @since_tizen 6.5
+ * @description Negative UTC for unset screen reader changed callback (Invalid state)
+ */
+TEST_F(TTSTest, utc_tts_unset_screen_reader_changed_cb_n2)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_unset_screen_reader_changed_cb(g_tts), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_set_screen_reader_changed_cb(g_tts, __tts_screen_reader_changed_cb, nullptr), TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_prepare(g_tts), TTS_ERROR_NONE);
+ EXPECT_EQ(true, __is_state_changed(TTS_STATE_READY, 5));
+
+ EXPECT_EQ(tts_unset_screen_reader_changed_cb(g_tts), TTS_ERROR_INVALID_STATE);
+
+ EXPECT_EQ(tts_unprepare(g_tts), TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_engine_changed_cb_p
+ * @since_tizen 3.0
+ * @description Positive UTC for set current engine changed callback
+ */
+TEST_F(TTSTest, utc_tts_set_engine_changed_cb_p)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_set_engine_changed_cb(g_tts, __tts_engine_changed_cb, nullptr), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_set_engine_changed_cb(g_tts, __tts_engine_changed_cb, nullptr), TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_engine_changed_cb_n
+ * @since_tizen 3.0
+ * @description Negative UTC for set current engine changed callback (Invalid handle)
+ */
+TEST_F(TTSTest, utc_tts_set_engine_changed_cb_n)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_set_engine_changed_cb(nullptr, __tts_engine_changed_cb, nullptr), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(tts_set_engine_changed_cb(nullptr, __tts_engine_changed_cb, nullptr), TTS_ERROR_INVALID_PARAMETER);
+}
+
+/**
+ * @testcase utc_tts_set_engine_changed_cb_n2
+ * @since_tizen 3.0
+ * @description Negative UTC for set current engine changed callback (Invalid state)
+ */
+TEST_F(TTSPreparedTest, utc_tts_set_engine_changed_cb_n2)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_set_engine_changed_cb(g_tts, __tts_engine_changed_cb, nullptr), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_set_engine_changed_cb(g_tts, __tts_engine_changed_cb, nullptr), TTS_ERROR_INVALID_STATE);
+}
+
+/**
+ * @testcase utc_tts_unset_engine_changed_cb_p
+ * @since_tizen 3.0
+ * @description Positive UTC for unset current engine changed callback
+ */
+TEST_F(TTSTest, utc_tts_unset_engine_changed_cb_p)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_unset_engine_changed_cb(g_tts), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_set_engine_changed_cb(g_tts, __tts_engine_changed_cb, nullptr), TTS_ERROR_NONE);
+ EXPECT_EQ(tts_unset_engine_changed_cb(g_tts), TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_unset_engine_changed_cb_n
+ * @since_tizen 3.0
+ * @description Negative UTC for unset current engine changed callback (Invalid handle)
+ */
+TEST_F(TTSTest, utc_tts_unset_engine_changed_cb_n)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_unset_engine_changed_cb(nullptr), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(tts_unset_engine_changed_cb(nullptr), TTS_ERROR_INVALID_PARAMETER);
+}
+
+/**
+ * @testcase utc_tts_unset_engine_changed_cb_n2
+ * @since_tizen 3.0
+ * @description Negative UTC for unset current engine changed callback (Invalid state)
+ */
+TEST_F(TTSTest, utc_tts_unset_engine_changed_cb_n2)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(tts_unset_engine_changed_cb(g_tts), TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_set_engine_changed_cb(g_tts, __tts_engine_changed_cb, nullptr), TTS_ERROR_NONE);
+
+ EXPECT_EQ(tts_prepare(g_tts), TTS_ERROR_NONE);
+ EXPECT_EQ(true, __is_state_changed(TTS_STATE_READY, 5));
+
+ EXPECT_EQ(tts_unset_engine_changed_cb(g_tts), TTS_ERROR_INVALID_STATE);
+
+ EXPECT_EQ(tts_unprepare(g_tts), TTS_ERROR_NONE);
+}
+
+/**
* @testcase utc_tts_add_pcm_p
* @since_tizen 2.3
* @description test whether pcm data is added properly.