Add test cases for uncovered APIs 49/278849/3
authorSuyeon Hwang <stom.hwang@samsung.com>
Wed, 13 Jul 2022 06:28:41 +0000 (15:28 +0900)
committerSuyeon Hwang <stom.hwang@samsung.com>
Wed, 27 Jul 2022 05:47:31 +0000 (14:47 +0900)
- Issue:
Some APIs are not checked by line coverage analysis.

- Solution:
This patch adds new test cases for uncovered APIs. Through this change,
uncovered APIs are now checked in line coverage analysis.

Change-Id: Iab6cded7402a461c3da42bac0d41e5327d6a0904
Signed-off-by: Suyeon Hwang <stom.hwang@samsung.com>
tests/org.tizen.tts-unittests.xml
tests/src/tts_unittests.cpp

index e366f42..540e5b8 100644 (file)
@@ -7,4 +7,7 @@
             <label>TTS unittests</label>
             <background-category value="media"/>
         </service-application>
+        <privileges>
+            <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
+        </privileges>
 </manifest>
index 7d26bbc..b978751 100644 (file)
@@ -18,6 +18,7 @@
 #include <Ecore.h>
 #include <system_info.h>
 #include <tzplatform_config.h>
+#include <vconf.h>
 
 #include <tts.h>
 #include <tts_internal.h>
@@ -27,11 +28,13 @@ static tts_h g_tts = NULL;
 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;
@@ -51,6 +54,7 @@ static const char *g_text = "Speech Synthesis is the artificial production of hu
        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)
 {
@@ -62,6 +66,13 @@ static void __tts_state_changed_cb(tts_h tts, tts_state_e previous, tts_state_e
        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;
@@ -75,12 +86,22 @@ static void __tts_utterance_completed_cb(tts_h tts, int utt_id, void *user_data)
 
 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;
@@ -98,6 +119,32 @@ static bool __is_state_changed(tts_state_e state, int wait_delay)
        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");
@@ -374,6 +421,17 @@ TEST_F(TTSTest, utc_tts_destroy_n2)
        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;
@@ -604,6 +662,69 @@ TEST_F(TTSTest, utc_tts_prepare_n2)
 }
 
 /**
+ * @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.
@@ -672,6 +793,24 @@ TEST_F(TTSTest, utc_tts_prepare_sync_n2)
 }
 
 /**
+ * @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.
@@ -1197,6 +1336,23 @@ TEST_F(TTSPreparedTest, utc_tts_add_text_n5)
 }
 
 /**
+ * @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.
@@ -1261,6 +1417,76 @@ TEST_F(TTSPreparedWithUttCbTest, utc_tts_play_p2)
 }
 
 /**
+ * @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.
@@ -1324,6 +1550,36 @@ TEST_F(TTSTest, utc_tts_play_n3)
 }
 
 /**
+ * @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.
@@ -1696,6 +1952,29 @@ TEST_F(TTSTest, utc_tts_unprepare_p2)
        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);
@@ -2256,6 +2535,37 @@ TEST_F(TTSTest, utc_tts_set_error_cb_p)
 }
 
 /**
+ * @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.
@@ -2565,6 +2875,64 @@ TEST_F(TTSPreparedTest, utc_tts_unset_default_voice_changed_cb_n3)
 }
 
 /**
+ * @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)
@@ -2812,6 +3180,389 @@ TEST_F(TTSPreparedTest, utc_tts_set_credential_n2)
 
 
 /**
+ * @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.