*/
#include <gtest/gtest.h>
+#include <Ecore.h>
+#include <system_info.h>
#include <tts.h>
#include "system_info_mock.h"
+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 int g_utt_id = -1;
+static const char *g_text = "Speech Synthesis is the artificial production of human speech. A computer system used for this purpose is called a speech computer or speech synthesizer,\
+ and can be implemented in software or hardware products. A text-to-speech (TTS) system converts normal language text into speech; other systems render symbolic linguistic\
+ representations like phonetic transcriptions into speech.\
+ Synthesized speech can be created by concatenating pieces of recorded speech that are stored in a database. Systems differ in the size of the stored speech units; \
+ a system that stores phones or diphones provides the largest output range, but may lack clarity. For specific usage domains, the storage of entire words or sentences allows \
+ for high-quality output. Alternatively, a synthesizer can incorporate a model of the vocal tract and other human voice characteristics to create a completely synthetic voice output.\
+ The quality of a speech synthesizer is judged by its similarity to the human voice and by its ability to be understood clearly. An intelligible text-to-speech program allows people \
+ with visual impairments or reading disabilities to listen to written works on a home computer. Many computer operating systems have included speech synthesizers since the early 1990s.\
+ A text-to-speech system is composed of two parts:[3] a front-end and a back-end. The front-end has two major tasks. First, it converts raw text containing symbols like numbers and \
+ abbreviations into the equivalent of written-out words. This process is often called text normalization, pre-processing, or tokenization. The front-end then assigns phonetic \
+ transcriptions to each word, and divides and marks the text into prosodic units, like phrases, clauses, and sentences. The process of assigning phonetic transcriptions to words is \
+ called text-to-phoneme or grapheme-to-phoneme conversion. Phonetic transcriptions and prosody information together make up the symbolic linguistic representation that is output by \
+ the front-end. The back-end?often referred to as the synthesizer?then converts the symbolic linguistic representation into sound. In certain systems, this part includes the computation \
+ of the target prosody (pitch contour, phoneme durations),[4] which is then imposed on the output speech. From Wikipedia";
+
+static bool __tts_supported_voice_cb(tts_h tts, const char* language, int voice_type, void* user_data)
+{
+ return true;
+}
+
+static void __tts_state_changed_cb(tts_h tts, tts_state_e previous, tts_state_e current, void* user_data)
+{
+ g_current_state = current;
+}
+
+static void __tts_utterance_started_cb(tts_h tts, int utt_id, void* user_data)
+{
+ g_utterance_started_cb = true;
+}
+
+static void __tts_utterance_completed_cb(tts_h tts, int utt_id, void *user_data)
+{
+ g_utterance_completed_cb = true;
+ g_utt_id = utt_id;
+}
+
+static void __tts_error_cb(tts_h tts, int utt_id, tts_error_e reason, void* user_data)
+{
+}
+
+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)
+{
+}
+
namespace {
class TTSTest : public testing::Test {
public:
virtual void SetUp() {
- }
- virtual void TearDown() {
- }
+ ecore_init();
+ system_info_get_platform_bool("http://tizen.org/feature/speech.synthesis", &g_supported);
+ g_supported = true;
+
+ g_current_state = TTS_STATE_CREATED;
+ /* start of TC */
+ int ret = TTS_ERROR_NONE;
+ ret = tts_create(&g_tts);
+ is_created_hndl = ret;
+
+ if (g_supported == false) {
+ g_tts = NULL;
+ return;
+ }
+
+ ret = tts_set_state_changed_cb(g_tts, __tts_state_changed_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_get_default_voice(g_tts, &g_language, &g_voice_type);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+ }
+
+ virtual void TearDown() {
+ if (g_language)
+ free (g_language);
+ g_language = NULL;
+
+ int ret = TTS_ERROR_NONE;
+ if (g_tts) {
+ ret = tts_destroy(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+ }
+
+ g_tts = NULL;
+ is_created_hndl = -1;
+
+ ecore_shutdown();
+ }
};
+TEST_F(TTSTest, utc_tts_create_p)
+{
+ if (g_supported == false) {
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+}
+
TEST_F(TTSTest, utc_tts_create_n)
{
- int ret = tts_create(NULL);
- EXPECT_EQ(ret, TTS_ERROR_INVALID_PARAMETER);
+ int ret = tts_create(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_INVALID_PARAMETER);
}
+TEST_F(TTSTest, utc_tts_destroy_p)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_destroy(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+ ret = tts_destroy(g_tts);
+ g_tts = NULL;
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+TEST_F(TTSTest, utc_tts_destroy_p2)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_destroy(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_set_mode(g_tts, TTS_MODE_DEFAULT);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_destroy(g_tts);
+ g_tts = NULL;
+ EXPECT_EQ(ret, TTS_ERROR_NONE);}
+
+TEST_F(TTSTest, utc_tts_destroy_p3)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_destroy(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_set_mode(g_tts, TTS_MODE_NOTIFICATION);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_destroy(g_tts);
+ g_tts = NULL;
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_destroy_p4
+ * @since_tizen 2.3
+ * @description test whether tts handle is destroyed properly when tts is ready state with screen reader mode
+ */
+TEST_F(TTSTest, utc_tts_destroy_p4)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_destroy(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_set_mode(g_tts, TTS_MODE_SCREEN_READER);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_destroy(g_tts);
+ g_tts = NULL;
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+
TEST_F(TTSTest, utc_tts_destroy_n)
{
- int ret = tts_destroy(NULL);
- EXPECT_EQ(ret, TTS_ERROR_INVALID_PARAMETER);
+ int ret = tts_destroy(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_INVALID_PARAMETER);
+}
+
+TEST_F(TTSTest, utc_tts_destroy_n2)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_destroy(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ ret = tts_destroy(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_destroy(g_tts);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_create(&g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+TEST_F(TTSTest, utc_tts_set_mode_p)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_mode(g_tts, TTS_MODE_DEFAULT);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_set_mode(g_tts, TTS_MODE_DEFAULT);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+TEST_F(TTSTest, utc_tts_set_mode_p2)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_mode(g_tts, TTS_MODE_SCREEN_READER);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_set_mode(g_tts, TTS_MODE_SCREEN_READER);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
}
TEST_F(TTSTest, utc_tts_set_mode_n)
EXPECT_EQ(ret, TTS_ERROR_INVALID_PARAMETER);
}
+TEST_F(TTSTest, utc_tts_set_mode_n2)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_mode(NULL, TTS_MODE_DEFAULT);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_set_mode(g_tts, TTS_MODE_DEFAULT);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+TEST_F(TTSTest, utc_tts_set_mode_n3)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_mode(NULL, TTS_MODE_DEFAULT);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_set_mode(g_tts, (tts_mode_e)100);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+}
+
+TEST_F(TTSTest, utc_tts_get_mode_p)
+{
+ tts_mode_e mode;
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_get_mode(g_tts, &mode);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_get_mode(g_tts, &mode);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ return;
+}
+
TEST_F(TTSTest, utc_tts_get_mode_n)
{
tts_mode_e mode;
EXPECT_EQ(ret, TTS_ERROR_INVALID_PARAMETER);
}
-TEST_F(TTSTest, utc_tts_set_credential_n)
+TEST_F(TTSTest, utc_tts_get_mode_n2)
{
- int ret = tts_set_credential(NULL, "credential");
- EXPECT_EQ(ret, TTS_ERROR_INVALID_PARAMETER);
+ tts_mode_e mode;
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_get_mode(g_tts, &mode);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_get_mode(g_tts, &mode);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+TEST_F(TTSTest, utc_tts_get_speed_range_p)
+{
+ int min;
+ int normal;
+ int max;
+ int ret = TTS_ERROR_NONE;
+
+ if (g_supported == false) {
+ ret = tts_get_speed_range(g_tts, &min, &normal, &max);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+ ret = tts_get_speed_range(g_tts, &min, &normal, &max);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_get_speed_range_n
+ * @since_tizen 2.3
+ * @description test whether function returns error with NULL parameter.
+ */
+TEST_F(TTSTest, utc_tts_get_speed_range_n)
+{
+ int min;
+ int normal;
+ int max;
+ int ret = TTS_ERROR_NONE;
+
+ if (g_supported == false) {
+ ret = tts_get_speed_range(NULL, &min, &normal, &max);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ ret = tts_get_speed_range(NULL, &min, &normal, &max);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_get_speed_range_n2
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts handle is already destroyed.
+ */
+TEST_F(TTSTest, utc_tts_get_speed_range_n2)
+{
+ int min;
+ int normal;
+ int max;
+ int ret = TTS_ERROR_NONE;
+
+ if (g_supported == false) {
+ ret = tts_get_speed_range(NULL, &min, &normal, &max);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ ret = tts_destroy(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_get_speed_range(g_tts, &min, &normal, &max);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_create(&g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_prepare_p
+ * @since_tizen 2.3
+ * @description test whether tts daemon is prepared properly.
+ */
+TEST_F(TTSTest, utc_tts_prepare_p)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ tts_unprepare(g_tts);
}
TEST_F(TTSTest, utc_tts_prepare_n)
EXPECT_EQ(ret, TTS_ERROR_INVALID_PARAMETER);
}
-TEST_F(TTSTest, utc_tts_unprepare_n)
+/**
+ * @testcase utc_tts_prepare_n2
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts is ready state, not create state.
+ */
+TEST_F(TTSTest, utc_tts_prepare_n2)
{
- int ret = tts_unprepare(NULL);
- EXPECT_EQ(ret, TTS_ERROR_INVALID_PARAMETER);
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_prepare(g_tts);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ tts_unprepare(g_tts);
+}
+
+
+/**
+ * @testcase utc_tts_foreach_supported_voices_p
+ * @since_tizen 2.3
+ * @description test whether each supported voices are gotten properly.
+ */
+TEST_F(TTSTest, utc_tts_foreach_supported_voices_p)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_foreach_supported_voices(g_tts, __tts_supported_voice_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+ ret = tts_foreach_supported_voices(g_tts, __tts_supported_voice_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_foreach_supported_voices_n
+ * @since_tizen 2.3
+ * @description test whether function returns error with NULL parameter.
+ */
+TEST_F(TTSTest, utc_tts_foreach_supported_voices_n)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_foreach_supported_voices(NULL, __tts_supported_voice_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ ret = tts_foreach_supported_voices(NULL, __tts_supported_voice_cb, NULL);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_foreach_supported_voices_n2
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts handle is already destroyed.
+ */
+TEST_F(TTSTest, utc_tts_foreach_supported_voices_n2)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_foreach_supported_voices(NULL, __tts_supported_voice_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_destroy(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_foreach_supported_voices(g_tts, __tts_supported_voice_cb, NULL);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_create(&g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+
+/**
+ * @testcase utc_tts_get_default_voice_p
+ * @since_tizen 2.3
+ * @description test whether default voice is gotten properly.
+ */
+TEST_F(TTSTest, utc_tts_get_default_voice_p)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_get_default_voice(g_tts, &g_language, &g_voice_type);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ free (g_language);
+ g_language = NULL;
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+ ret = tts_get_default_voice(g_tts, &g_language, &g_voice_type);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_get_default_voice_n
+ * @since_tizen 2.3
+ * @description test whether function returns error with NULL parameter.
+ */
+TEST_F(TTSTest, utc_tts_get_default_voice_n)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_get_default_voice(NULL, &g_language, &g_voice_type);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ free (g_language);
+ g_language = NULL;
+ ret = tts_get_default_voice(NULL, &g_language, &g_voice_type);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_get_default_voice_n2
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts handle is already destroyed.
+ */
+TEST_F(TTSTest, utc_tts_get_default_voice_n2)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_get_default_voice(NULL, &g_language, &g_voice_type);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ free (g_language);
+ g_language = NULL;
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_destroy(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_get_default_voice(g_tts, &g_language, &g_voice_type);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_create(&g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_get_default_voice_n3
+ * @since_tizen 2.3
+ * @description test whether function returns error with NULL parameter as type.
+ */
+TEST_F(TTSTest, utc_tts_get_default_voice_n3)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_get_default_voice(NULL, &g_language, &g_voice_type);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ free(g_language);
+ g_language = NULL;
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_get_default_voice(g_tts, &g_language, NULL);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+}
+
+
+/**
+ * @testcase utc_tts_get_max_text_size_p
+ * @since_tizen 2.3
+ * @description test whether max text size is gotten properly.
+ */
+TEST_F(TTSTest, utc_tts_get_max_text_size_p)
+{
+ unsigned int size;
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_get_max_text_size(g_tts, &size);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_get_max_text_size(g_tts, &size);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_get_max_text_size_n
+ * @since_tizen 2.3
+ * @description test whether function returns error with NULL parameter.
+ */
+TEST_F(TTSTest, utc_tts_get_max_text_size_n)
+{
+ unsigned int size;
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_get_max_text_size(NULL, &size);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ ret = tts_get_max_text_size(NULL, &size);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_get_max_text_size_n2
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts handle is already destroyed.
+ */
+TEST_F(TTSTest, utc_tts_get_max_text_size_n2)
+{
+ unsigned int size;
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_get_max_text_size(NULL, &size);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_destroy(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_get_max_text_size(g_tts, &size);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_create(&g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+
+/**
+ * @testcase utc_tts_get_max_text_size_n3
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts is in create state.
+ */
+TEST_F(TTSTest, utc_tts_get_max_text_size_n3)
+{
+ unsigned int size;
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_get_max_text_size(NULL, &size);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_get_max_text_size(g_tts, &size);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+}
+
+
+/**
+ * @testcase utc_tts_get_state_p
+ * @since_tizen 2.3
+ * @description test whether state is gotten properly in create state.
+ */
+TEST_F(TTSTest, utc_tts_get_state_p)
+{
+ tts_state_e state;
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_get_state(g_tts, &state);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_get_state(g_tts, &state);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_get_state_p2
+ * @since_tizen 2.3
+ * @description test whether state is gotten properly in ready state.
+ */
+TEST_F(TTSTest, utc_tts_get_state_p2)
+{
+ tts_state_e state;
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_get_state(g_tts, &state);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_get_state(g_tts, &state);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+
+/**
+ * @testcase utc_tts_get_state_p3
+ * @since_tizen 2.3
+ * @description test whether state is gotten properly in play state.
+ */
+TEST_F(TTSTest, utc_tts_get_state_p3)
+{
+ tts_state_e state;
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_get_state(g_tts, &state);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_play(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_PLAYING != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_get_state(g_tts, &state);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_stop(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_get_state_p4
+ * @since_tizen 2.3
+ * @description test whether state is gotten properly in pause state.
+ */
+TEST_F(TTSTest, utc_tts_get_state_p4)
+{
+ tts_state_e state;
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_get_state(g_tts, &state);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_play(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_PLAYING != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_pause(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_PAUSED!=g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_get_state(g_tts, &state);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_stop(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+
+/**
+ * @testcase utc_tts_get_state_n
+ * @since_tizen 2.3
+ * @description test whether function returns error with NULL parameter.
+ */
+TEST_F(TTSTest, utc_tts_get_state_n)
+{
+ tts_state_e state;
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_get_state(NULL, &state);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_get_state(NULL, &state);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_get_state_n2
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts handle is already destroyed.
+ */
+TEST_F(TTSTest, utc_tts_get_state_n2)
+{
+ tts_state_e state;
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_get_state(g_tts, &state);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_destroy(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_get_state(g_tts, &state);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_create(&g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+
+/**
+ * @testcase utc_tts_add_text_p
+ * @since_tizen 2.3
+ * @description test whether text is added properly.
+ */
+TEST_F(TTSTest, utc_tts_add_text_p)
+{
+ int utt_id;
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_add_text(g_tts, "1 2 3", g_language, g_voice_type, TTS_SPEED_AUTO, &utt_id);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_add_text(g_tts, "1 2 3", g_language, g_voice_type, TTS_SPEED_AUTO, &utt_id);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_add_text_n
+ * @since_tizen 2.3
+ * @description test whether function returns error with NULL parameter.
+ */
+TEST_F(TTSTest, utc_tts_add_text_n)
+{
+ int utt_id;
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_add_text(NULL, "1 2 3", g_language, g_voice_type, TTS_SPEED_AUTO, &utt_id);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_add_text(NULL, "1 2 3", g_language, g_voice_type, TTS_SPEED_AUTO, &utt_id);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_add_text_n2
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts handle is already destroyed.
+ */
+TEST_F(TTSTest, utc_tts_add_text_n2)
+{
+ int utt_id;
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_add_text(NULL, "1 2 3", g_language, g_voice_type, TTS_SPEED_AUTO, &utt_id);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_destroy(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_add_text(g_tts, "1 2 3", g_language, g_voice_type, TTS_SPEED_AUTO, &utt_id);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_create(&g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_add_text_n3
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts is in create state.
+ */
+TEST_F(TTSTest, utc_tts_add_text_n3)
+{
+ int utt_id;
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_add_text(NULL, "1 2 3", g_language, g_voice_type, TTS_SPEED_AUTO, &utt_id);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_add_text(g_tts, "1 2 3", g_language, g_voice_type, TTS_SPEED_AUTO, &utt_id);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_add_text_n4
+ * @since_tizen 2.3
+ * @description test whether function returns error when text is over max text size.
+ */
+TEST_F(TTSTest, utc_tts_add_text_n4)
+{
+ int utt_id;
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_add_text(g_tts, "1 2 3", g_language, g_voice_type, TTS_SPEED_AUTO, &utt_id);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_add_text(g_tts, g_text, g_language, g_voice_type, TTS_SPEED_AUTO, &utt_id);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_add_text_n5
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts speed is abnormal.
+ */
+TEST_F(TTSTest, utc_tts_add_text_n5)
+{
+ int utt_id;
+ int speed = -1;
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_add_text(g_tts, "1 2 3", g_language, g_voice_type, TTS_SPEED_AUTO, &utt_id);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_add_text(g_tts, "1 2 3", g_language, g_voice_type, speed, &utt_id);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_play_p
+ * @since_tizen 2.3
+ * @description test whether tts is played properly.
+ */
+TEST_F(TTSTest, utc_tts_play_p)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_play(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_play(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_PLAYING != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_stop(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_play_p2
+ * @since_tizen 2.3
+ * @description test whether tts is played all text properly.
+ */
+TEST_F(TTSTest, utc_tts_play_p2)
+{
+ int utt_id;
+ int ret = TTS_ERROR_NONE;
+
+ if (g_supported == false) {
+ ret = tts_play(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_set_utterance_started_cb(g_tts, __tts_utterance_started_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_set_utterance_completed_cb(g_tts, __tts_utterance_completed_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ g_utterance_completed_cb = false;
+
+ ret = tts_add_text(g_tts, "1 2 3", g_language, g_voice_type, TTS_SPEED_AUTO, &utt_id);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_play(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_PLAYING != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ while (true != g_utterance_completed_cb) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_stop(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_play_n
+ * @since_tizen 2.3
+ * @description test whether function returns error with NULL parameter.
+ */
+TEST_F(TTSTest, utc_tts_play_n)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_play(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_play(NULL);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_play_n2
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts handle is already destroyed.
+ */
+TEST_F(TTSTest, utc_tts_play_n2)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_play(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_destroy(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_play(g_tts);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_create(&g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_play_n3
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts is in create state.
+ */
+TEST_F(TTSTest, utc_tts_play_n3)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_play(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_play(g_tts);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_pause_p
+ * @since_tizen 2.3
+ * @description test whether tts is paused properly.
+ */
+TEST_F(TTSTest, utc_tts_pause_p)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_pause(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_play(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_PLAYING != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_pause(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_PAUSED!=g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_stop(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_pause_n
+ * @since_tizen 2.3
+ * @description test whether function returns error with NULL parameter.
+ */
+TEST_F(TTSTest, utc_tts_pause_n)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_pause(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_pause(NULL);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_pause_n2
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts handle is already destroyed.
+ */
+TEST_F(TTSTest, utc_tts_pause_n2)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_pause(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_destroy(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_pause(g_tts);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_create(&g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_pause_n3
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts is in create state.
+ */
+TEST_F(TTSTest, utc_tts_pause_n3)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_pause(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_pause(g_tts);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_stop_p
+ * @since_tizen 2.3
+ * @description test whether tts is stopped properly.
+ */
+TEST_F(TTSTest, utc_tts_stop_p)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_stop(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_play(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_PLAYING != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_stop(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ return;
+}
+
+/**
+ * @testcase utc_tts_stop_n
+ * @since_tizen 2.3
+ * @description test whether function returns error with NULL parameter.
+ */
+TEST_F(TTSTest, utc_tts_stop_n)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_stop(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_stop(NULL);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_stop_n2
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts handle is already destroyed.
+ */
+TEST_F(TTSTest, utc_tts_stop_n2)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_stop(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_destroy(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_stop(g_tts);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_create(&g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_stop_n3
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts is in create state.
+ */
+TEST_F(TTSTest, utc_tts_stop_n3)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_stop(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_stop(g_tts);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_repeat_p
+ * @since_tizen 5.0
+ * @description test whether tts is repeated properly.
+ */
+TEST_F(TTSTest, utc_tts_repeat_p)
+{
+ int ret = TTS_ERROR_NONE;
+ char* text_repeat = NULL;
+ int utt_id = -1;
+
+ if (g_supported == false) {
+ ret = tts_repeat(g_tts, &text_repeat, &utt_id);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_set_utterance_started_cb(g_tts, __tts_utterance_started_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_set_utterance_completed_cb(g_tts, __tts_utterance_completed_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ g_utterance_completed_cb = false;
+
+ ret = tts_add_text(g_tts, "repeat success", g_language, g_voice_type, TTS_SPEED_AUTO, &utt_id);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_play(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_PLAYING != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ while (true != g_utterance_completed_cb) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_stop(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ g_utterance_completed_cb = false;
+
+ ret = tts_repeat(g_tts, &text_repeat, &utt_id);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = strncmp(text_repeat, "repeat success", strlen(text_repeat));
+ EXPECT_EQ(ret, 0);
+
+ while (TTS_STATE_PLAYING != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ while (true != g_utterance_completed_cb) {
+ ecore_main_loop_iterate();
+ }
+
+ EXPECT_EQ(utt_id, g_utt_id);
+
+ ret = tts_stop(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_repeat_n
+ * @since_tizen 5.0
+ * @description test whether function returns error with NULL parameter.
+ */
+TEST_F(TTSTest, utc_tts_repeat_n)
+{
+ int ret = TTS_ERROR_NONE;
+
+ if (g_supported == false) {
+ ret = tts_repeat(g_tts, NULL, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_repeat(g_tts, NULL, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_INVALID_PARAMETER);
+}
+
+/**
+ * @testcase utc_tts_repeat_n2
+ * @since_tizen 5.0
+ * @description test whether function returns error with invalid state.
+ */
+TEST_F(TTSTest, utc_tts_repeat_n2)
+{
+ int ret = TTS_ERROR_NONE;
+ char* text_repeat = NULL;
+ int utt_id = -1;
+
+ if (g_supported == false) {
+ ret = tts_repeat(g_tts, &text_repeat, &utt_id);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_repeat(g_tts, &text_repeat, &utt_id);
+ EXPECT_EQ(ret, TTS_ERROR_INVALID_STATE);
+}
+
+/**
+ * @testcase utc_tts_repeat_n3
+ * @since_tizen 5.0
+ * @description test whether function returns error with operation failed when there is no previous text.
+ */
+TEST_F(TTSTest, utc_tts_repeat_n3)
+{
+ int ret = TTS_ERROR_NONE;
+ char* text_repeat = NULL;
+ int utt_id = -1;
+
+ if (g_supported == false) {
+ ret = tts_repeat(g_tts, &text_repeat, &utt_id);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_repeat(g_tts, &text_repeat, &utt_id);
+ EXPECT_EQ(ret, TTS_ERROR_OPERATION_FAILED);
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_unprepare_p
+ * @since_tizen 2.3
+ * @description test whether tts is unprepared properly.
+ */
+TEST_F(TTSTest, utc_tts_unprepare_p)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_unprepare_p2
+ * @since_tizen 2.3
+ * @description test whether tts is unprepared properly when tts is in notification mode.
+ */
+TEST_F(TTSTest, utc_tts_unprepare_p2)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_set_mode(g_tts, TTS_MODE_NOTIFICATION);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_unprepare(g_tts);
+ 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)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_set_mode(g_tts, TTS_MODE_SCREEN_READER);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+TEST_F(TTSTest, utc_tts_unprepare_n)
+{
+ int ret = tts_unprepare(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_INVALID_PARAMETER);
+}
+
+/**
+ * @testcase utc_tts_unprepare_n2
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts handle is already destroyed.
+ */
+TEST_F(TTSTest, utc_tts_unprepare_n2)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_unprepare(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_destroy(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_unprepare(g_tts);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_create(&g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_unprepare_n3
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts is in create state.
+ */
+TEST_F(TTSTest, utc_tts_unprepare_n3)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_unprepare(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_unprepare(g_tts);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_state_changed_cb_p
+ * @since_tizen 2.3
+ * @description test whether state_changed callback function is set properly.
+ */
+TEST_F(TTSTest, utc_tts_set_state_changed_cb_p)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_state_changed_cb(g_tts, __tts_state_changed_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+ ret = tts_set_state_changed_cb(g_tts, __tts_state_changed_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_state_changed_cb_n
+ * @since_tizen 2.3
+ * @description test whether function returns error with NULL parameter.
+ */
+TEST_F(TTSTest, utc_tts_set_state_changed_cb_n)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_state_changed_cb(NULL, __tts_state_changed_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_set_state_changed_cb(NULL, __tts_state_changed_cb, NULL);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_state_changed_cb_n2
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts handle is already destroyed.
+ */
+TEST_F(TTSTest, utc_tts_set_state_changed_cb_n2)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_state_changed_cb(NULL, __tts_state_changed_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_destroy(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_set_state_changed_cb(g_tts, __tts_state_changed_cb, NULL);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_create(&g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_state_changed_cb_n3
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts is not in create state.
+ */
+TEST_F(TTSTest, utc_tts_set_state_changed_cb_n3)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_state_changed_cb(NULL, __tts_state_changed_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_set_state_changed_cb(g_tts, __tts_state_changed_cb, NULL);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_unset_state_changed_cb_p
+ * @since_tizen 2.3
+ * @description test whether state_changed callback function is unset properly.
+ */
+TEST_F(TTSTest, utc_tts_unset_state_changed_cb_p)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_unset_state_changed_cb(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+ ret = tts_unset_state_changed_cb(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_unset_state_changed_cb_n
+ * @since_tizen 2.3
+ * @description test whether function returns error with NULL parameter.
+ */
+TEST_F(TTSTest, utc_tts_unset_state_changed_cb_n)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_unset_state_changed_cb(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ ret = tts_unset_state_changed_cb(NULL);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_unset_state_changed_cb_n2
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts handle is already destroyed.
+ */
+TEST_F(TTSTest, utc_tts_unset_state_changed_cb_n2)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_unset_state_changed_cb(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_destroy(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_unset_state_changed_cb(g_tts);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_create(&g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_unset_state_changed_cb_n3
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts is not in create state.
+ */
+TEST_F(TTSTest, utc_tts_unset_state_changed_cb_n3)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_unset_state_changed_cb(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_unset_state_changed_cb(g_tts);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_utterance_started_cb_p
+ * @since_tizen 2.3
+ * @description test whether utterance_started callback function is set properly.
+ */
+TEST_F(TTSTest, utc_tts_set_utterance_started_cb_p)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_utterance_started_cb(g_tts, __tts_utterance_started_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+ ret = tts_set_utterance_started_cb(g_tts, __tts_utterance_started_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_utterance_started_cb_n
+ * @since_tizen 2.3
+ * @description test whether function returns error with NULL parameter.
+ */
+TEST_F(TTSTest, utc_tts_set_utterance_started_cb_n)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_utterance_started_cb(NULL, __tts_utterance_started_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ ret = tts_set_utterance_started_cb(NULL, __tts_utterance_started_cb, NULL);
+ EXPECT_NE(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_utterance_started_cb_n2
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts handle is already destroyed.
+ */
+TEST_F(TTSTest, utc_tts_set_utterance_started_cb_n2)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_utterance_started_cb(NULL, __tts_utterance_started_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_destroy(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_set_utterance_started_cb(g_tts, __tts_utterance_started_cb, NULL);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_create(&g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_utterance_started_cb_n3
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts is not in create state.
+ */
+TEST_F(TTSTest, utc_tts_set_utterance_started_cb_n3)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_utterance_started_cb(NULL, __tts_utterance_started_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_set_utterance_started_cb(g_tts, __tts_utterance_started_cb, NULL);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_unset_utterance_started_cb_p
+ * @since_tizen 2.3
+ * @description test whether utterance_started callback function is unset properly.
+ */
+TEST_F(TTSTest, utc_tts_unset_utterance_started_cb_p)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_unset_utterance_started_cb(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_unset_utterance_started_cb(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_unset_utterance_started_cb_n
+ * @since_tizen 2.3
+ * @description test whether function returns error with NULL parameter.
+ */
+TEST_F(TTSTest, utc_tts_unset_utterance_started_cb_n)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_unset_utterance_started_cb(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ ret = tts_unset_utterance_started_cb(NULL);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_unset_utterance_started_cb_n2
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts handle is already destroyed.
+ */
+TEST_F(TTSTest, utc_tts_unset_utterance_started_cb_n2)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_unset_utterance_started_cb(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_destroy(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_unset_utterance_started_cb(g_tts);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_create(&g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_unset_utterance_started_cb_n3
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts is not in create state.
+ */
+TEST_F(TTSTest, utc_tts_unset_utterance_started_cb_n3)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_unset_utterance_started_cb(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_unset_utterance_started_cb(g_tts);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_utterance_completed_cb_p
+ * @since_tizen 2.3
+ * @description test whether utterance_completed callback function is set properly.
+ */
+TEST_F(TTSTest, utc_tts_set_utterance_completed_cb_p)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_utterance_completed_cb(g_tts, __tts_utterance_completed_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_set_utterance_completed_cb(g_tts, __tts_utterance_completed_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_utterance_completed_cb_n
+ * @since_tizen 2.3
+ * @description test whether function returns error with NULL parameter.
+ */
+TEST_F(TTSTest, utc_tts_set_utterance_completed_cb_n)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_utterance_completed_cb(NULL, __tts_utterance_completed_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ ret = tts_set_utterance_completed_cb(NULL, __tts_utterance_completed_cb, NULL);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_utterance_completed_cb_n2
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts handle is already destroyed.
+ */
+TEST_F(TTSTest, utc_tts_set_utterance_completed_cb_n2)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_utterance_completed_cb(NULL, __tts_utterance_completed_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_destroy(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_set_utterance_completed_cb(g_tts, __tts_utterance_completed_cb, NULL);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_create(&g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_utterance_completed_cb_n3
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts is not in create state.
+ */
+TEST_F(TTSTest, utc_tts_set_utterance_completed_cb_n3)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_utterance_completed_cb(NULL, __tts_utterance_completed_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_set_utterance_completed_cb(g_tts, __tts_utterance_completed_cb, NULL);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_unset_utterance_completed_cb_p
+ * @since_tizen 2.3
+ * @description test whether utterance_completed callback function is unset properly.
+ */
+TEST_F(TTSTest, utc_tts_unset_utterance_completed_cb_p)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_unset_utterance_completed_cb(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_unset_utterance_completed_cb(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_unset_utterance_completed_cb_n
+ * @since_tizen 2.3
+ * @description test whether function returns error with NULL parameter.
+ */
+TEST_F(TTSTest, utc_tts_unset_utterance_completed_cb_n)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_unset_utterance_completed_cb(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ ret = tts_unset_utterance_completed_cb(NULL);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_unset_utterance_completed_cb_n2
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts handle is already destroyed.
+ */
+TEST_F(TTSTest, utc_tts_unset_utterance_completed_cb_n2)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_unset_utterance_completed_cb(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_destroy(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_unset_utterance_completed_cb(g_tts);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_create(&g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_unset_utterance_completed_cb_n3
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts is in create state.
+ */
+TEST_F(TTSTest, utc_tts_unset_utterance_completed_cb_n3)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_unset_utterance_completed_cb(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_unset_utterance_completed_cb(g_tts);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_error_cb_p
+ * @since_tizen 2.3
+ * @description test whether error callback function is set properly.
+ */
+TEST_F(TTSTest, utc_tts_set_error_cb_p)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_error_cb(g_tts, __tts_error_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+ ret = tts_set_error_cb(g_tts, __tts_error_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_error_cb_n
+ * @since_tizen 2.3
+ * @description test whether function returns error with NULL parameter.
+ */
+TEST_F(TTSTest, utc_tts_set_error_cb_n)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_error_cb(NULL, __tts_error_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ ret = tts_set_error_cb(NULL, __tts_error_cb, NULL);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_error_cb_n2
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts handle is already destroyed.
+ */
+TEST_F(TTSTest, utc_tts_set_error_cb_n2)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_error_cb(NULL, __tts_error_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_destroy(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_set_error_cb(g_tts, __tts_error_cb, NULL);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_create(&g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_error_cb_n3
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts is not in create state.
+ */
+TEST_F(TTSTest, utc_tts_set_error_cb_n3)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_error_cb(NULL, __tts_error_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_set_error_cb(g_tts, __tts_error_cb, NULL);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_unset_error_cb_p
+ * @since_tizen 2.3
+ * @description test whether error callback function is unset properly.
+ */
+TEST_F(TTSTest, utc_tts_unset_error_cb_p)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_unset_error_cb(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_unset_error_cb(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_unset_error_cb_n
+ * @since_tizen 2.3
+ * @description test whether function returns error with NULL parameter.
+ */
+TEST_F(TTSTest, utc_tts_unset_error_cb_n)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_unset_error_cb(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ ret = tts_unset_error_cb(NULL);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_unset_error_cb_n2
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts handle is already destroyed.
+ */
+TEST_F(TTSTest, utc_tts_unset_error_cb_n2)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_unset_error_cb(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_destroy(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_unset_error_cb(g_tts);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_create(&g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_unset_error_cb_n3
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts is not in create state.
+ */
+TEST_F(TTSTest, utc_tts_unset_error_cb_n3)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_unset_error_cb(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_unset_error_cb(g_tts);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_default_voice_changed_cb_p
+ * @since_tizen 2.3
+ * @description test whether default_voice_changed callback function is set properly.
+ */
+TEST_F(TTSTest, utc_tts_set_default_voice_changed_cb_p)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_default_voice_changed_cb(g_tts, __tts_default_voice_changed_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_set_default_voice_changed_cb(g_tts, __tts_default_voice_changed_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_default_voice_changed_cb_n
+ * @since_tizen 2.3
+ * @description test whether function returns error with NULL parameter.
+ */
+TEST_F(TTSTest, utc_tts_set_default_voice_changed_cb_n)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_default_voice_changed_cb(NULL, __tts_default_voice_changed_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ ret = tts_set_default_voice_changed_cb(NULL, __tts_default_voice_changed_cb, NULL);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_default_voice_changed_cb_n2
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts handle is already destroyed.
+ */
+TEST_F(TTSTest, utc_tts_set_default_voice_changed_cb_n2)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_default_voice_changed_cb(NULL, __tts_default_voice_changed_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_destroy(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_set_default_voice_changed_cb(g_tts, __tts_default_voice_changed_cb, NULL);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_create(&g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_default_voice_changed_cb_n3
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts is not in create state.
+ */
+TEST_F(TTSTest, utc_tts_set_default_voice_changed_cb_n3)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_default_voice_changed_cb(NULL, __tts_default_voice_changed_cb, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_set_default_voice_changed_cb(g_tts, __tts_default_voice_changed_cb, NULL);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_unset_default_voice_changed_cb_p
+ * @since_tizen 2.3
+ * @description test whether default_voice_changed callback function is unset properly.
+ */
+TEST_F(TTSTest, utc_tts_unset_default_voice_changed_cb_p)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_unset_default_voice_changed_cb(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_unset_default_voice_changed_cb(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_unset_default_voice_changed_cb_n
+ * @since_tizen 2.3
+ * @description test whether function returns error with NULL parameter.
+ */
+TEST_F(TTSTest, utc_tts_unset_default_voice_changed_cb_n)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_unset_default_voice_changed_cb(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ ret = tts_unset_default_voice_changed_cb(NULL);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_unset_default_voice_changed_cb_n2
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts handle is already destroyed.
+ */
+TEST_F(TTSTest, utc_tts_unset_default_voice_changed_cb_n2)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_unset_default_voice_changed_cb(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_destroy(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_unset_default_voice_changed_cb(g_tts);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_create(&g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_unset_default_voice_changed_cb_n3
+ * @since_tizen 2.3
+ * @description test whether function returns error when tts is not in create state.
+ */
+TEST_F(TTSTest, utc_tts_unset_default_voice_changed_cb_n3)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_unset_default_voice_changed_cb(NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_unset_default_voice_changed_cb(g_tts);
+ ASSERT_NE(ret, TTS_ERROR_NONE);
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_get_error_message_n
+ * @since_tizen 3.0
+ * @description Negative UTC for get error message (invalid parameter)
+ */
+ TEST_F(TTSTest, utc_tts_get_error_message_n)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_get_error_message(g_tts, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_get_error_message(g_tts, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_INVALID_PARAMETER);
+}
+
+/**
+ * @testcase utc_tts_get_private_data_p
+ * @since_tizen 3.0
+ * @description Positive UTC for get private data
+ */
+TEST_F(TTSTest, utc_tts_get_private_data_p)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_get_private_data(g_tts, NULL, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ char *data = NULL;
+ ret = tts_get_private_data(g_tts, "version", &data);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+ free(data);
+
+ tts_unprepare(g_tts);
+}
+
+/**
+ * @testcase utc_tts_get_private_data_n
+ * @since_tizen 3.0
+ * @description Negative UTC for get private data (invalid parameter)
+ */
+TEST_F(TTSTest, utc_tts_get_private_data_n)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_get_private_data(g_tts, NULL, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_get_private_data(NULL, NULL, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_INVALID_PARAMETER);
+}
+
+/**
+ * @testcase utc_tts_get_private_data_n2
+ * @since_tizen 3.0
+ * @description Negative UTC for get private data (invalid state)
+ */
+TEST_F(TTSTest, utc_tts_get_private_data_n2)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_get_private_data(g_tts, NULL, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ char* data = NULL;
+ ret = tts_get_private_data(g_tts, "version", &data);
+ EXPECT_EQ(ret, TTS_ERROR_INVALID_STATE);
+}
+
+/**
+ * @testcase utc_tts_get_private_data_n3
+ * @since_tizen 3.0
+ * @description Negative UTC for get private data (invalid parameter)
+ */
+TEST_F(TTSTest, utc_tts_get_private_data_n3)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_get_private_data(g_tts, NULL, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ char* data = NULL;
+ ret = tts_get_private_data(g_tts, NULL, &data);
+ EXPECT_EQ(ret, TTS_ERROR_INVALID_PARAMETER);
+}
+
+/**
+ * @testcase utc_tts_set_private_data_p
+ * @since_tizen 3.0
+ * @description Positive UTC for set private data
+ */
+TEST_F(TTSTest, utc_tts_set_private_data_p)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_private_data(g_tts, NULL, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_set_private_data(g_tts, "version", "2.0");
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+/**
+ * @testcase utc_tts_set_private_data_n
+ * @since_tizen 3.0
+ * @description Negative UTC for set private data (invalid parameter)
+ */
+TEST_F(TTSTest, utc_tts_set_private_data_n)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_private_data(g_tts, NULL, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_set_private_data(NULL, NULL, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_INVALID_PARAMETER);
+}
+
+/**
+ * @testcase utc_tts_set_private_data_n2
+ * @since_tizen 3.0
+ * @description Negative UTC for set private data (invalid state)
+ */
+TEST_F(TTSTest, utc_tts_set_private_data_n2)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_private_data(g_tts, NULL, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_set_private_data(g_tts, "version", "2.0");
+ EXPECT_EQ(ret, TTS_ERROR_INVALID_STATE);
+}
+
+/**
+ * @testcase utc_tts_set_private_data_n3
+ * @since_tizen 3.0
+ * @description Negative UTC for set private data (invalid parameter)
+ */
+TEST_F(TTSTest, utc_tts_set_private_data_n3)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_private_data(g_tts, NULL, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_set_private_data(g_tts, NULL, "2.0");
+ EXPECT_EQ(ret, TTS_ERROR_INVALID_PARAMETER);
+}
+
+/**
+ * @testcase utc_tts_set_credential_p
+ * @since_tizen 3.0
+ * @description Positive UTC for set credential
+ */
+TEST_F(TTSTest, utc_tts_set_credential_p)
+{
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_credential(g_tts, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_set_credential(g_tts, "test");
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+}
+
+TEST_F(TTSTest, utc_tts_set_credential_n)
+{
+ int ret = tts_set_credential(NULL, "credential");
+ EXPECT_EQ(ret, TTS_ERROR_INVALID_PARAMETER);
+}
+
+/**
+ * @testcase utc_tts_set_credential_n2
+ * @since_tizen 3.0
+ * @description Negative UTC for set credential (invalid state)
+ */
+TEST_F(TTSTest, utc_tts_set_credential_n2)
+{
+ int utt_id;
+ int ret = TTS_ERROR_NONE;
+ if (g_supported == false) {
+ ret = tts_set_credential(g_tts, NULL);
+ EXPECT_EQ(ret, TTS_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ EXPECT_EQ(is_created_hndl, TTS_ERROR_NONE);
+
+ ret = tts_prepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_add_text(g_tts, "1 2 3", g_language, g_voice_type, TTS_SPEED_AUTO, &utt_id);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ ret = tts_play(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_PLAYING != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_set_credential(g_tts, "test");
+ EXPECT_EQ(ret, TTS_ERROR_INVALID_STATE);
+
+ ret = tts_stop(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
+
+ while (TTS_STATE_READY != g_current_state) {
+ ecore_main_loop_iterate();
+ }
+
+ ret = tts_unprepare(g_tts);
+ EXPECT_EQ(ret, TTS_ERROR_NONE);
}
} // namespace