[UTC][capi-media-controller][ACR-1237][Add APIs to support playlist and metadata]
authorhj kim <backto.kim@samsung.com>
Thu, 28 Jun 2018 01:53:33 +0000 (10:53 +0900)
committerhj kim <backto.kim@samsung.com>
Wed, 4 Jul 2018 00:18:37 +0000 (00:18 +0000)
Change-Id: Iaea664eff5f59022be3091e9c13a0e6e40dca02d

src/utc/media-controller/public.list
src/utc/media-controller/tct-media-controller-core_mobile.h
src/utc/media-controller/tct-media-controller-core_wearable.h
src/utc/media-controller/utc-media-controller.c

index c1a2398..093d55e 100755 (executable)
@@ -27,6 +27,12 @@ utc_mc_server_unset_playlist_cmd_received_cb
 utc_mc_server_set_custom_cmd_received_cb
 utc_mc_server_unset_custom_cmd_received_cb
 utc_mc_server_send_cmd_reply
+utc_mc_server_set_playlist_item_index
+utc_mc_server_create_playlist
+utc_mc_server_add_item_to_playlist
+utc_mc_server_update_playlist_done
+utc_mc_server_delete_playlist
+utc_mc_server_foreach_playlist
 utc_mc_client_create
 utc_mc_client_destroy
 utc_mc_client_set_server_update_cb
@@ -39,6 +45,16 @@ utc_mc_client_set_shuffle_mode_update_cb
 utc_mc_client_unset_shuffle_mode_update_cb
 utc_mc_client_set_repeat_mode_update_cb
 utc_mc_client_unset_repeat_mode_update_cb
+utc_mc_client_set_server_updated_cb
+utc_mc_client_unset_server_updated_cb
+utc_mc_client_set_playback_updated_cb
+utc_mc_client_unset_playback_updated_cb
+utc_mc_client_set_metadata_updated_cb
+utc_mc_client_unset_metadata_updated_cb
+utc_mc_client_set_shuffle_mode_updated_cb
+utc_mc_client_unset_shuffle_mode_updated_cb
+utc_mc_client_set_repeat_mode_updated_cb
+utc_mc_client_unset_repeat_mode_updated_cb
 utc_mc_client_set_cmd_reply_received_cb
 utc_mc_client_unset_cmd_reply_received_cb
 utc_mc_client_get_playback_state
@@ -60,3 +76,14 @@ utc_mc_client_send_repeat_mode_cmd
 utc_mc_client_send_custom_command
 utc_mc_client_send_playlist_cmd
 utc_mc_client_send_custom_cmd
+utc_mc_client_get_playlist_item_index
+utc_mc_client_set_playlist_updated_cb
+utc_mc_client_unset_playlist_updated_cb
+utc_mc_client_foreach_server_playlist
+utc_mc_playlist_get_name
+utc_mc_playlist_foreach_item
+utc_mc_playlist_clone
+utc_mc_playlist_destroy
+utc_mc_metadata_clone
+utc_mc_metadata_destroy
+utc_mc_metadata_get
\ No newline at end of file
index 73b6b09..c7679bd 100755 (executable)
@@ -76,6 +76,19 @@ extern int utc_mc_server_unset_custom_cmd_received_cb_p(void);
 extern int utc_mc_server_unset_custom_cmd_received_cb_n(void);
 extern int utc_mc_server_send_cmd_reply_p(void);
 extern int utc_mc_server_send_cmd_reply_n(void);
+extern int utc_mc_server_set_playlist_item_index_p(void);
+extern int utc_mc_server_set_playlist_item_index_n(void);
+extern int utc_mc_server_create_playlist_p(void);
+extern int utc_mc_server_create_playlist_n(void);
+extern int utc_mc_server_add_item_to_playlist_p(void);
+extern int utc_mc_server_add_item_to_playlist_n(void);
+extern int utc_mc_server_update_playlist_done_p(void);
+extern int utc_mc_server_update_playlist_done_n(void);
+extern int utc_mc_server_delete_playlist_p(void);
+extern int utc_mc_server_delete_playlist_n(void);
+extern int utc_mc_server_foreach_playlist_p(void);
+extern int utc_mc_server_foreach_playlist_n(void);
+
 extern int utc_mc_client_create_p(void);
 extern int utc_mc_client_create_n(void);
 extern int utc_mc_client_destroy_p(void);
@@ -100,6 +113,26 @@ extern int utc_mc_client_set_repeat_mode_update_cb_p(void);
 extern int utc_mc_client_set_repeat_mode_update_cb_n(void);
 extern int utc_mc_client_unset_repeat_mode_update_cb_p(void);
 extern int utc_mc_client_unset_repeat_mode_update_cb_n(void);
+extern int utc_mc_client_set_server_updated_cb_p(void);
+extern int utc_mc_client_set_server_updated_cb_n(void);
+extern int utc_mc_client_unset_server_updated_cb_p(void);
+extern int utc_mc_client_unset_server_updated_cb_n(void);
+extern int utc_mc_client_set_playback_updated_cb_p(void);
+extern int utc_mc_client_set_playback_updated_cb_n(void);
+extern int utc_mc_client_unset_playback_updated_cb_p(void);
+extern int utc_mc_client_unset_playback_updated_cb_n(void);
+extern int utc_mc_client_set_metadata_updated_cb_p(void);
+extern int utc_mc_client_set_metadata_updated_cb_n(void);
+extern int utc_mc_client_unset_metadata_updated_cb_p(void);
+extern int utc_mc_client_unset_metadata_updated_cb_n(void);
+extern int utc_mc_client_set_shuffle_mode_updated_cb_p(void);
+extern int utc_mc_client_set_shuffle_mode_updated_cb_n(void);
+extern int utc_mc_client_unset_shuffle_mode_updated_cb_p(void);
+extern int utc_mc_client_unset_shuffle_mode_updated_cb_n(void);
+extern int utc_mc_client_set_repeat_mode_updated_cb_p(void);
+extern int utc_mc_client_set_repeat_mode_updated_cb_n(void);
+extern int utc_mc_client_unset_repeat_mode_updated_cb_p(void);
+extern int utc_mc_client_unset_repeat_mode_updated_cb_n(void);
 extern int utc_mc_client_set_cmd_reply_received_cb_p(void);
 extern int utc_mc_client_set_cmd_reply_received_cb_n(void);
 extern int utc_mc_client_unset_cmd_reply_received_cb_p(void);
@@ -149,6 +182,30 @@ extern int utc_mc_client_unsubscribe_p(void);
 extern int utc_mc_client_unsubscribe_n(void);
 extern int utc_mc_client_foreach_server_subscribed_p(void);
 extern int utc_mc_client_foreach_server_subscribed_n(void);
+extern int utc_mc_client_get_playlist_item_index_p(void);
+extern int utc_mc_client_get_playlist_item_index_n(void);
+extern int utc_mc_client_set_playlist_updated_cb_p(void);
+extern int utc_mc_client_set_playlist_updated_cb_n(void);
+extern int utc_mc_client_unset_playlist_updated_cb_p(void);
+extern int utc_mc_client_unset_playlist_updated_cb_n(void);
+extern int utc_mc_client_foreach_server_playlist_p(void);
+extern int utc_mc_client_foreach_server_playlist_n(void);
+
+extern int utc_mc_playlist_get_name_p(void);
+extern int utc_mc_playlist_get_name_n(void);
+extern int utc_mc_playlist_foreach_item_p(void);
+extern int utc_mc_playlist_foreach_item_n(void);
+extern int utc_mc_playlist_clone_p(void);
+extern int utc_mc_playlist_clone_n(void);
+extern int utc_mc_playlist_destroy_p(void);
+extern int utc_mc_playlist_destroy_n(void);
+
+extern int utc_mc_metadata_clone_p(void);
+extern int utc_mc_metadata_clone_n(void);
+extern int utc_mc_metadata_destroy_p(void);
+extern int utc_mc_metadata_destroy_n(void);
+extern int utc_mc_metadata_get_p(void);
+extern int utc_mc_metadata_get_n(void);
 
 testcase tc_array[] = {
        {"utc_mc_server_create_p",utc_mc_server_create_p,utc_media_controller_startup,utc_media_controller_cleanup},
@@ -205,6 +262,18 @@ testcase tc_array[] = {
        {"utc_mc_server_unset_custom_cmd_received_cb_n",utc_mc_server_unset_custom_cmd_received_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
        {"utc_mc_server_send_cmd_reply_p",utc_mc_server_send_cmd_reply_p,utc_media_controller_startup,utc_media_controller_cleanup},
        {"utc_mc_server_send_cmd_reply_n",utc_mc_server_send_cmd_reply_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_server_set_playlist_item_index_p",utc_mc_server_set_playlist_item_index_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_server_set_playlist_item_index_n",utc_mc_server_set_playlist_item_index_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_server_create_playlist_p",utc_mc_server_create_playlist_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_server_create_playlist_n",utc_mc_server_create_playlist_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_server_add_item_to_playlist_p",utc_mc_server_add_item_to_playlist_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_server_add_item_to_playlist_n",utc_mc_server_add_item_to_playlist_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_server_update_playlist_done_p",utc_mc_server_update_playlist_done_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_server_update_playlist_done_n",utc_mc_server_update_playlist_done_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_server_delete_playlist_p",utc_mc_server_delete_playlist_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_server_delete_playlist_n",utc_mc_server_delete_playlist_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_server_foreach_playlist_p",utc_mc_server_foreach_playlist_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_server_foreach_playlist_n",utc_mc_server_foreach_playlist_n,utc_media_controller_startup,utc_media_controller_cleanup},
        {"utc_mc_client_create_p",utc_mc_client_create_p,utc_media_controller_startup,utc_media_controller_cleanup},
        {"utc_mc_client_create_n",utc_mc_client_create_n,utc_media_controller_startup,utc_media_controller_cleanup},
        {"utc_mc_client_destroy_p",utc_mc_client_destroy_p,utc_media_controller_startup,utc_media_controller_cleanup},
@@ -229,6 +298,26 @@ testcase tc_array[] = {
        {"utc_mc_client_set_repeat_mode_update_cb_n",utc_mc_client_set_repeat_mode_update_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
        {"utc_mc_client_unset_repeat_mode_update_cb_p",utc_mc_client_unset_repeat_mode_update_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
        {"utc_mc_client_unset_repeat_mode_update_cb_n",utc_mc_client_unset_repeat_mode_update_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_set_server_updated_cb_p",utc_mc_client_set_server_updated_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_set_server_updated_cb_n",utc_mc_client_set_server_updated_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_unset_server_updated_cb_p",utc_mc_client_unset_server_updated_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_unset_server_updated_cb_n",utc_mc_client_unset_server_updated_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_set_playback_updated_cb_p",utc_mc_client_set_playback_updated_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_set_playback_updated_cb_n",utc_mc_client_set_playback_updated_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_unset_playback_updated_cb_p",utc_mc_client_unset_playback_updated_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_unset_playback_updated_cb_n",utc_mc_client_unset_playback_updated_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_set_metadata_updated_cb_p",utc_mc_client_set_metadata_updated_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_set_metadata_updated_cb_n",utc_mc_client_set_metadata_updated_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_unset_metadata_updated_cb_p",utc_mc_client_unset_metadata_updated_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_unset_metadata_updated_cb_n",utc_mc_client_unset_metadata_updated_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_set_shuffle_mode_updated_cb_p",utc_mc_client_set_shuffle_mode_updated_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_set_shuffle_mode_updated_cb_n",utc_mc_client_set_shuffle_mode_updated_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_unset_shuffle_mode_updated_cb_p",utc_mc_client_unset_shuffle_mode_updated_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_unset_shuffle_mode_updated_cb_n",utc_mc_client_unset_shuffle_mode_updated_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_set_repeat_mode_updated_cb_p",utc_mc_client_set_repeat_mode_updated_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_set_repeat_mode_updated_cb_n",utc_mc_client_set_repeat_mode_updated_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_unset_repeat_mode_updated_cb_p",utc_mc_client_unset_repeat_mode_updated_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_unset_repeat_mode_updated_cb_n",utc_mc_client_unset_repeat_mode_updated_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
        {"utc_mc_client_set_cmd_reply_received_cb_p",utc_mc_client_set_cmd_reply_received_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
        {"utc_mc_client_set_cmd_reply_received_cb_n",utc_mc_client_set_cmd_reply_received_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
        {"utc_mc_client_unset_cmd_reply_received_cb_p",utc_mc_client_unset_cmd_reply_received_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
@@ -278,6 +367,28 @@ testcase tc_array[] = {
        {"utc_mc_client_unsubscribe_n",utc_mc_client_unsubscribe_n,utc_media_controller_startup,utc_media_controller_cleanup},
        {"utc_mc_client_foreach_server_subscribed_p",utc_mc_client_foreach_server_subscribed_p,utc_media_controller_startup,utc_media_controller_cleanup},
        {"utc_mc_client_foreach_server_subscribed_n",utc_mc_client_foreach_server_subscribed_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_get_playlist_item_index_p",utc_mc_client_get_playlist_item_index_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_get_playlist_item_index_n",utc_mc_client_get_playlist_item_index_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_set_playlist_updated_cb_p",utc_mc_client_set_playlist_updated_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_set_playlist_updated_cb_n",utc_mc_client_set_playlist_updated_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_unset_playlist_updated_cb_p",utc_mc_client_unset_playlist_updated_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_unset_playlist_updated_cb_n",utc_mc_client_unset_playlist_updated_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_foreach_server_playlist_p",utc_mc_client_foreach_server_playlist_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_foreach_server_playlist_n",utc_mc_client_foreach_server_playlist_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_playlist_get_name_p",utc_mc_playlist_get_name_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_playlist_get_name_n",utc_mc_playlist_get_name_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_playlist_foreach_item_p",utc_mc_playlist_foreach_item_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_playlist_foreach_item_n",utc_mc_playlist_foreach_item_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_playlist_clone_p",utc_mc_playlist_clone_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_playlist_clone_n",utc_mc_playlist_clone_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_playlist_destroy_p",utc_mc_playlist_destroy_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_playlist_destroy_n",utc_mc_playlist_destroy_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_metadata_clone_p",utc_mc_metadata_clone_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_metadata_clone_n",utc_mc_metadata_clone_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_metadata_destroy_p",utc_mc_metadata_destroy_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_metadata_destroy_n",utc_mc_metadata_destroy_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_metadata_get_p",utc_mc_metadata_get_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_metadata_get_n",utc_mc_metadata_get_n,utc_media_controller_startup,utc_media_controller_cleanup},
        {NULL, NULL}
 };
 
index 73b6b09..c7679bd 100755 (executable)
@@ -76,6 +76,19 @@ extern int utc_mc_server_unset_custom_cmd_received_cb_p(void);
 extern int utc_mc_server_unset_custom_cmd_received_cb_n(void);
 extern int utc_mc_server_send_cmd_reply_p(void);
 extern int utc_mc_server_send_cmd_reply_n(void);
+extern int utc_mc_server_set_playlist_item_index_p(void);
+extern int utc_mc_server_set_playlist_item_index_n(void);
+extern int utc_mc_server_create_playlist_p(void);
+extern int utc_mc_server_create_playlist_n(void);
+extern int utc_mc_server_add_item_to_playlist_p(void);
+extern int utc_mc_server_add_item_to_playlist_n(void);
+extern int utc_mc_server_update_playlist_done_p(void);
+extern int utc_mc_server_update_playlist_done_n(void);
+extern int utc_mc_server_delete_playlist_p(void);
+extern int utc_mc_server_delete_playlist_n(void);
+extern int utc_mc_server_foreach_playlist_p(void);
+extern int utc_mc_server_foreach_playlist_n(void);
+
 extern int utc_mc_client_create_p(void);
 extern int utc_mc_client_create_n(void);
 extern int utc_mc_client_destroy_p(void);
@@ -100,6 +113,26 @@ extern int utc_mc_client_set_repeat_mode_update_cb_p(void);
 extern int utc_mc_client_set_repeat_mode_update_cb_n(void);
 extern int utc_mc_client_unset_repeat_mode_update_cb_p(void);
 extern int utc_mc_client_unset_repeat_mode_update_cb_n(void);
+extern int utc_mc_client_set_server_updated_cb_p(void);
+extern int utc_mc_client_set_server_updated_cb_n(void);
+extern int utc_mc_client_unset_server_updated_cb_p(void);
+extern int utc_mc_client_unset_server_updated_cb_n(void);
+extern int utc_mc_client_set_playback_updated_cb_p(void);
+extern int utc_mc_client_set_playback_updated_cb_n(void);
+extern int utc_mc_client_unset_playback_updated_cb_p(void);
+extern int utc_mc_client_unset_playback_updated_cb_n(void);
+extern int utc_mc_client_set_metadata_updated_cb_p(void);
+extern int utc_mc_client_set_metadata_updated_cb_n(void);
+extern int utc_mc_client_unset_metadata_updated_cb_p(void);
+extern int utc_mc_client_unset_metadata_updated_cb_n(void);
+extern int utc_mc_client_set_shuffle_mode_updated_cb_p(void);
+extern int utc_mc_client_set_shuffle_mode_updated_cb_n(void);
+extern int utc_mc_client_unset_shuffle_mode_updated_cb_p(void);
+extern int utc_mc_client_unset_shuffle_mode_updated_cb_n(void);
+extern int utc_mc_client_set_repeat_mode_updated_cb_p(void);
+extern int utc_mc_client_set_repeat_mode_updated_cb_n(void);
+extern int utc_mc_client_unset_repeat_mode_updated_cb_p(void);
+extern int utc_mc_client_unset_repeat_mode_updated_cb_n(void);
 extern int utc_mc_client_set_cmd_reply_received_cb_p(void);
 extern int utc_mc_client_set_cmd_reply_received_cb_n(void);
 extern int utc_mc_client_unset_cmd_reply_received_cb_p(void);
@@ -149,6 +182,30 @@ extern int utc_mc_client_unsubscribe_p(void);
 extern int utc_mc_client_unsubscribe_n(void);
 extern int utc_mc_client_foreach_server_subscribed_p(void);
 extern int utc_mc_client_foreach_server_subscribed_n(void);
+extern int utc_mc_client_get_playlist_item_index_p(void);
+extern int utc_mc_client_get_playlist_item_index_n(void);
+extern int utc_mc_client_set_playlist_updated_cb_p(void);
+extern int utc_mc_client_set_playlist_updated_cb_n(void);
+extern int utc_mc_client_unset_playlist_updated_cb_p(void);
+extern int utc_mc_client_unset_playlist_updated_cb_n(void);
+extern int utc_mc_client_foreach_server_playlist_p(void);
+extern int utc_mc_client_foreach_server_playlist_n(void);
+
+extern int utc_mc_playlist_get_name_p(void);
+extern int utc_mc_playlist_get_name_n(void);
+extern int utc_mc_playlist_foreach_item_p(void);
+extern int utc_mc_playlist_foreach_item_n(void);
+extern int utc_mc_playlist_clone_p(void);
+extern int utc_mc_playlist_clone_n(void);
+extern int utc_mc_playlist_destroy_p(void);
+extern int utc_mc_playlist_destroy_n(void);
+
+extern int utc_mc_metadata_clone_p(void);
+extern int utc_mc_metadata_clone_n(void);
+extern int utc_mc_metadata_destroy_p(void);
+extern int utc_mc_metadata_destroy_n(void);
+extern int utc_mc_metadata_get_p(void);
+extern int utc_mc_metadata_get_n(void);
 
 testcase tc_array[] = {
        {"utc_mc_server_create_p",utc_mc_server_create_p,utc_media_controller_startup,utc_media_controller_cleanup},
@@ -205,6 +262,18 @@ testcase tc_array[] = {
        {"utc_mc_server_unset_custom_cmd_received_cb_n",utc_mc_server_unset_custom_cmd_received_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
        {"utc_mc_server_send_cmd_reply_p",utc_mc_server_send_cmd_reply_p,utc_media_controller_startup,utc_media_controller_cleanup},
        {"utc_mc_server_send_cmd_reply_n",utc_mc_server_send_cmd_reply_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_server_set_playlist_item_index_p",utc_mc_server_set_playlist_item_index_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_server_set_playlist_item_index_n",utc_mc_server_set_playlist_item_index_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_server_create_playlist_p",utc_mc_server_create_playlist_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_server_create_playlist_n",utc_mc_server_create_playlist_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_server_add_item_to_playlist_p",utc_mc_server_add_item_to_playlist_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_server_add_item_to_playlist_n",utc_mc_server_add_item_to_playlist_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_server_update_playlist_done_p",utc_mc_server_update_playlist_done_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_server_update_playlist_done_n",utc_mc_server_update_playlist_done_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_server_delete_playlist_p",utc_mc_server_delete_playlist_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_server_delete_playlist_n",utc_mc_server_delete_playlist_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_server_foreach_playlist_p",utc_mc_server_foreach_playlist_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_server_foreach_playlist_n",utc_mc_server_foreach_playlist_n,utc_media_controller_startup,utc_media_controller_cleanup},
        {"utc_mc_client_create_p",utc_mc_client_create_p,utc_media_controller_startup,utc_media_controller_cleanup},
        {"utc_mc_client_create_n",utc_mc_client_create_n,utc_media_controller_startup,utc_media_controller_cleanup},
        {"utc_mc_client_destroy_p",utc_mc_client_destroy_p,utc_media_controller_startup,utc_media_controller_cleanup},
@@ -229,6 +298,26 @@ testcase tc_array[] = {
        {"utc_mc_client_set_repeat_mode_update_cb_n",utc_mc_client_set_repeat_mode_update_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
        {"utc_mc_client_unset_repeat_mode_update_cb_p",utc_mc_client_unset_repeat_mode_update_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
        {"utc_mc_client_unset_repeat_mode_update_cb_n",utc_mc_client_unset_repeat_mode_update_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_set_server_updated_cb_p",utc_mc_client_set_server_updated_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_set_server_updated_cb_n",utc_mc_client_set_server_updated_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_unset_server_updated_cb_p",utc_mc_client_unset_server_updated_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_unset_server_updated_cb_n",utc_mc_client_unset_server_updated_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_set_playback_updated_cb_p",utc_mc_client_set_playback_updated_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_set_playback_updated_cb_n",utc_mc_client_set_playback_updated_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_unset_playback_updated_cb_p",utc_mc_client_unset_playback_updated_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_unset_playback_updated_cb_n",utc_mc_client_unset_playback_updated_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_set_metadata_updated_cb_p",utc_mc_client_set_metadata_updated_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_set_metadata_updated_cb_n",utc_mc_client_set_metadata_updated_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_unset_metadata_updated_cb_p",utc_mc_client_unset_metadata_updated_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_unset_metadata_updated_cb_n",utc_mc_client_unset_metadata_updated_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_set_shuffle_mode_updated_cb_p",utc_mc_client_set_shuffle_mode_updated_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_set_shuffle_mode_updated_cb_n",utc_mc_client_set_shuffle_mode_updated_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_unset_shuffle_mode_updated_cb_p",utc_mc_client_unset_shuffle_mode_updated_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_unset_shuffle_mode_updated_cb_n",utc_mc_client_unset_shuffle_mode_updated_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_set_repeat_mode_updated_cb_p",utc_mc_client_set_repeat_mode_updated_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_set_repeat_mode_updated_cb_n",utc_mc_client_set_repeat_mode_updated_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_unset_repeat_mode_updated_cb_p",utc_mc_client_unset_repeat_mode_updated_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_unset_repeat_mode_updated_cb_n",utc_mc_client_unset_repeat_mode_updated_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
        {"utc_mc_client_set_cmd_reply_received_cb_p",utc_mc_client_set_cmd_reply_received_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
        {"utc_mc_client_set_cmd_reply_received_cb_n",utc_mc_client_set_cmd_reply_received_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
        {"utc_mc_client_unset_cmd_reply_received_cb_p",utc_mc_client_unset_cmd_reply_received_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
@@ -278,6 +367,28 @@ testcase tc_array[] = {
        {"utc_mc_client_unsubscribe_n",utc_mc_client_unsubscribe_n,utc_media_controller_startup,utc_media_controller_cleanup},
        {"utc_mc_client_foreach_server_subscribed_p",utc_mc_client_foreach_server_subscribed_p,utc_media_controller_startup,utc_media_controller_cleanup},
        {"utc_mc_client_foreach_server_subscribed_n",utc_mc_client_foreach_server_subscribed_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_get_playlist_item_index_p",utc_mc_client_get_playlist_item_index_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_get_playlist_item_index_n",utc_mc_client_get_playlist_item_index_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_set_playlist_updated_cb_p",utc_mc_client_set_playlist_updated_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_set_playlist_updated_cb_n",utc_mc_client_set_playlist_updated_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_unset_playlist_updated_cb_p",utc_mc_client_unset_playlist_updated_cb_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_unset_playlist_updated_cb_n",utc_mc_client_unset_playlist_updated_cb_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_foreach_server_playlist_p",utc_mc_client_foreach_server_playlist_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_client_foreach_server_playlist_n",utc_mc_client_foreach_server_playlist_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_playlist_get_name_p",utc_mc_playlist_get_name_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_playlist_get_name_n",utc_mc_playlist_get_name_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_playlist_foreach_item_p",utc_mc_playlist_foreach_item_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_playlist_foreach_item_n",utc_mc_playlist_foreach_item_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_playlist_clone_p",utc_mc_playlist_clone_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_playlist_clone_n",utc_mc_playlist_clone_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_playlist_destroy_p",utc_mc_playlist_destroy_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_playlist_destroy_n",utc_mc_playlist_destroy_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_metadata_clone_p",utc_mc_metadata_clone_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_metadata_clone_n",utc_mc_metadata_clone_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_metadata_destroy_p",utc_mc_metadata_destroy_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_metadata_destroy_n",utc_mc_metadata_destroy_n,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_metadata_get_p",utc_mc_metadata_get_p,utc_media_controller_startup,utc_media_controller_cleanup},
+       {"utc_mc_metadata_get_n",utc_mc_metadata_get_n,utc_media_controller_startup,utc_media_controller_cleanup},
        {NULL, NULL}
 };
 
index 307da2b..1e7b6f8 100755 (executable)
@@ -30,6 +30,7 @@ static char *g_mc_server_name = NULL;
 static bundle *g_mc_bundle = NULL;
 static mc_server_state_e g_mc_server_state = MC_SERVER_STATE_NONE;
 static gboolean result_of_activated_cb = FALSE;
+static gboolean result_of_playlist_cb = FALSE;
 static char *g_playlist_name = "test_playlist";
 static char *g_request_id = NULL;
 
@@ -61,10 +62,11 @@ static GMainLoop *g_mc_mainloop = NULL;
 
 static gboolean timeout_func(gpointer data)
 {
-    fprintf(stderr, "Timeout! Test case failed!\n");
-    g_main_loop_quit((GMainLoop *) data);
+       FPRINTF("%d:%s invoked! Test case failed! \n", __LINE__, __FUNCTION__);
 
-    return FALSE;
+       g_main_loop_quit((GMainLoop *) data);
+
+       return FALSE;
 }
 
 static void signal_async()
@@ -88,88 +90,80 @@ static void wait_for_async()
 
 void _mc_server_playback_state_command_received_cb(const char* client_name, mc_playback_states_e state, void *user_data)
 {
-       fprintf(stderr, "%s:%d\n", __FILE__, __LINE__);
+       FPRINTF("%d:%s invoked\n", __LINE__, __FUNCTION__);
 
        signal_async();
 
        if(strcmp(client_name, g_mc_test_appname)) {
-               fprintf(stderr, "%s:%d wrong client name [%s][%s]\n", __FILE__, __LINE__, client_name, g_mc_test_appname);
-
+               FPRINTF("[%d:%s] wrong client name [%s][%s]\n", __LINE__, __FUNCTION__, client_name, g_mc_test_appname);
                return;
        }
 
        if ((state < MC_PLAYBACK_STATE_NONE) || (state > MC_PLAYBACK_STATE_REWIND)) {
-               fprintf(stderr, "%s:%d wrong state [%d]\n", __FILE__, __LINE__, state);
-
+               FPRINTF("[%d:%s] wrong state [%d]\n", __LINE__, __FUNCTION__, state);
                return;
        }
 }
 
 void _mc_server_playback_position_cmd_received_cb(const char* client_name, const char *request_id, unsigned long long position, void *user_data)
 {
-       fprintf(stderr, "%s:%d\n", __FILE__, __LINE__);
+       FPRINTF("%d:%s invoked\n", __LINE__, __FUNCTION__);
 
        signal_async();
 
        if(strcmp(client_name, g_mc_test_appname)) {
-               fprintf(stderr, "%s:%d wrong client name [%s][%s]\n", __FILE__, __LINE__, client_name, g_mc_test_appname);
-
+               FPRINTF("[%d:%s] wrong client name [%s][%s]\n", __LINE__, __FUNCTION__, client_name, g_mc_test_appname);
                return;
        }
 
        if (position == 0) {
-               fprintf(stderr, "%s:%d wrong position [%llu]\n", __FILE__, __LINE__, position);
-
+               FPRINTF("[%d:%s] wrong position [%llu]\n", __LINE__, __FUNCTION__, position);
                return;
        }
 }
 
 void _mc_server_shuffle_mode_cmd_received_cb(const char* client_name, const char *request_id, mc_shuffle_mode_e mode, void *user_data)
 {
-       fprintf(stderr, "%s:%d\n", __FILE__, __LINE__);
+       FPRINTF("%d:%s invoked\n", __LINE__, __FUNCTION__);
 
        signal_async();
 
        if(strcmp(client_name, g_mc_test_appname)) {
-               fprintf(stderr, "%s:%d wrong client name [%s][%s]\n", __FILE__, __LINE__, client_name, g_mc_test_appname);
-
+               FPRINTF("[%d:%s] wrong client name [%s][%s]\n", __LINE__, __FUNCTION__, client_name, g_mc_test_appname);
                return;
        }
 
        if ((mode != MC_SHUFFLE_MODE_ON) && (mode != MC_SHUFFLE_MODE_OFF)) {
-               fprintf(stderr, "%s:%d wrong mode [%d]\n", __FILE__, __LINE__, mode);
-
+               FPRINTF("[%d:%s] wrong shuffle mode [%d]\n", __LINE__, __FUNCTION__, mode);
                return;
        }
 }
 
 void _mc_server_repeat_mode_cmd_received_cb(const char* client_name, const char *request_id, mc_repeat_mode_e mode, void *user_data)
 {
-       fprintf(stderr, "%s:%d\n", __FILE__, __LINE__);
+       FPRINTF("%d:%s invoked\n", __LINE__, __FUNCTION__);
 
        signal_async();
 
        if(strcmp(client_name, g_mc_test_appname)) {
-               fprintf(stderr, "%s:%d wrong client name [%s][%s]\n", __FILE__, __LINE__, client_name, g_mc_test_appname);
-
+               FPRINTF("[%d:%s] wrong client name [%s][%s]\n", __LINE__, __FUNCTION__, client_name, g_mc_test_appname);
                return;
        }
 
        if ((mode != MC_REPEAT_MODE_ON) && (mode != MC_REPEAT_MODE_OFF)) {
-               fprintf(stderr, "%s:%d wrong mode [%d]\n", __FILE__, __LINE__, mode);
-
+               FPRINTF("[%d:%s] wrong repeat mode [%d]\n", __LINE__, __FUNCTION__, mode);
                return;
        }
 }
 
 void _mc_server_custom_command_received_cb(const char* client_name, const char *command, bundle *data, void *user_data)
 {
-       fprintf(stderr, "%s:%d\n", __FILE__, __LINE__);
+       FPRINTF("%d:%s invoked\n", __LINE__, __FUNCTION__);
 
        signal_async();
 
        if(strcmp(client_name, g_mc_test_appname)) {
-               fprintf(stderr, "%s:%d wrong client name [%s][%s]\n", __FILE__, __LINE__, client_name, g_mc_test_appname);
+               FPRINTF("[%d:%s] wrong client name [%s][%s]\n", __LINE__, __FUNCTION__, client_name, g_mc_test_appname);
 
                return;
        }
@@ -177,53 +171,49 @@ void _mc_server_custom_command_received_cb(const char* client_name, const char *
 
 void _mc_server_playback_action_cmd_received_cb(const char* client_name, const char *request_id, mc_playback_action_e action, void *user_data)
 {
-       fprintf(stderr, "%s:%d\n", __FILE__, __LINE__);
+       FPRINTF("%d:%s invoked\n", __LINE__, __FUNCTION__);
 
        signal_async();
 
        if(strcmp(client_name, g_mc_test_appname)) {
-               fprintf(stderr, "%s:%d wrong client name [%s][%s]\n", __FILE__, __LINE__, client_name, g_mc_test_appname);
-
+               FPRINTF("[%d:%s] wrong client name [%s][%s]\n", __LINE__, __FUNCTION__, client_name, g_mc_test_appname);
                return;
        }
 
        if ((action < MC_PLAYBACK_ACTION_PLAY) || (action > MC_PLAYBACK_ACTION_TOGGLE_PLAY_PAUSE)) {
-               fprintf(stderr, "%s:%d wrong action [%d]\n", __FILE__, __LINE__, action);
-
+               FPRINTF("[%d:%s] wrong action [%d]\n", __LINE__, __FUNCTION__, action);
                return;
        }
 }
 
 void _mc_server_playlist_cmd_received_cb(const char* client_name, const char *request_id, const char *playlist_name, const char *index, mc_playback_action_e action, unsigned long long position, void *user_data)
 {
-       fprintf(stderr, "%s:%d\n", __FILE__, __LINE__);
+       FPRINTF("%d:%s invoked\n", __LINE__, __FUNCTION__);
 
        signal_async();
 
        if(strcmp(client_name, g_mc_test_appname)) {
-               fprintf(stderr, "%s:%d wrong client name [%s][%s]\n", __FILE__, __LINE__, client_name, g_mc_test_appname);
-
+               FPRINTF("[%d:%s] wrong client name [%s][%s]\n", __LINE__, __FUNCTION__, client_name, g_mc_test_appname);
                return;
        }
 
        if(request_id != NULL && g_request_id != NULL) {
                if(strcmp(request_id, g_request_id)) {
-                       fprintf(stderr, "%s:%d wrong request_id [%s][%s]\n", __FILE__, __LINE__, request_id, g_request_id);
-
+                       FPRINTF("[%d:%s] wrong request_ide [%s][%s]\n", __LINE__, __FUNCTION__, request_id, g_request_id);
                        return;
                }
        }
 
        if ((action < MC_PLAYBACK_ACTION_PLAY) || (action > MC_PLAYBACK_ACTION_TOGGLE_PLAY_PAUSE)) {
-               fprintf(stderr, "%s:%d wrong action [%d]\n", __FILE__, __LINE__, action);
-
+               FPRINTF("[%d:%s] wrong action [%d]\n", __LINE__, __FUNCTION__, action);
                return;
        }
 }
 
 void _mc_server_custom_cmd_received_cb(const char* client_name, const char *request_id, const char *command, bundle *data, void *user_data)
 {
-       FPRINTF("[Line : %d][%s] %s Callback Invoked\\n", __LINE__, __FILE__, "_mc_server_custom_cmd_received_cb");
+       FPRINTF("%d:%s invoked\n", __LINE__, __FUNCTION__);
+
        tc_user_data *_user_data = (tc_user_data *)user_data;
 
        if (_user_data != NULL) {
@@ -239,19 +229,17 @@ void _mc_server_custom_cmd_received_cb(const char* client_name, const char *requ
 
 void _mc_server_state_updated_cb(const char *server_name, mc_server_state_e state, void *user_data)
 {
-       fprintf(stderr, "%s:%d\n", __FILE__, __LINE__);
+       FPRINTF("%d:%s invoked\n", __LINE__, __FUNCTION__);
 
        signal_async();
 
        if(strcmp(server_name, g_mc_test_appname)) {
-               fprintf(stderr, "%s:%d wrong server name [%s][%s]\n", __FILE__, __LINE__, server_name, g_mc_test_appname);
-
+               FPRINTF("[%d:%s] wrong server name [%s][%s]\n", __LINE__, __FUNCTION__, server_name, g_mc_test_appname);
                return;
        }
 
        if ((state < MC_SERVER_STATE_NONE) || (state > MC_SERVER_STATE_DEACTIVATE)) {
-               fprintf(stderr, "%s:%d wrong state [%d]\n", __FILE__, __LINE__, state);
-
+               FPRINTF("[%d:%s] wrong state [%d]\n", __LINE__, __FUNCTION__, state);
                return;
        }
 }
@@ -260,26 +248,23 @@ void _mc_playback_updated_cb(const char *server_name, mc_playback_h playback, vo
 {
        mc_playback_states_e state = MC_PLAYBACK_STATE_NONE;
 
-       fprintf(stderr, "%s:%d\n", __FILE__, __LINE__);
+       FPRINTF("%d:%s invoked\n", __LINE__, __FUNCTION__);
 
        signal_async();
 
        if(strcmp(server_name, g_mc_test_appname)) {
-               fprintf(stderr, "%s:%d wrong server name [%s][%s]\n", __FILE__, __LINE__, server_name, g_mc_test_appname);
-
+               FPRINTF("[%d:%s] wrong server name [%s][%s]\n", __LINE__, __FUNCTION__, server_name, g_mc_test_appname);
                return;
        }
 
        if (playback == NULL) {
-               fprintf(stderr, "%s:%d wrong playback handle\n", __FILE__, __LINE__);
-
+               FPRINTF("[%d:%s] wrong playback handle\n", __LINE__, __FUNCTION__);
                return;
        }
 
        mc_client_get_playback_state(playback, &state);
        if ((state < MC_PLAYBACK_STATE_NONE) || (state > MC_PLAYBACK_STATE_REWIND)) {
-               fprintf(stderr, "%s:%d wrong state [%d]\n", __FILE__, __LINE__, state);
-
+               FPRINTF("[%d:%s] wrong state [%d]\n", __LINE__, __FUNCTION__, state);
                return;
        }
 
@@ -287,64 +272,81 @@ void _mc_playback_updated_cb(const char *server_name, mc_playback_h playback, vo
 
 void _mc_metadata_updated_cb(const char *server_name, mc_metadata_h metadata, void *user_data)
 {
-       fprintf(stderr, "%s:%d\n", __FILE__, __LINE__);
+       FPRINTF("%d:%s invoked\n", __LINE__, __FUNCTION__);
 
        signal_async();
 
        if(strcmp(server_name, g_mc_test_appname)) {
-               fprintf(stderr, "%s:%d wrong server name [%s][%s]\n", __FILE__, __LINE__, server_name, g_mc_test_appname);
-
+               FPRINTF("[%d:%s] wrong server name [%s][%s]\n", __LINE__, __FUNCTION__, server_name, g_mc_test_appname);
                return;
        }
 
        if (metadata == NULL) {
-               fprintf(stderr, "%s:%d wrong meta handle\n", __FILE__, __LINE__);
-
+               FPRINTF("[%d:%s] wrong meta handle\n", __LINE__, __FUNCTION__);
                return;
        }
 }
 
 void _mc_shuffle_mode_changed_cb(const char *server_name, mc_shuffle_mode_e mode, void *user_data)
 {
-       fprintf(stderr, "%s:%d\n", __FILE__, __LINE__);
+       FPRINTF("%d:%s invoked\n", __LINE__, __FUNCTION__);
 
        signal_async();
 
        if(strcmp(server_name, g_mc_test_appname)) {
-               fprintf(stderr, "%s:%d wrong server name [%s][%s]\n", __FILE__, __LINE__, server_name, g_mc_test_appname);
-
+               FPRINTF("[%d:%s] wrong server name [%s][%s]\n", __LINE__, __FUNCTION__, server_name, g_mc_test_appname);
                return;
        }
 
        if ((mode != MC_SHUFFLE_MODE_ON) && (mode != MC_SHUFFLE_MODE_OFF)) {
-               fprintf(stderr, "%s:%d wrong shuffle_mode [%d]\n", __FILE__, __LINE__, mode);
-
+               FPRINTF("[%d:%s] wrong shuffle_mode [%d]\n", __LINE__, __FUNCTION__, mode);
                return;
        }
 }
 
 void _mc_repeat_mode_changed_cb(const char *server_name, mc_repeat_mode_e mode, void *user_data)
 {
-       fprintf(stderr, "%s:%d\n", __FILE__, __LINE__);
+       FPRINTF("%d:%s invoked\n", __LINE__, __FUNCTION__);
 
        signal_async();
 
        if(strcmp(server_name, g_mc_test_appname)) {
-               fprintf(stderr, "%s:%d wrong server name [%s][%s]\n", __FILE__, __LINE__, server_name, g_mc_test_appname);
-
+               FPRINTF("[%d:%s] wrong server name [%s][%s]\n", __LINE__, __FUNCTION__, server_name, g_mc_test_appname);
                return;
        }
 
        if ((mode != MC_REPEAT_MODE_ON) && (mode != MC_REPEAT_MODE_OFF) && (mode != MC_REPEAT_MODE_ONE_MEDIA)) {
-               fprintf(stderr, "%s:%d wrong repeat_mode [%d]\n", __FILE__, __LINE__, mode);
+               FPRINTF("[%d:%s] wrong mode [%d]\n", __LINE__, __FUNCTION__, mode);
+               return;
+       }
+}
+
+void _mc_playlist_updated_cb(const char *server_name, mc_playlist_update_mode_e mode, const char *playlist_name, mc_playlist_h playlist, void *user_data)
+{
+       FPRINTF("%d:%s invoked\n", __LINE__, __FUNCTION__);
+
+       if(strcmp(server_name, g_mc_test_appname)) {
+               FPRINTF("[%d:%s] wrong server name [%s][%s]\n", __LINE__, __FUNCTION__, server_name, g_mc_test_appname);
+               return;
+       }
+
+       if(strcmp(playlist_name, g_playlist_name)) {
+               FPRINTF("[%d:%s] wrong server name [%s][%s]\n", __LINE__, __FUNCTION__, playlist_name, g_playlist_name);
+               return;
+       }
 
+       if ((mode != MC_PLAYLIST_UPDATED) && (mode != MC_PLAYLIST_REMOVED)) {
+               FPRINTF("[%d:%s] wrong mode [%d]\n", __LINE__, __FUNCTION__, mode);
                return;
        }
+
+       return;
 }
 
 void _mc_cmd_reply_received_cb(const char *server_name, const char *request_id, int result_code, bundle *data, void *user_data)
 {
-       FPRINTF("[Line : %d][%s] %s Callback Invoked\\n", __LINE__, __FILE__, "_mc_server_custom_cmd_received_cb");
+       FPRINTF("%d:%s invoked\n", __LINE__, __FUNCTION__);
+
        tc_user_data *_user_data = (tc_user_data *)user_data;
 
        if (_user_data != NULL) {
@@ -360,7 +362,7 @@ void _mc_cmd_reply_received_cb(const char *server_name, const char *request_id,
 
 bool _mc_activated_server_cb(const char *server_name, void *user_data)
 {
-    fprintf(stderr, "%s:%d\n", __FILE__, __LINE__);
+       FPRINTF("%d:%s invoked\n", __LINE__, __FUNCTION__);
 
     if(strcmp(server_name, g_mc_test_appname) == 0) {
         result_of_activated_cb = TRUE;
@@ -372,32 +374,128 @@ bool _mc_activated_server_cb(const char *server_name, void *user_data)
 
 void _mc_command_reply_received_cb(const char *server_name, int result_code, bundle *data, void *user_data)
 {
-       fprintf(stderr, "%s:%d\n", __FILE__, __LINE__);
+       FPRINTF("%d:%s invoked\n", __LINE__, __FUNCTION__);
 
        signal_async();
 
        if(strcmp(server_name, g_mc_test_appname)) {
-               fprintf(stderr, "%s:%d wrong server name [%s][%s]\n", __FILE__, __LINE__, server_name, g_mc_test_appname);
-
+               FPRINTF("[%d:%s] wrong server name [%s][%s]\n", __LINE__, __FUNCTION__, server_name, g_mc_test_appname);
                return;
        }
 }
 
 bool _mc_subscribed_server_cb(const char *server_name, void *user_data)
 {
-       fprintf(stderr, "%s:%d\n", __FILE__, __LINE__);
+       FPRINTF("%d:%s invoked\n", __LINE__, __FUNCTION__);
 
        signal_async();
 
        if(strcmp(server_name, g_mc_test_appname)) {
-               fprintf(stderr, "%s:%d wrong server name [%s][%s]\n", __FILE__, __LINE__, server_name, g_mc_test_appname);
-
+               FPRINTF("[%d:%s] wrong server name [%s][%s]\n", __LINE__, __FUNCTION__, server_name, g_mc_test_appname);
                return TRUE;
        }
 
     return FALSE;
 }
 
+bool _mc_server_playlist_list_cb(mc_playlist_h playlist, void *user_data)
+{
+       FPRINTF("%d:%s invoked\n", __LINE__, __FUNCTION__);
+
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       char *playlist_name = NULL;
+
+       ret = mc_playlist_get_name(playlist, &playlist_name);
+       if (ret != MEDIA_CONTROLLER_ERROR_NONE)
+               FPRINTF("[%d:%s] fail mc_playlist_get_name [%d]\n", __LINE__, __FUNCTION__, ret);
+
+       if (playlist_name != NULL) {
+               if(strcmp(playlist_name, g_playlist_name)) {
+                       FPRINTF("[%d:%s] wrong server name [%s][%s]\n", __LINE__, __FUNCTION__, playlist_name, g_playlist_name);
+                       free(playlist_name);
+                       return FALSE;
+               }
+               free(playlist_name);
+       }
+
+       result_of_playlist_cb = TRUE;
+
+       return true;
+}
+
+bool _server_playlist_item_cb(const char *index, mc_metadata_h meta, void *user_data)
+{
+       FPRINTF("%d:%s invoked\n", __LINE__, __FUNCTION__);
+
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       char *value = NULL;
+
+       if (index != NULL) {
+               if(strcmp(index, "1")) {
+                       FPRINTF("[%d:%s] wrong playlist index [%s]\n", __LINE__, __FUNCTION__, index);
+                       return FALSE;
+               }
+
+               ret = mc_metadata_get(meta, MC_META_MEDIA_TITLE, &value);
+               if (ret != MEDIA_CONTROLLER_ERROR_NONE)
+                       FPRINTF("[%d:%s] fail mc_metadata_get [%d]\n", __LINE__, __FUNCTION__, ret);
+
+               if (value != NULL) {
+                       if(strcmp(value, "title_1")) {
+                               FPRINTF("[%d:%s] fail mc_metadata_get [%s]\n", __LINE__, __FUNCTION__, value);
+                               free(value);
+                               return FALSE;
+                       }
+                       free(value);
+               }
+
+               result_of_playlist_cb = TRUE;
+       } else {
+               FPRINTF("[%d:%s] wrong index\n", __LINE__, __FUNCTION__);
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+int _mc_register_playlist(mc_playlist_h *playlist)
+{
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       mc_playlist_h _playlist = NULL;
+
+       ret = mc_server_create_playlist(g_mc_server, g_playlist_name, &_playlist);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_server_add_item_to_playlist(g_mc_server, _playlist, "1", MC_META_MEDIA_TITLE, "title_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, _playlist, "1", MC_META_MEDIA_ARTIST, "artist_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, _playlist, "1", MC_META_MEDIA_ALBUM, "album_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, _playlist, "1", MC_META_MEDIA_AUTHOR, "author_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, _playlist, "1", MC_META_MEDIA_GENRE, "genre_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, _playlist, "1", MC_META_MEDIA_DURATION, "duration_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, _playlist, "1", MC_META_MEDIA_DATE, "date_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, _playlist, "1", MC_META_MEDIA_COPYRIGHT, "copyright_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, _playlist, "1", MC_META_MEDIA_DESCRIPTION, "destription_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, _playlist, "1", MC_META_MEDIA_TRACK_NUM, "track_num_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, _playlist, "1", MC_META_MEDIA_PICTURE, "picture_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_server_update_playlist_done(g_mc_server, _playlist);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       *playlist = _playlist;
+
+       return MEDIA_CONTROLLER_ERROR_NONE;
+}
 /**
  * @function           utc_media_controller_startup
  * @description                Called before each test
@@ -435,6 +533,14 @@ void utc_media_controller_startup(void)
         return;
     }
 
+       ret = mc_server_set_playlist_item_index(g_mc_server, "3");
+       if ( ret != MEDIA_CONTROLLER_ERROR_NONE) {
+               fprintf(stderr, "Startup error at %s:%d\n", __FILE__, __LINE__);
+               fprintf(stderr, " mc_server_set_playlist_item_index failed (code: %d)\n", ret);
+               startup_ret = ret;
+               return;
+       }
+
     ret = mc_server_update_playback_info(g_mc_server);
     if ( ret != MEDIA_CONTROLLER_ERROR_NONE) {
         fprintf(stderr, "Startup error at %s:%d\n", __FILE__, __LINE__);
@@ -488,11 +594,11 @@ void utc_media_controller_startup(void)
         return;
     }
 
-    ret = mc_client_set_server_update_cb(g_mc_client, _mc_server_state_updated_cb, NULL);
+    ret = mc_client_set_server_updated_cb(g_mc_client, _mc_server_state_updated_cb, NULL);
     if(ret != MEDIA_CONTROLLER_ERROR_NONE)
     {
         fprintf(stderr, "Startup error at %s:%d\n", __FILE__, __LINE__);
-        fprintf(stderr, " mc_client_set_server_update_cb failed (code: %d)\n", ret);
+        fprintf(stderr, " mc_client_set_server_updated_cb failed (code: %d)\n", ret);
         startup_ret = ret;
         return;
     }
@@ -698,6 +804,43 @@ int utc_mc_server_set_playback_position_n(void)
 }
 
 /**
+ * @testcase           utc_mc_server_set_playlist_item_index_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_server_set_playlist_item_index()
+ */
+int utc_mc_server_set_playlist_item_index_p(void)
+{
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+
+       ret = mc_server_set_playlist_item_index(g_mc_server, "3");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_mc_server_set_playlist_item_index_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_server_set_playlist_item_index()
+ */
+int utc_mc_server_set_playlist_item_index_n(void)
+{
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+
+       ret = mc_server_set_playlist_item_index(NULL, "3");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+       ret = mc_server_set_playlist_item_index(g_mc_server, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+       return 0;
+}
+
+/**
  * @testcase           utc_mc_server_set_metadata_p
  * @since_tizen                2.4
  * @description                Positive test case of mc_server_set_metadata()
@@ -1640,126 +1783,409 @@ int utc_mc_server_send_cmd_reply_n(void)
 }
 
 /**
- * @testcase           utc_mc_client_create_p
- * @since_tizen                2.4
- * @description                Positive test case of mc_client_create()
+ * @testcase           utc_mc_server_create_playlist_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_server_create_playlist()
  */
-int utc_mc_client_create_p(void)
+int utc_mc_server_create_playlist_p(void)
 {
-    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       mc_playlist_h playlist = NULL;
 
-    ret = mc_client_destroy(g_mc_client);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-       g_mc_client = NULL;
+       ret = mc_server_create_playlist(g_mc_server, g_playlist_name, &playlist);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_create(&g_mc_client);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_playlist_destroy(playlist);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    return 0;
+       return 0;
 }
 
 /**
- * @testcase           utc_mc_client_create_n
- * @since_tizen                2.4
- * @description                Negative test case of mc_client_create()
+ * @testcase           utc_mc_server_create_playlist_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_server_create_playlist()
  */
-int utc_mc_client_create_n(void)
+int utc_mc_server_create_playlist_n(void)
 {
-    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
-
-    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_destroy(g_mc_client);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-    g_mc_client = NULL;
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
 
-    ret = mc_client_create(NULL);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+       ret = mc_server_create_playlist(g_mc_server, g_playlist_name, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
-    return 0;
+       return 0;
 }
 
-
 /**
- * @testcase           utc_mc_client_destroy_p
- * @since_tizen                2.4
- * @description                Positive test case of mc_client_destroy()
+ * @testcase           utc_mc_server_add_item_to_playlist_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_server_add_item_to_playlist()
  */
-int utc_mc_client_destroy_p(void)
+int utc_mc_server_add_item_to_playlist_p(void)
 {
-    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       mc_playlist_h playlist = NULL;
 
-    ret = mc_client_destroy(g_mc_client);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-    g_mc_client = NULL;
+       ret = mc_server_create_playlist(g_mc_server, g_playlist_name, &playlist);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    return 0;
-}
+       ret = mc_server_add_item_to_playlist(g_mc_server, playlist, "1", MC_META_MEDIA_TITLE, "title_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, playlist, "1", MC_META_MEDIA_ARTIST, "artist_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, playlist, "1", MC_META_MEDIA_ALBUM, "album_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, playlist, "1", MC_META_MEDIA_AUTHOR, "author_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, playlist, "1", MC_META_MEDIA_GENRE, "genre_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, playlist, "1", MC_META_MEDIA_DURATION, "duration_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, playlist, "1", MC_META_MEDIA_DATE, "date_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, playlist, "1", MC_META_MEDIA_COPYRIGHT, "copyright_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, playlist, "1", MC_META_MEDIA_DESCRIPTION, "destription_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, playlist, "1", MC_META_MEDIA_TRACK_NUM, "track_num_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, playlist, "1", MC_META_MEDIA_PICTURE, "picture_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, playlist, "2", MC_META_MEDIA_TITLE, "title_2");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_playlist_destroy(playlist);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
+       return 0;
+}
 
 /**
- * @testcase           utc_mc_client_destroy_n
- * @since_tizen                2.4
- * @description                Negative test case of mc_client_destroy()
+ * @testcase           utc_mc_server_add_item_to_playlist_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_server_add_item_to_playlist()
  */
-int utc_mc_client_destroy_n(void)
+int utc_mc_server_add_item_to_playlist_n(void)
 {
-    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       mc_playlist_h playlist = NULL;
 
-    ret = mc_client_destroy(NULL);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+       ret = mc_server_create_playlist(g_mc_server, g_playlist_name, &playlist);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    return 0;
+       ret = mc_server_add_item_to_playlist(g_mc_server, playlist, NULL, MC_META_MEDIA_TITLE, "title_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+       ret = mc_playlist_destroy(playlist);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       return 0;
 }
 
 /**
- * @testcase           utc_mc_client_set_server_update_cb_p
- * @since_tizen                2.4
- * @description                Positive test case of mc_client_set_server_update_cb()
+ * @testcase           utc_mc_server_update_playlist_done_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_server_update_playlist_done()
  */
-int utc_mc_client_set_server_update_cb_p(void)
+int utc_mc_server_update_playlist_done_p(void)
 {
-    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       mc_playlist_h playlist = NULL;
 
-    ret = mc_client_unset_server_update_cb(g_mc_client);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_create_playlist(g_mc_server, g_playlist_name, &playlist);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_set_server_update_cb(g_mc_client, _mc_server_state_updated_cb, NULL);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, playlist, "1", MC_META_MEDIA_TITLE, "title_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, playlist, "1", MC_META_MEDIA_ARTIST, "artist_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, playlist, "1", MC_META_MEDIA_ALBUM, "album_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, playlist, "1", MC_META_MEDIA_AUTHOR, "author_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, playlist, "1", MC_META_MEDIA_GENRE, "genre_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, playlist, "1", MC_META_MEDIA_DURATION, "duration_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, playlist, "1", MC_META_MEDIA_DATE, "date_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, playlist, "1", MC_META_MEDIA_COPYRIGHT, "copyright_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, playlist, "1", MC_META_MEDIA_DESCRIPTION, "destription_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, playlist, "1", MC_META_MEDIA_TRACK_NUM, "track_num_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, playlist, "1", MC_META_MEDIA_PICTURE, "picture_1");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_add_item_to_playlist(g_mc_server, playlist, "2", MC_META_MEDIA_TITLE, "title_2");
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    return 0;
-}
+       ret = mc_server_update_playlist_done(g_mc_server, playlist);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_playlist_destroy(playlist);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
+       return 0;
+}
 
 /**
- * @testcase           utc_mc_client_set_server_update_cb_n
- * @since_tizen                2.4
- * @description                Negative test case of mc_client_set_server_update_cb()
+ * @testcase           utc_mc_server_update_playlist_done_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_server_update_playlist_done()
  */
-int utc_mc_client_set_server_update_cb_n(void)
+int utc_mc_server_update_playlist_done_n(void)
 {
-    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       mc_playlist_h playlist = NULL;
 
-    ret = mc_client_unset_server_update_cb(g_mc_client);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_server_create_playlist(g_mc_server, g_playlist_name, &playlist);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_set_server_update_cb(NULL, _mc_server_state_updated_cb, NULL);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+       ret = mc_server_update_playlist_done(g_mc_server, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
-    ret = mc_client_set_server_update_cb(g_mc_client, NULL, NULL);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+       ret = mc_playlist_destroy(playlist);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    return 0;
+       return 0;
+}
+
+/**
+ * @testcase           utc_mc_server_delete_playlist_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_server_delete_playlist()
+ */
+int utc_mc_server_delete_playlist_p(void)
+{
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       mc_playlist_h playlist = NULL;
+
+       ret = _mc_register_playlist(&playlist);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_server_create_playlist(g_mc_server, g_playlist_name, &playlist);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_server_delete_playlist(g_mc_server, playlist);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_playlist_destroy(playlist);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_mc_server_delete_playlist_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_server_delete_playlist()
+ */
+int utc_mc_server_delete_playlist_n(void)
+{
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       mc_playlist_h playlist = NULL;
+
+       ret = mc_server_create_playlist(g_mc_server, g_playlist_name, &playlist);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_server_delete_playlist(g_mc_server, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+       ret = mc_playlist_destroy(playlist);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_mc_server_foreach_playlist_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_server_foreach_playlist()
+ */
+int utc_mc_server_foreach_playlist_p(void)
+{
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       mc_playlist_h playlist = NULL;
+       result_of_playlist_cb = FALSE;
+
+       ret = _mc_register_playlist(&playlist);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_server_foreach_playlist(g_mc_server, _mc_server_playlist_list_cb, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       assert_eq(result_of_playlist_cb, TRUE);
+
+       ret = mc_playlist_destroy(playlist);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_mc_server_foreach_playlist_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_server_foreach_playlist()
+ */
+int utc_mc_server_foreach_playlist_n(void)
+{
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       mc_playlist_h playlist = NULL;
+
+       ret = mc_server_create_playlist(g_mc_server, g_playlist_name, &playlist);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_server_foreach_playlist(g_mc_server, NULL, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+       ret = mc_playlist_destroy(playlist);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_create_p
+ * @since_tizen                2.4
+ * @description                Positive test case of mc_client_create()
+ */
+int utc_mc_client_create_p(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+
+    ret = mc_client_destroy(g_mc_client);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       g_mc_client = NULL;
+
+    ret = mc_client_create(&g_mc_client);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_create_n
+ * @since_tizen                2.4
+ * @description                Negative test case of mc_client_create()
+ */
+int utc_mc_client_create_n(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+
+    ret = mc_client_destroy(g_mc_client);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+    g_mc_client = NULL;
+
+    ret = mc_client_create(NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    return 0;
+}
+
+
+/**
+ * @testcase           utc_mc_client_destroy_p
+ * @since_tizen                2.4
+ * @description                Positive test case of mc_client_destroy()
+ */
+int utc_mc_client_destroy_p(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+
+    ret = mc_client_destroy(g_mc_client);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+    g_mc_client = NULL;
+
+    return 0;
+}
+
+
+/**
+ * @testcase           utc_mc_client_destroy_n
+ * @since_tizen                2.4
+ * @description                Negative test case of mc_client_destroy()
+ */
+int utc_mc_client_destroy_n(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+
+    ret = mc_client_destroy(NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_set_server_update_cb_p
+ * @since_tizen                2.4
+ * @description                Positive test case of mc_client_set_server_update_cb()
+ */
+int utc_mc_client_set_server_update_cb_p(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+
+    ret = mc_client_unset_server_update_cb(g_mc_client);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_set_server_update_cb(g_mc_client, _mc_server_state_updated_cb, NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    return 0;
+}
+
+
+/**
+ * @testcase           utc_mc_client_set_server_update_cb_n
+ * @since_tizen                2.4
+ * @description                Negative test case of mc_client_set_server_update_cb()
+ */
+int utc_mc_client_set_server_update_cb_n(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+
+    ret = mc_client_unset_server_update_cb(g_mc_client);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_set_server_update_cb(NULL, _mc_server_state_updated_cb, NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    ret = mc_client_set_server_update_cb(g_mc_client, NULL, NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    return 0;
 }
 
 /**
@@ -2090,83 +2516,61 @@ int utc_mc_client_unset_repeat_mode_update_cb_n(void)
 }
 
 /**
- * @testcase           utc_mc_client_set_cmd_reply_received_cb_p
- * @since_tizen                2.4
- * @description                Positive test case of mc_client_set_cmd_reply_received_cb()
+ * @testcase           utc_mc_client_set_server_updated_cb_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_client_set_server_updated_cb()
  */
-int utc_mc_client_set_cmd_reply_received_cb_p(void)
+int utc_mc_client_set_server_updated_cb_p(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
 
-    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-
-    ret = mc_client_set_cmd_reply_received_cb(g_mc_client, _mc_cmd_reply_received_cb, &g_mc_user_data);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-
-    ret = mc_server_set_custom_cmd_received_cb(g_mc_server, _mc_server_custom_cmd_received_cb, &g_mc_user_data);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-
-    ret = mc_client_send_custom_cmd(g_mc_client, g_mc_server_name, "test", NULL, &g_request_id);
+    ret = mc_client_unset_server_updated_cb(g_mc_client);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-       wait_for_async();
-
-       assert_eq(g_mc_user_data.result, TRUE);
-       assert_eq(strcmp(g_mc_user_data.name, g_mc_test_appname), 0);
-       assert_eq(strcmp(g_mc_user_data.request_id, g_request_id), 0);
 
-    ret = mc_server_send_cmd_reply(g_mc_server, g_mc_user_data.name, g_mc_user_data.request_id, 0, NULL);
-       free(g_mc_user_data.name);
-       free(g_mc_user_data.request_id);
-       memset(&g_mc_user_data, 0, sizeof(g_mc_user_data));
+    ret = mc_client_set_server_updated_cb(g_mc_client, _mc_server_state_updated_cb, NULL);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-       wait_for_async();
-
-       assert_eq(g_mc_user_data.result, TRUE);
-       assert_eq(strcmp(g_mc_user_data.name, g_mc_test_appname), 0);
-       assert_eq(strcmp(g_mc_user_data.request_id, g_request_id), 0);
 
     return 0;
 }
 
 
 /**
- * @testcase           utc_mc_client_set_cmd_reply_received_cb_n
- * @since_tizen                2.4
- * @description                Negative test case of mc_client_set_cmd_reply_received_cb()
+ * @testcase           utc_mc_client_set_server_updated_cb_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_client_set_server_updated_cb()
  */
-int utc_mc_client_set_cmd_reply_received_cb_n(void)
+int utc_mc_client_set_server_updated_cb_n(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
 
-    ret = mc_client_set_cmd_reply_received_cb(NULL, _mc_cmd_reply_received_cb, NULL);
+    ret = mc_client_unset_server_updated_cb(g_mc_client);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_set_server_updated_cb(NULL, _mc_server_state_updated_cb, NULL);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
-    ret = mc_client_set_cmd_reply_received_cb(g_mc_client, NULL, NULL);
+    ret = mc_client_set_server_updated_cb(g_mc_client, NULL, NULL);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
     return 0;
 }
 
 /**
- * @testcase           utc_mc_client_unset_cmd_reply_received_cb_p
- * @since_tizen                2.4
- * @description                Positive test case of mc_client_unset_cmd_reply_received_cb()
+ * @testcase           utc_mc_client_unset_server_updated_cb_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_client_unset_server_updated_cb()
  */
-int utc_mc_client_unset_cmd_reply_received_cb_p(void)
+int utc_mc_client_unset_server_updated_cb_p(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
 
-    ret = mc_client_set_cmd_reply_received_cb(g_mc_client, _mc_cmd_reply_received_cb, NULL);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-
-    ret = mc_client_unset_cmd_reply_received_cb(g_mc_client);
+    ret = mc_client_unset_server_updated_cb(g_mc_client);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     return 0;
@@ -2174,46 +2578,34 @@ int utc_mc_client_unset_cmd_reply_received_cb_p(void)
 
 
 /**
- * @testcase           utc_mc_client_unset_cmd_reply_received_cb_n
- * @since_tizen                2.4
- * @description                Negative test case of mc_client_unset_cmd_reply_received_cb()
+ * @testcase           utc_mc_client_unset_server_updated_cb_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_client_unset_server_updated_cb()
  */
-int utc_mc_client_unset_cmd_reply_received_cb_n(void)
+int utc_mc_client_unset_server_updated_cb_n(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
 
-    ret = mc_client_unset_cmd_reply_received_cb(NULL);
+    ret = mc_client_unset_server_updated_cb(NULL);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
     return 0;
 }
 
 /**
- * @testcase           utc_mc_client_get_playback_state_p
- * @since_tizen                2.4
- * @description                Positive test case of mc_client_get_playback_state()
+ * @testcase           utc_mc_client_set_playback_updated_cb_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_client_set_playback_updated_cb()
  */
-int utc_mc_client_get_playback_state_p(void)
+int utc_mc_client_set_playback_updated_cb_p(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    mc_playback_h playback_info = NULL;
-    mc_playback_states_e playback_state = MC_PLAYBACK_STATE_NONE;
 
-    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-
-    ret = mc_client_get_server_playback_info(g_mc_client, g_mc_server_name, &playback_info);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-
-    ret = mc_client_get_playback_state(playback_info, &playback_state);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-    assert_eq(playback_state, MC_PLAYBACK_STATE_PLAYING);
-
-    ret = mc_client_destroy_playback(playback_info);
+    ret = mc_client_set_playback_updated_cb(g_mc_client, _mc_playback_updated_cb, NULL);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     return 0;
@@ -2221,60 +2613,37 @@ int utc_mc_client_get_playback_state_p(void)
 
 
 /**
- * @testcase           utc_mc_client_get_playback_state_n
- * @since_tizen                2.4
- * @description                Negative test case of mc_client_get_playback_state()
+ * @testcase           utc_mc_client_set_playback_updated_cb_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_client_set_playback_updated_cb()
  */
-int utc_mc_client_get_playback_state_n(void)
+int utc_mc_client_set_playback_updated_cb_n(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    mc_playback_h playback_info = NULL;
-    mc_playback_states_e playback_state = MC_PLAYBACK_STATE_NONE;
-
-    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_get_server_playback_info(g_mc_client, g_mc_server_name, &playback_info);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-
-    ret = mc_client_get_playback_state(NULL, &playback_state);
+    ret = mc_client_set_playback_updated_cb(NULL, _mc_playback_updated_cb, NULL);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
-    ret = mc_client_get_playback_state(playback_info, NULL);
+    ret = mc_client_set_playback_updated_cb(g_mc_client, NULL, NULL);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
-    ret = mc_client_destroy_playback(playback_info);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-
     return 0;
 }
 
 /**
- * @testcase           utc_mc_client_get_playback_position_p
- * @since_tizen                2.4
- * @description                Positive test case of mc_client_get_playback_position()
+ * @testcase           utc_mc_client_unset_playback_updated_cb_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_client_unset_playback_updated_cb()
  */
-int utc_mc_client_get_playback_position_p(void)
+int utc_mc_client_unset_playback_updated_cb_p(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    mc_playback_h playback_info = NULL;
-    unsigned long long playback_position = 0;
-
-    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-
-    ret = mc_client_get_server_playback_info(g_mc_client, g_mc_server_name, &playback_info);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-
-    ret = mc_client_get_playback_position(playback_info, &playback_position);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-    assert_eq(playback_position, 10000);
 
-    ret = mc_client_destroy_playback(playback_info);
+    ret = mc_client_unset_playback_updated_cb(g_mc_client);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     return 0;
@@ -2282,829 +2651,1729 @@ int utc_mc_client_get_playback_position_p(void)
 
 
 /**
- * @testcase           utc_mc_client_get_playback_position_n
- * @since_tizen                2.4
- * @description                Negative test case of mc_client_get_playback_position()
+ * @testcase           utc_mc_client_unset_playback_updated_cb_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_client_unset_playback_updated_cb()
  */
-int utc_mc_client_get_playback_position_n(void)
+int utc_mc_client_unset_playback_updated_cb_n(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    mc_playback_h playback_info = NULL;
-    unsigned long long playback_position = 0;
-
-    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_get_server_playback_info(g_mc_client, g_mc_server_name, &playback_info);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-
-    ret = mc_client_get_playback_position(NULL, &playback_position);
+    ret = mc_client_unset_playback_updated_cb(NULL);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
-    ret = mc_client_get_playback_position(playback_info, NULL);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
-
-    ret = mc_client_destroy_playback(playback_info);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-
     return 0;
 }
 
 /**
- * @testcase           utc_mc_client_destroy_playback_p
- * @since_tizen                2.4
- * @description                Positive test case of mc_client_destroy_playback()
+ * @testcase           utc_mc_client_set_metadata_updated_cb_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_client_set_metadata_updated_cb()
  */
-int utc_mc_client_destroy_playback_p(void)
+int utc_mc_client_set_metadata_updated_cb_p(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    mc_playback_h playback_info = NULL;
 
-    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-
-    ret = mc_client_get_server_playback_info(g_mc_client, g_mc_server_name, &playback_info);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-
-    ret = mc_client_destroy_playback(playback_info);
+    ret = mc_client_set_metadata_updated_cb(g_mc_client, _mc_metadata_updated_cb, NULL);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     return 0;
 }
 
+
 /**
- * @testcase           utc_mc_client_destroy_playback_n
- * @since_tizen                2.4
- * @description                Negative test case of mc_client_destroy_playback()
+ * @testcase           utc_mc_client_set_metadata_updated_cb_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_client_set_metadata_updated_cb()
  */
-int utc_mc_client_destroy_playback_n(void)
+int utc_mc_client_set_metadata_updated_cb_n(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
 
-    ret = mc_client_destroy_playback(NULL);
+    ret = mc_client_set_metadata_updated_cb(NULL, _mc_metadata_updated_cb, NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    ret = mc_client_set_metadata_updated_cb(g_mc_client, NULL, NULL);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
     return 0;
 }
 
 /**
- * @testcase           utc_mc_client_get_metadata_p
- * @since_tizen                2.4
- * @description                Positive test case of mc_client_get_metadata()
+ * @testcase           utc_mc_client_unset_metadata_updated_cb_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_client_unset_metadata_updated_cb()
  */
-int utc_mc_client_get_metadata_p(void)
+int utc_mc_client_unset_metadata_updated_cb_p(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    mc_metadata_h metadata = NULL;
-    char *value[MC_META_MEDIA_PICTURE+1] = {NULL, };
-    int i = 0;
 
-    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-
-    ret = mc_client_get_server_metadata(g_mc_client, g_mc_server_name, &metadata);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-
-    for (i = 0; i < MC_META_MEDIA_PICTURE+1;i++) {
-        ret = mc_client_get_metadata(metadata, i, &value[i]);
-        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-        assert_neq(value[i], NULL);
-               assert_eq(strcmp(value[i], g_mc_test_metadata[i]), 0);
-        if (value[i]) free(value[i]);
-    }
-
-    ret = mc_client_destroy_metadata(metadata);
+    ret = mc_client_unset_metadata_updated_cb(g_mc_client);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     return 0;
 }
 
+
 /**
- * @testcase           utc_mc_client_get_metadata_n
- * @since_tizen                2.4
- * @description                Negative test case of mc_client_get_metadata()
+ * @testcase           utc_mc_client_unset_metadata_updated_cb_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_client_unset_metadata_updated_cb()
  */
-int utc_mc_client_get_metadata_n(void)
+int utc_mc_client_unset_metadata_updated_cb_n(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    mc_metadata_h metadata = NULL;
-    char *value = NULL;
-
-    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-
-    ret = mc_client_get_server_metadata(g_mc_client, g_mc_server_name, &metadata);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-
-    ret = mc_client_get_metadata(NULL, MC_META_MEDIA_TITLE, &value);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
-    ret = mc_client_get_metadata(metadata, MC_META_MEDIA_TITLE-1, &value);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
-
-    ret = mc_client_get_metadata(metadata, MC_META_MEDIA_TITLE, NULL);
+    ret = mc_client_unset_metadata_updated_cb(NULL);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
-    ret = mc_client_destroy_metadata(metadata);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-
     return 0;
 }
 
 /**
- * @testcase           utc_mc_client_destroy_metadata_p
- * @since_tizen                2.4
- * @description                Positive test case of mc_client_destroy_metadata()
+ * @testcase           utc_mc_client_set_shuffle_mode_updated_cb_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_client_set_shuffle_mode_updated_cb()
  */
-int utc_mc_client_destroy_metadata_p(void)
+int utc_mc_client_set_shuffle_mode_updated_cb_p(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    mc_metadata_h metadata = NULL;
-
-    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_get_server_metadata(g_mc_client, g_mc_server_name, &metadata);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-
-    ret = mc_client_destroy_metadata(metadata);
+    ret = mc_client_set_shuffle_mode_updated_cb(g_mc_client, _mc_shuffle_mode_changed_cb, NULL);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     return 0;
 }
 
+
 /**
- * @testcase           utc_mc_client_destroy_metadata_n
- * @since_tizen                2.4
- * @description                Negative test case of mc_client_destroy_metadata()
+ * @testcase           utc_mc_client_set_shuffle_mode_updated_cb_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_client_set_shuffle_mode_updated_cb()
  */
-int utc_mc_client_destroy_metadata_n(void)
+int utc_mc_client_set_shuffle_mode_updated_cb_n(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
 
-    ret = mc_client_destroy_metadata(NULL);
+    ret = mc_client_set_shuffle_mode_updated_cb(NULL, _mc_shuffle_mode_changed_cb, NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    ret = mc_client_set_shuffle_mode_updated_cb(g_mc_client, NULL, NULL);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
     return 0;
 }
 
 /**
- * @testcase           utc_mc_client_get_latest_server_info_p
- * @since_tizen                2.4
- * @description                Positive test case of mc_client_get_latest_server_info()
+ * @testcase           utc_mc_client_unset_shuffle_mode_updated_cb_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_client_unset_shuffle_mode_updated_cb()
  */
-int utc_mc_client_get_latest_server_info_p(void)
+int utc_mc_client_unset_shuffle_mode_updated_cb_p(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
 
-    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+    ret = mc_client_unset_shuffle_mode_updated_cb(g_mc_client);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-    assert_neq(g_mc_server_name, NULL);
-    assert_eq(g_mc_server_state, MC_SERVER_STATE_ACTIVATE);
 
     return 0;
 }
 
+
 /**
- * @testcase           utc_mc_client_get_latest_server_info_n
- * @since_tizen                2.4
- * @description                Negative test case of mc_client_get_latest_server_info()
+ * @testcase           utc_mc_client_unset_shuffle_mode_updated_cb_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_client_unset_shuffle_mode_updated_cb()
  */
-int utc_mc_client_get_latest_server_info_n(void)
+int utc_mc_client_unset_shuffle_mode_updated_cb_n(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
 
-    ret = mc_client_get_latest_server_info(NULL, &g_mc_server_name, &g_mc_server_state);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
-
-    ret = mc_client_get_latest_server_info(g_mc_client, NULL, &g_mc_server_state);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
-
-    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, NULL);
+    ret = mc_client_unset_shuffle_mode_updated_cb(NULL);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
     return 0;
 }
 
 /**
- * @testcase           utc_mc_client_get_server_playback_info_p
- * @since_tizen                2.4
- * @description                Positive test case of mc_client_get_server_playback_info()
+ * @testcase           utc_mc_client_set_repeat_mode_updated_cb_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_client_set_repeat_mode_updated_cb()
  */
-int utc_mc_client_get_server_playback_info_p(void)
+int utc_mc_client_set_repeat_mode_updated_cb_p(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    mc_playback_h playback_info = NULL;
 
-    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-
-    ret = mc_client_get_server_playback_info(g_mc_client, g_mc_server_name, &playback_info);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-
-    ret = mc_client_destroy_playback(playback_info);
+    ret = mc_client_set_repeat_mode_updated_cb(g_mc_client, _mc_repeat_mode_changed_cb, NULL);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     return 0;
 }
 
+
 /**
- * @testcase           utc_mc_client_get_server_playback_info_n
- * @since_tizen                2.4
- * @description                Negative test case of mc_client_get_server_playback_info()
+ * @testcase           utc_mc_client_set_repeat_mode_updated_cb_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_client_set_repeat_mode_updated_cb()
  */
-int utc_mc_client_get_server_playback_info_n(void)
+int utc_mc_client_set_repeat_mode_updated_cb_n(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    mc_playback_h playback_info = NULL;
-
-    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-
-    ret = mc_client_get_server_playback_info(NULL, g_mc_server_name, &playback_info);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
-    ret = mc_client_get_server_playback_info(g_mc_client, NULL, &playback_info);
+    ret = mc_client_set_repeat_mode_updated_cb(NULL, _mc_repeat_mode_changed_cb, NULL);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
-    ret = mc_client_get_server_playback_info(g_mc_client, g_mc_server_name, NULL);
+    ret = mc_client_set_repeat_mode_updated_cb(g_mc_client, NULL, NULL);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
     return 0;
 }
 
 /**
- * @testcase           utc_mc_client_get_server_metadata_p
- * @since_tizen                2.4
- * @description                Positive test case of mc_client_get_server_metadata()
+ * @testcase           utc_mc_client_unset_repeat_mode_updated_cb_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_client_unset_repeat_mode_updated_cb()
  */
-int utc_mc_client_get_server_metadata_p(void)
+int utc_mc_client_unset_repeat_mode_updated_cb_p(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    mc_metadata_h metadata = NULL;
-
-    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-
-    ret = mc_client_get_server_metadata(g_mc_client, g_mc_server_name, &metadata);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_destroy_metadata(metadata);
+    ret = mc_client_unset_repeat_mode_updated_cb(g_mc_client);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     return 0;
 }
 
+
 /**
- * @testcase           utc_mc_client_get_server_metadata_n
- * @since_tizen                2.4
- * @description                Negative test case of mc_client_get_server_metadata()
+ * @testcase           utc_mc_client_unset_repeat_mode_updated_cb_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_client_unset_repeat_mode_updated_cb()
  */
-int utc_mc_client_get_server_metadata_n(void)
+int utc_mc_client_unset_repeat_mode_updated_cb_n(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    mc_metadata_h metadata = NULL;
-
-    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-
-    ret = mc_client_get_server_metadata(NULL, g_mc_server_name, &metadata);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
-    ret = mc_client_get_server_metadata(g_mc_client, NULL, &metadata);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
-
-    ret = mc_client_get_server_metadata(g_mc_client, g_mc_server_name, NULL);
+    ret = mc_client_unset_repeat_mode_updated_cb(NULL);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
     return 0;
 }
 
 /**
- * @testcase           utc_mc_client_get_server_shuffle_mode_p
- * @since_tizen                2.4
- * @description                Positive test case of mc_client_get_server_shuffle_mode()
+ * @testcase           utc_mc_client_set_playlist_updated_cb_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_client_set_playlist_updated_cb()
  */
-int utc_mc_client_get_server_shuffle_mode_p(void)
+int utc_mc_client_set_playlist_updated_cb_p(void)
 {
-    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
-
-    int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    mc_shuffle_mode_e shuffle_mode = MC_SHUFFLE_MODE_ON;
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
 
-    ret = mc_client_get_server_shuffle_mode(g_mc_client, g_mc_server_name, &shuffle_mode);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-    assert_eq(shuffle_mode, MC_SHUFFLE_MODE_ON);
+       ret = mc_client_set_playlist_updated_cb(g_mc_client, _mc_playlist_updated_cb, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    return 0;
+       return 0;
 }
 
 /**
- * @testcase           utc_mc_client_get_server_shuffle_mode_n
- * @since_tizen                2.4
- * @description                Negative test case of mc_client_get_server_shuffle_mode()
+ * @testcase           utc_mc_client_set_playlist_updated_cb_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_client_set_playlist_updated_cb()
  */
-int utc_mc_client_get_server_shuffle_mode_n(void)
+int utc_mc_client_set_playlist_updated_cb_n(void)
 {
-    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    mc_shuffle_mode_e shuffle_mode = MC_SHUFFLE_MODE_ON;
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
 
-    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_client_set_playlist_updated_cb(g_mc_client, NULL, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
-    ret = mc_client_get_server_shuffle_mode(NULL, g_mc_server_name, &shuffle_mode);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+       return 0;
+}
 
-    ret = mc_client_get_server_shuffle_mode(g_mc_client, NULL, &shuffle_mode);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+/**
+ * @testcase           utc_mc_client_unset_playlist_updated_cb_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_client_unset_playlist_updated_cb()
+ */
+int utc_mc_client_unset_playlist_updated_cb_p(void)
+{
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_get_server_shuffle_mode(g_mc_client, g_mc_server_name, NULL);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
 
-    return 0;
+       ret = mc_client_unset_playlist_updated_cb(g_mc_client);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       return 0;
 }
 
 /**
- * @testcase           utc_mc_client_get_server_repeat_mode_p
+ * @testcase           utc_mc_client_unset_playlist_updated_cb_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_client_unset_playlist_updated_cb()
+ */
+int utc_mc_client_unset_playlist_updated_cb_n(void)
+{
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+
+       ret = mc_client_unset_playlist_updated_cb(NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_set_cmd_reply_received_cb_p
  * @since_tizen                2.4
- * @description                Positive test case of mc_client_get_server_repeat_mode()
+ * @description                Positive test case of mc_client_set_cmd_reply_received_cb()
  */
-int utc_mc_client_get_server_repeat_mode_p(void)
+int utc_mc_client_set_cmd_reply_received_cb_p(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    mc_repeat_mode_e repeat_mode = MC_REPEAT_MODE_ON;
 
     ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_get_server_repeat_mode(g_mc_client, g_mc_server_name, &repeat_mode);
+    ret = mc_client_set_cmd_reply_received_cb(g_mc_client, _mc_cmd_reply_received_cb, &g_mc_user_data);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-    assert_eq(repeat_mode, MC_REPEAT_MODE_ON);
+
+    ret = mc_server_set_custom_cmd_received_cb(g_mc_server, _mc_server_custom_cmd_received_cb, &g_mc_user_data);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_send_custom_cmd(g_mc_client, g_mc_server_name, "test", NULL, &g_request_id);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       wait_for_async();
+
+       assert_eq(g_mc_user_data.result, TRUE);
+       assert_eq(strcmp(g_mc_user_data.name, g_mc_test_appname), 0);
+       assert_eq(strcmp(g_mc_user_data.request_id, g_request_id), 0);
+
+    ret = mc_server_send_cmd_reply(g_mc_server, g_mc_user_data.name, g_mc_user_data.request_id, 0, NULL);
+       free(g_mc_user_data.name);
+       free(g_mc_user_data.request_id);
+       memset(&g_mc_user_data, 0, sizeof(g_mc_user_data));
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       wait_for_async();
+
+       assert_eq(g_mc_user_data.result, TRUE);
+       assert_eq(strcmp(g_mc_user_data.name, g_mc_test_appname), 0);
+       assert_eq(strcmp(g_mc_user_data.request_id, g_request_id), 0);
 
     return 0;
 }
 
+
 /**
- * @testcase           utc_mc_client_get_server_repeat_mode_n
+ * @testcase           utc_mc_client_set_cmd_reply_received_cb_n
  * @since_tizen                2.4
- * @description                Negative test case of mc_client_get_server_repeat_mode()
+ * @description                Negative test case of mc_client_set_cmd_reply_received_cb()
  */
-int utc_mc_client_get_server_repeat_mode_n(void)
+int utc_mc_client_set_cmd_reply_received_cb_n(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    mc_repeat_mode_e repeat_mode = MC_REPEAT_MODE_ON;
-
-    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-
-    ret = mc_client_get_server_repeat_mode(NULL, g_mc_server_name, &repeat_mode);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
-    ret = mc_client_get_server_repeat_mode(g_mc_client, NULL, &repeat_mode);
+    ret = mc_client_set_cmd_reply_received_cb(NULL, _mc_cmd_reply_received_cb, NULL);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
-    ret = mc_client_get_server_repeat_mode(g_mc_client, g_mc_server_name, NULL);
+    ret = mc_client_set_cmd_reply_received_cb(g_mc_client, NULL, NULL);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
     return 0;
 }
 
 /**
- * @testcase           utc_mc_client_foreach_server_p
+ * @testcase           utc_mc_client_unset_cmd_reply_received_cb_p
  * @since_tizen                2.4
- * @description                Positive test case of mc_client_foreach_server()
+ * @description                Positive test case of mc_client_unset_cmd_reply_received_cb()
  */
-int utc_mc_client_foreach_server_p(void)
+int utc_mc_client_unset_cmd_reply_received_cb_p(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
-       result_of_activated_cb = FALSE;
 
-    ret = mc_client_foreach_server(g_mc_client, _mc_activated_server_cb, NULL);
+    ret = mc_client_set_cmd_reply_received_cb(g_mc_client, _mc_cmd_reply_received_cb, NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_unset_cmd_reply_received_cb(g_mc_client);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-       assert_eq(result_of_activated_cb, TRUE);
 
     return 0;
 }
 
+
 /**
- * @testcase           utc_mc_client_foreach_server_n
+ * @testcase           utc_mc_client_unset_cmd_reply_received_cb_n
  * @since_tizen                2.4
- * @description                Negative test case of mc_client_foreach_server()
+ * @description                Negative test case of mc_client_unset_cmd_reply_received_cb()
  */
-int utc_mc_client_foreach_server_n(void)
+int utc_mc_client_unset_cmd_reply_received_cb_n(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
 
-    ret = mc_client_foreach_server(NULL, _mc_activated_server_cb, NULL);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
-
-    ret = mc_client_foreach_server(g_mc_client, NULL, NULL);
+    ret = mc_client_unset_cmd_reply_received_cb(NULL);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
     return 0;
 }
 
 /**
- * @testcase           utc_mc_client_send_playback_state_command_p
+ * @testcase           utc_mc_client_get_playback_state_p
  * @since_tizen                2.4
- * @description                Positive test case of mc_client_send_playback_state_command()
+ * @description                Positive test case of mc_client_get_playback_state()
  */
-int utc_mc_client_send_playback_state_command_p(void)
+int utc_mc_client_get_playback_state_p(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    mc_playback_states_e playback_state = MC_PLAYBACK_STATE_STOPPED;
+    mc_playback_h playback_info = NULL;
+    mc_playback_states_e playback_state = MC_PLAYBACK_STATE_NONE;
 
-    ret = mc_server_set_playback_state_command_received_cb(g_mc_server, _mc_server_playback_state_command_received_cb, NULL);
+    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+    ret = mc_client_get_server_playback_info(g_mc_client, g_mc_server_name, &playback_info);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_send_playback_state_command(g_mc_client, g_mc_server_name, playback_state);
+    ret = mc_client_get_playback_state(playback_info, &playback_state);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+    assert_eq(playback_state, MC_PLAYBACK_STATE_PLAYING);
+
+    ret = mc_client_destroy_playback(playback_info);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-       wait_for_async();
 
     return 0;
 }
 
+
 /**
- * @testcase           utc_mc_client_send_playback_state_command_n
+ * @testcase           utc_mc_client_get_playback_state_n
  * @since_tizen                2.4
- * @description                Negative test case of mc_client_send_playback_state_command()
+ * @description                Negative test case of mc_client_get_playback_state()
  */
-int utc_mc_client_send_playback_state_command_n(void)
+int utc_mc_client_get_playback_state_n(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    mc_playback_states_e playback_state = MC_PLAYBACK_STATE_STOPPED;
+    mc_playback_h playback_info = NULL;
+    mc_playback_states_e playback_state = MC_PLAYBACK_STATE_NONE;
 
     ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_send_playback_state_command(NULL, g_mc_server_name, playback_state);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+    ret = mc_client_get_server_playback_info(g_mc_client, g_mc_server_name, &playback_info);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_send_playback_state_command(g_mc_client, NULL, playback_state);
+    ret = mc_client_get_playback_state(NULL, &playback_state);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
-    ret = mc_client_send_playback_state_command(g_mc_client, g_mc_server_name, MC_PLAYBACK_STATE_NONE-1);
+    ret = mc_client_get_playback_state(playback_info, NULL);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
+    ret = mc_client_destroy_playback(playback_info);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
     return 0;
 }
 
 /**
- * @testcase           utc_mc_client_send_playback_action_cmd_p
- * @since_tizen                4.0
- * @description                Positive test case of mc_client_send_playback_action_cmd()
+ * @testcase           utc_mc_client_get_playback_position_p
+ * @since_tizen                2.4
+ * @description                Positive test case of mc_client_get_playback_position()
  */
-int utc_mc_client_send_playback_action_cmd_p(void)
+int utc_mc_client_get_playback_position_p(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    mc_playback_action_e playback_action = MC_PLAYBACK_ACTION_STOP;
+    mc_playback_h playback_info = NULL;
+    unsigned long long playback_position = 0;
 
-    ret = mc_server_set_playback_action_cmd_received_cb(g_mc_server, _mc_server_playback_action_cmd_received_cb, NULL);
+    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+    ret = mc_client_get_server_playback_info(g_mc_client, g_mc_server_name, &playback_info);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_send_playback_action_cmd(g_mc_client, g_mc_server_name, playback_action, &g_request_id);
+    ret = mc_client_get_playback_position(playback_info, &playback_position);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+    assert_eq(playback_position, 10000);
+
+    ret = mc_client_destroy_playback(playback_info);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-    wait_for_async();
 
     return 0;
 }
 
+
 /**
- * @testcase           utc_mc_client_send_playback_action_cmd_n
- * @since_tizen                4.0
- * @description                Negative test case of mc_client_send_playback_action_cmd()
+ * @testcase           utc_mc_client_get_playback_position_n
+ * @since_tizen                2.4
+ * @description                Negative test case of mc_client_get_playback_position()
  */
-int utc_mc_client_send_playback_action_cmd_n(void)
+int utc_mc_client_get_playback_position_n(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    mc_playback_action_e playback_action = MC_PLAYBACK_ACTION_STOP;
+    mc_playback_h playback_info = NULL;
+    unsigned long long playback_position = 0;
 
     ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_send_playback_action_cmd(NULL, g_mc_server_name, playback_action, &g_request_id);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+    ret = mc_client_get_server_playback_info(g_mc_client, g_mc_server_name, &playback_info);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_send_playback_action_cmd(g_mc_client, NULL, playback_action, &g_request_id);
+    ret = mc_client_get_playback_position(NULL, &playback_position);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
-    ret = mc_client_send_playback_action_cmd(g_mc_client, g_mc_server_name, MC_PLAYBACK_ACTION_PLAY-1, &g_request_id);
+    ret = mc_client_get_playback_position(playback_info, NULL);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
+    ret = mc_client_destroy_playback(playback_info);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
     return 0;
 }
 
 /**
- * @testcase           utc_mc_client_send_playback_position_cmd_p
+ * @testcase           utc_mc_client_get_playlist_item_index_p
  * @since_tizen                4.0
- * @description                Positive test case of mc_client_send_playback_position_cmd()
+ * @description                Positive test case of mc_client_get_playlist_item_index()
  */
-int utc_mc_client_send_playback_position_cmd_p(void)
+int utc_mc_client_get_playlist_item_index_p(void)
 {
-    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       mc_playback_h playback_info = NULL;
+       char * index = 0;
 
-    ret = mc_server_set_playback_position_cmd_received_cb(g_mc_server, _mc_server_playback_position_cmd_received_cb, NULL);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_client_get_server_playback_info(g_mc_client, g_mc_server_name, &playback_info);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_send_playback_position_cmd(g_mc_client, g_mc_server_name, 9999, &g_request_id);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-       wait_for_async();
+       ret = mc_client_get_playlist_item_index(playback_info, &index);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       assert_eq(strcmp(index, "3"), 0);
 
-    return 0;
+       if (index != NULL)
+               free(index);
+
+       ret = mc_client_destroy_playback(playback_info);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       return 0;
 }
 
 /**
- * @testcase           utc_mc_client_send_playback_position_cmd_n
+ * @testcase           utc_mc_client_get_playlist_item_index_n
  * @since_tizen                4.0
- * @description                Negative test case of mc_client_send_playback_position_cmd()
+ * @description                Negative test case of mc_client_get_playlist_item_index()
  */
-int utc_mc_client_send_playback_position_cmd_n(void)
+int utc_mc_client_get_playlist_item_index_n(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
+    mc_playback_h playback_info = NULL;
+    char * index = 0;
 
     ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_send_playback_position_cmd(NULL, g_mc_server_name, 9999, &g_request_id);
+    ret = mc_client_get_server_playback_info(g_mc_client, g_mc_server_name, &playback_info);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_get_playlist_item_index(NULL, &index);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
-    ret = mc_client_send_playback_position_cmd(g_mc_client, NULL, 9999, &g_request_id);
+    ret = mc_client_get_playlist_item_index(playback_info, NULL);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
+    ret = mc_client_destroy_playback(playback_info);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
     return 0;
 }
 
 /**
- * @testcase           utc_mc_client_send_shuffle_mode_cmd_p
- * @since_tizen                4.0
- * @description                Positive test case of mc_client_send_shuffle_mode_cmd()
+ * @testcase           utc_mc_client_destroy_playback_p
+ * @since_tizen                2.4
+ * @description                Positive test case of mc_client_destroy_playback()
  */
-int utc_mc_client_send_shuffle_mode_cmd_p(void)
+int utc_mc_client_destroy_playback_p(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    mc_shuffle_mode_e shuffle_mode = MC_SHUFFLE_MODE_ON;
+    mc_playback_h playback_info = NULL;
 
-    ret = mc_server_set_shuffle_mode_cmd_received_cb(g_mc_server, _mc_server_shuffle_mode_cmd_received_cb, NULL);
+    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+    ret = mc_client_get_server_playback_info(g_mc_client, g_mc_server_name, &playback_info);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_send_shuffle_mode_cmd(g_mc_client, g_mc_server_name, shuffle_mode, &g_request_id);
+    ret = mc_client_destroy_playback(playback_info);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-       wait_for_async();
 
     return 0;
 }
 
 /**
- * @testcase           utc_mc_client_send_shuffle_mode_cmd_n
- * @since_tizen                4.0
- * @description                Negative test case of mc_client_send_shuffle_mode_cmd()
+ * @testcase           utc_mc_client_destroy_playback_n
+ * @since_tizen                2.4
+ * @description                Negative test case of mc_client_destroy_playback()
  */
-int utc_mc_client_send_shuffle_mode_cmd_n(void)
+int utc_mc_client_destroy_playback_n(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    mc_shuffle_mode_e shuffle_mode = MC_SHUFFLE_MODE_ON;
+
+    ret = mc_client_destroy_playback(NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_get_metadata_p
+ * @since_tizen                2.4
+ * @description                Positive test case of mc_client_get_metadata()
+ */
+int utc_mc_client_get_metadata_p(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+    mc_metadata_h metadata = NULL;
+    char *value[MC_META_MEDIA_PICTURE+1] = {NULL, };
+    int i = 0;
 
     ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_send_shuffle_mode_cmd(NULL, g_mc_server_name, shuffle_mode, &g_request_id);
+    ret = mc_client_get_server_metadata(g_mc_client, g_mc_server_name, &metadata);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    for (i = 0; i < MC_META_MEDIA_PICTURE+1;i++) {
+        ret = mc_client_get_metadata(metadata, i, &value[i]);
+        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+        assert_neq(value[i], NULL);
+               assert_eq(strcmp(value[i], g_mc_test_metadata[i]), 0);
+        if (value[i]) free(value[i]);
+    }
+
+    ret = mc_client_destroy_metadata(metadata);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_get_metadata_n
+ * @since_tizen                2.4
+ * @description                Negative test case of mc_client_get_metadata()
+ */
+int utc_mc_client_get_metadata_n(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+    mc_metadata_h metadata = NULL;
+    char *value = NULL;
+
+    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_get_server_metadata(g_mc_client, g_mc_server_name, &metadata);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_get_metadata(NULL, MC_META_MEDIA_TITLE, &value);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
-    ret = mc_client_send_shuffle_mode_cmd(g_mc_client, NULL, shuffle_mode, &g_request_id);
+    ret = mc_client_get_metadata(metadata, MC_META_MEDIA_TITLE-1, &value);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
-    ret = mc_client_send_shuffle_mode_cmd(g_mc_client, g_mc_server_name, -1, &g_request_id);
+    ret = mc_client_get_metadata(metadata, MC_META_MEDIA_TITLE, NULL);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
+    ret = mc_client_destroy_metadata(metadata);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
     return 0;
 }
 
 /**
- * @testcase           utc_mc_client_send_repeat_mode_cmd_p
- * @since_tizen                4.0
- * @description                Positive test case of mc_client_send_repeat_mode_command_cmd()
+ * @testcase           utc_mc_client_destroy_metadata_p
+ * @since_tizen                2.4
+ * @description                Positive test case of mc_client_destroy_metadata()
  */
-int utc_mc_client_send_repeat_mode_cmd_p(void)
+int utc_mc_client_destroy_metadata_p(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    mc_repeat_mode_e repeat_mode = MC_REPEAT_MODE_ON;
+    mc_metadata_h metadata = NULL;
 
-    ret = mc_server_set_repeat_mode_cmd_received_cb(g_mc_server, _mc_server_repeat_mode_cmd_received_cb, NULL);
+    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_get_server_metadata(g_mc_client, g_mc_server_name, &metadata);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_destroy_metadata(metadata);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_destroy_metadata_n
+ * @since_tizen                2.4
+ * @description                Negative test case of mc_client_destroy_metadata()
+ */
+int utc_mc_client_destroy_metadata_n(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+
+    ret = mc_client_destroy_metadata(NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_get_latest_server_info_p
+ * @since_tizen                2.4
+ * @description                Positive test case of mc_client_get_latest_server_info()
+ */
+int utc_mc_client_get_latest_server_info_p(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+
     ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+    assert_neq(g_mc_server_name, NULL);
+    assert_eq(g_mc_server_state, MC_SERVER_STATE_ACTIVATE);
 
-    ret = mc_client_send_repeat_mode_cmd(g_mc_client, g_mc_server_name, repeat_mode, &g_request_id);
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_get_latest_server_info_n
+ * @since_tizen                2.4
+ * @description                Negative test case of mc_client_get_latest_server_info()
+ */
+int utc_mc_client_get_latest_server_info_n(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+
+    ret = mc_client_get_latest_server_info(NULL, &g_mc_server_name, &g_mc_server_state);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    ret = mc_client_get_latest_server_info(g_mc_client, NULL, &g_mc_server_state);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_get_server_playback_info_p
+ * @since_tizen                2.4
+ * @description                Positive test case of mc_client_get_server_playback_info()
+ */
+int utc_mc_client_get_server_playback_info_p(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+    mc_playback_h playback_info = NULL;
+
+    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_get_server_playback_info(g_mc_client, g_mc_server_name, &playback_info);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_destroy_playback(playback_info);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-       wait_for_async();
 
     return 0;
 }
 
 /**
- * @testcase           utc_mc_client_send_repeat_mode_cmd_n
- * @since_tizen                4.0
- * @description                Negative test case of mc_client_send_repeat_mode_cmd()
+ * @testcase           utc_mc_client_get_server_playback_info_n
+ * @since_tizen                2.4
+ * @description                Negative test case of mc_client_get_server_playback_info()
  */
-int utc_mc_client_send_repeat_mode_cmd_n(void)
+int utc_mc_client_get_server_playback_info_n(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    mc_repeat_mode_e repeat_mode = MC_REPEAT_MODE_ON;
+    mc_playback_h playback_info = NULL;
 
     ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_send_repeat_mode_cmd(NULL, g_mc_server_name, repeat_mode, &g_request_id);
+    ret = mc_client_get_server_playback_info(NULL, g_mc_server_name, &playback_info);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
-    ret = mc_client_send_repeat_mode_cmd(g_mc_client, NULL, repeat_mode, &g_request_id);
+    ret = mc_client_get_server_playback_info(g_mc_client, NULL, &playback_info);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
-    ret = mc_client_send_repeat_mode_cmd(g_mc_client, g_mc_server_name, -1, &g_request_id);
+    ret = mc_client_get_server_playback_info(g_mc_client, g_mc_server_name, NULL);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
     return 0;
 }
 
 /**
- * @testcase           utc_mc_client_send_custom_command_p1
+ * @testcase           utc_mc_client_get_server_metadata_p
  * @since_tizen                2.4
- * @description                Positive test case of mc_client_send_custom_command()
+ * @description                Positive test case of mc_client_get_server_metadata()
  */
-int utc_mc_client_send_custom_command_p1(void)
+int utc_mc_client_get_server_metadata_p(void)
 {
     assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
     int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    char *command = "test";
+    mc_metadata_h metadata = NULL;
 
-    ret = mc_server_set_custom_command_received_cb(g_mc_server, _mc_server_custom_command_received_cb, NULL);
+    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_get_server_metadata(g_mc_client, g_mc_server_name, &metadata);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_destroy_metadata(metadata);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_get_server_metadata_n
+ * @since_tizen                2.4
+ * @description                Negative test case of mc_client_get_server_metadata()
+ */
+int utc_mc_client_get_server_metadata_n(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+    mc_metadata_h metadata = NULL;
+
     ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_send_custom_command(g_mc_client, g_mc_server_name, command, NULL, _mc_command_reply_received_cb, NULL);
+    ret = mc_client_get_server_metadata(NULL, g_mc_server_name, &metadata);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    ret = mc_client_get_server_metadata(g_mc_client, NULL, &metadata);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    ret = mc_client_get_server_metadata(g_mc_client, g_mc_server_name, NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_get_server_shuffle_mode_p
+ * @since_tizen                2.4
+ * @description                Positive test case of mc_client_get_server_shuffle_mode()
+ */
+int utc_mc_client_get_server_shuffle_mode_p(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+    mc_shuffle_mode_e shuffle_mode = MC_SHUFFLE_MODE_ON;
+
+    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
     assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-       wait_for_async();
+
+    ret = mc_client_get_server_shuffle_mode(g_mc_client, g_mc_server_name, &shuffle_mode);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+    assert_eq(shuffle_mode, MC_SHUFFLE_MODE_ON);
 
     return 0;
 }
 
 /**
- * @testcase           utc_mc_client_send_custom_command_p2
+ * @testcase           utc_mc_client_get_server_shuffle_mode_n
+ * @since_tizen                2.4
+ * @description                Negative test case of mc_client_get_server_shuffle_mode()
+ */
+int utc_mc_client_get_server_shuffle_mode_n(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+    mc_shuffle_mode_e shuffle_mode = MC_SHUFFLE_MODE_ON;
+
+    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_get_server_shuffle_mode(NULL, g_mc_server_name, &shuffle_mode);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    ret = mc_client_get_server_shuffle_mode(g_mc_client, NULL, &shuffle_mode);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    ret = mc_client_get_server_shuffle_mode(g_mc_client, g_mc_server_name, NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_get_server_repeat_mode_p
+ * @since_tizen                2.4
+ * @description                Positive test case of mc_client_get_server_repeat_mode()
+ */
+int utc_mc_client_get_server_repeat_mode_p(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+    mc_repeat_mode_e repeat_mode = MC_REPEAT_MODE_ON;
+
+    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_get_server_repeat_mode(g_mc_client, g_mc_server_name, &repeat_mode);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+    assert_eq(repeat_mode, MC_REPEAT_MODE_ON);
+
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_get_server_repeat_mode_n
+ * @since_tizen                2.4
+ * @description                Negative test case of mc_client_get_server_repeat_mode()
+ */
+int utc_mc_client_get_server_repeat_mode_n(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+    mc_repeat_mode_e repeat_mode = MC_REPEAT_MODE_ON;
+
+    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_get_server_repeat_mode(NULL, g_mc_server_name, &repeat_mode);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    ret = mc_client_get_server_repeat_mode(g_mc_client, NULL, &repeat_mode);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    ret = mc_client_get_server_repeat_mode(g_mc_client, g_mc_server_name, NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_foreach_server_p
+ * @since_tizen                2.4
+ * @description                Positive test case of mc_client_foreach_server()
+ */
+int utc_mc_client_foreach_server_p(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       result_of_activated_cb = FALSE;
+
+    ret = mc_client_foreach_server(g_mc_client, _mc_activated_server_cb, NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       assert_eq(result_of_activated_cb, TRUE);
+
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_foreach_server_n
+ * @since_tizen                2.4
+ * @description                Negative test case of mc_client_foreach_server()
+ */
+int utc_mc_client_foreach_server_n(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+
+    ret = mc_client_foreach_server(NULL, _mc_activated_server_cb, NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    ret = mc_client_foreach_server(g_mc_client, NULL, NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_send_playback_state_command_p
+ * @since_tizen                2.4
+ * @description                Positive test case of mc_client_send_playback_state_command()
+ */
+int utc_mc_client_send_playback_state_command_p(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+    mc_playback_states_e playback_state = MC_PLAYBACK_STATE_STOPPED;
+
+    ret = mc_server_set_playback_state_command_received_cb(g_mc_server, _mc_server_playback_state_command_received_cb, NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_send_playback_state_command(g_mc_client, g_mc_server_name, playback_state);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       wait_for_async();
+
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_send_playback_state_command_n
+ * @since_tizen                2.4
+ * @description                Negative test case of mc_client_send_playback_state_command()
+ */
+int utc_mc_client_send_playback_state_command_n(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+    mc_playback_states_e playback_state = MC_PLAYBACK_STATE_STOPPED;
+
+    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_send_playback_state_command(NULL, g_mc_server_name, playback_state);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    ret = mc_client_send_playback_state_command(g_mc_client, NULL, playback_state);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    ret = mc_client_send_playback_state_command(g_mc_client, g_mc_server_name, MC_PLAYBACK_STATE_NONE-1);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_send_playback_action_cmd_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_client_send_playback_action_cmd()
+ */
+int utc_mc_client_send_playback_action_cmd_p(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+    mc_playback_action_e playback_action = MC_PLAYBACK_ACTION_STOP;
+
+    ret = mc_server_set_playback_action_cmd_received_cb(g_mc_server, _mc_server_playback_action_cmd_received_cb, NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_send_playback_action_cmd(g_mc_client, g_mc_server_name, playback_action, &g_request_id);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+    wait_for_async();
+
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_send_playback_action_cmd_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_client_send_playback_action_cmd()
+ */
+int utc_mc_client_send_playback_action_cmd_n(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+    mc_playback_action_e playback_action = MC_PLAYBACK_ACTION_STOP;
+
+    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_send_playback_action_cmd(NULL, g_mc_server_name, playback_action, &g_request_id);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    ret = mc_client_send_playback_action_cmd(g_mc_client, NULL, playback_action, &g_request_id);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    ret = mc_client_send_playback_action_cmd(g_mc_client, g_mc_server_name, MC_PLAYBACK_ACTION_PLAY-1, &g_request_id);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_send_playback_position_cmd_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_client_send_playback_position_cmd()
+ */
+int utc_mc_client_send_playback_position_cmd_p(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+
+    ret = mc_server_set_playback_position_cmd_received_cb(g_mc_server, _mc_server_playback_position_cmd_received_cb, NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_send_playback_position_cmd(g_mc_client, g_mc_server_name, 9999, &g_request_id);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       wait_for_async();
+
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_send_playback_position_cmd_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_client_send_playback_position_cmd()
+ */
+int utc_mc_client_send_playback_position_cmd_n(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+
+    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_send_playback_position_cmd(NULL, g_mc_server_name, 9999, &g_request_id);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    ret = mc_client_send_playback_position_cmd(g_mc_client, NULL, 9999, &g_request_id);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_send_shuffle_mode_cmd_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_client_send_shuffle_mode_cmd()
+ */
+int utc_mc_client_send_shuffle_mode_cmd_p(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+    mc_shuffle_mode_e shuffle_mode = MC_SHUFFLE_MODE_ON;
+
+    ret = mc_server_set_shuffle_mode_cmd_received_cb(g_mc_server, _mc_server_shuffle_mode_cmd_received_cb, NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_send_shuffle_mode_cmd(g_mc_client, g_mc_server_name, shuffle_mode, &g_request_id);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       wait_for_async();
+
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_send_shuffle_mode_cmd_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_client_send_shuffle_mode_cmd()
+ */
+int utc_mc_client_send_shuffle_mode_cmd_n(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+    mc_shuffle_mode_e shuffle_mode = MC_SHUFFLE_MODE_ON;
+
+    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_send_shuffle_mode_cmd(NULL, g_mc_server_name, shuffle_mode, &g_request_id);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    ret = mc_client_send_shuffle_mode_cmd(g_mc_client, NULL, shuffle_mode, &g_request_id);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    ret = mc_client_send_shuffle_mode_cmd(g_mc_client, g_mc_server_name, -1, &g_request_id);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_send_repeat_mode_cmd_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_client_send_repeat_mode_command_cmd()
+ */
+int utc_mc_client_send_repeat_mode_cmd_p(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+    mc_repeat_mode_e repeat_mode = MC_REPEAT_MODE_ON;
+
+    ret = mc_server_set_repeat_mode_cmd_received_cb(g_mc_server, _mc_server_repeat_mode_cmd_received_cb, NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_send_repeat_mode_cmd(g_mc_client, g_mc_server_name, repeat_mode, &g_request_id);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       wait_for_async();
+
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_send_repeat_mode_cmd_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_client_send_repeat_mode_cmd()
+ */
+int utc_mc_client_send_repeat_mode_cmd_n(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+    mc_repeat_mode_e repeat_mode = MC_REPEAT_MODE_ON;
+
+    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_send_repeat_mode_cmd(NULL, g_mc_server_name, repeat_mode, &g_request_id);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    ret = mc_client_send_repeat_mode_cmd(g_mc_client, NULL, repeat_mode, &g_request_id);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    ret = mc_client_send_repeat_mode_cmd(g_mc_client, g_mc_server_name, -1, &g_request_id);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_send_custom_command_p1
+ * @since_tizen                2.4
+ * @description                Positive test case of mc_client_send_custom_command()
+ */
+int utc_mc_client_send_custom_command_p1(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+    char *command = "test";
+
+    ret = mc_server_set_custom_command_received_cb(g_mc_server, _mc_server_custom_command_received_cb, NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_send_custom_command(g_mc_client, g_mc_server_name, command, NULL, _mc_command_reply_received_cb, NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       wait_for_async();
+
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_send_custom_command_p2
+ * @since_tizen                2.4
+ * @description                Positive test case of mc_client_send_custom_command()
+ */
+int utc_mc_client_send_custom_command_p2(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+    char *command = "test";
+
+    ret = mc_server_set_custom_command_received_cb(g_mc_server, _mc_server_custom_command_received_cb, NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    g_mc_bundle = bundle_create();
+    bundle_add_str(g_mc_bundle, "key1", "val1");
+
+    ret = mc_client_send_custom_command(g_mc_client, g_mc_server_name, command, g_mc_bundle, _mc_command_reply_received_cb, NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       wait_for_async();
+
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_send_custom_command_n
+ * @since_tizen                2.4
+ * @description                Negative test case of mc_client_send_custom_command()
+ */
+int utc_mc_client_send_custom_command_n(void)
+{
+    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    int ret = MEDIA_CONTROLLER_ERROR_NONE;
+    char *command = "test";
+
+    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+    ret = mc_client_send_custom_command(NULL, g_mc_server_name, command, NULL, _mc_command_reply_received_cb, NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    ret = mc_client_send_custom_command(g_mc_client, NULL, command, NULL, _mc_command_reply_received_cb, NULL);
+    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_send_playlist_cmd_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_client_send_playlist_cmd()
+ */
+int utc_mc_client_send_playlist_cmd_p(void)
+{
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+
+       ret = mc_server_set_playlist_cmd_received_cb(g_mc_server, _mc_server_playlist_cmd_received_cb, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_send_playlist_cmd(g_mc_client, g_mc_server_name, g_playlist_name, "3", MC_PLAYBACK_ACTION_PLAY, 0, &g_request_id);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       wait_for_async();
+
+    return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_send_playlist_cmd_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_client_send_playlist_cmd()
+ */
+int utc_mc_client_send_playlist_cmd_n(void)
+{
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+
+       ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_send_playlist_cmd(NULL, g_mc_server_name, g_playlist_name, "3", MC_PLAYBACK_ACTION_PLAY, 0, &g_request_id);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+       ret = mc_client_send_playlist_cmd(g_mc_client, NULL, g_playlist_name, "3", MC_PLAYBACK_ACTION_PLAY, 0, &g_request_id);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+       ret = mc_client_send_playlist_cmd(g_mc_client, g_mc_server_name, NULL, "3", MC_PLAYBACK_ACTION_PLAY, 0, &g_request_id);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+       ret = mc_client_send_playlist_cmd(g_mc_client, g_mc_server_name, NULL, "3", MC_PLAYBACK_ACTION_PLAY - 1, 0, &g_request_id);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_send_custom_cmd_p
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_client_send_custom_cmd()
+ */
+int utc_mc_client_send_custom_cmd_p(void)
+{
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+    char *command = "test";
+
+       ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_send_custom_cmd(g_mc_client, g_mc_server_name, command, NULL, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       wait_for_async();
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_send_custom_cmd_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_client_send_custom_cmd()
+ */
+int utc_mc_client_send_custom_cmd_n(void)
+{
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+    char *command = "test";
+
+       ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_send_custom_cmd(NULL, g_mc_server_name, command, NULL, &g_request_id);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+       ret = mc_client_send_custom_cmd(g_mc_client, NULL, command, NULL, &g_request_id);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_subscribe_p
+ * @since_tizen                2.4
+ * @description                Positive test case of mc_client_subscribe()
+ */
+int utc_mc_client_subscribe_p(void)
+{
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+
+       ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_set_playback_updated_cb(g_mc_client, _mc_playback_updated_cb, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_PLAYBACK, g_mc_server_name);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_set_metadata_updated_cb(g_mc_client, _mc_metadata_updated_cb, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_METADATA, g_mc_server_name);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_set_shuffle_mode_updated_cb(g_mc_client, _mc_shuffle_mode_changed_cb, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_SHUFFLE_MODE, g_mc_server_name);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_set_repeat_mode_updated_cb(g_mc_client, _mc_repeat_mode_changed_cb, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_REPEAT_MODE, g_mc_server_name);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_set_playlist_updated_cb(g_mc_client, _mc_playlist_updated_cb, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_PLAYLIST, g_mc_server_name);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_SERVER_STATE, g_mc_server_name);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_subscribe_n
+ * @since_tizen                2.4
+ * @description                Negative test case of mc_client_subscribe()
+ */
+int utc_mc_client_subscribe_n(void)
+{
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+
+       ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_PLAYBACK, g_mc_server_name);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+       ret = mc_client_set_playback_updated_cb(g_mc_client, _mc_playback_updated_cb, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_subscribe(NULL, MC_SUBSCRIPTION_TYPE_PLAYBACK, g_mc_server_name);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_PLAYBACK, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_REPEAT_MODE + 1, g_mc_server_name);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_unsubscribe_p
+ * @since_tizen                2.4
+ * @description                Positive test case of mc_client_unsubscribe()
+ */
+int utc_mc_client_unsubscribe_p(void)
+{
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+
+       ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_set_playback_updated_cb(g_mc_client, _mc_playback_updated_cb, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_PLAYBACK, g_mc_server_name);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_unsubscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_PLAYBACK, g_mc_server_name);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_set_metadata_updated_cb(g_mc_client, _mc_metadata_updated_cb, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_METADATA, g_mc_server_name);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_unsubscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_METADATA, g_mc_server_name);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_set_shuffle_mode_updated_cb(g_mc_client, _mc_shuffle_mode_changed_cb, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_SHUFFLE_MODE, g_mc_server_name);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_unsubscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_SHUFFLE_MODE, g_mc_server_name);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_set_repeat_mode_updated_cb(g_mc_client, _mc_repeat_mode_changed_cb, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_REPEAT_MODE, g_mc_server_name);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_unsubscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_REPEAT_MODE, g_mc_server_name);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_set_playlist_updated_cb(g_mc_client, _mc_playlist_updated_cb, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_PLAYLIST, g_mc_server_name);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_unsubscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_PLAYLIST, g_mc_server_name);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_SERVER_STATE, g_mc_server_name);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_unsubscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_SERVER_STATE, g_mc_server_name);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_unsubscribe_n
+ * @since_tizen                2.4
+ * @description                Negative test case of mc_client_unsubscribe()
+ */
+int utc_mc_client_unsubscribe_n(void)
+{
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+
+       ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_set_playback_updated_cb(g_mc_client, _mc_playback_updated_cb, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_PLAYBACK, g_mc_server_name);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_unsubscribe(NULL, MC_SUBSCRIPTION_TYPE_PLAYBACK, g_mc_server_name);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+       ret = mc_client_unsubscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_PLAYBACK, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_REPEAT_MODE + 1, g_mc_server_name);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+       return 0;
+}
+
+/**
+ * @testcase           utc_mc_client_foreach_server_subscribed_p
  * @since_tizen                2.4
- * @description                Positive test case of mc_client_send_custom_command()
+ * @description                Positive test case of mc_client_foreach_server_subscribed()
  */
-int utc_mc_client_send_custom_command_p2(void)
+int utc_mc_client_foreach_server_subscribed_p(void)
 {
-    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
-
-    int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    char *command = "test";
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_server_set_custom_command_received_cb(g_mc_server, _mc_server_custom_command_received_cb, NULL);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
 
-    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    g_mc_bundle = bundle_create();
-    bundle_add_str(g_mc_bundle, "key1", "val1");
+       ret = mc_client_set_playback_updated_cb(g_mc_client, _mc_playback_updated_cb, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_send_custom_command(g_mc_client, g_mc_server_name, command, g_mc_bundle, _mc_command_reply_received_cb, NULL);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-       wait_for_async();
+       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_PLAYBACK, g_mc_server_name);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    return 0;
+       ret = mc_client_foreach_server_subscribed(g_mc_client, MC_SUBSCRIPTION_TYPE_PLAYBACK, _mc_subscribed_server_cb, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       return 0;
 }
 
 /**
- * @testcase           utc_mc_client_send_custom_command_n
+ * @testcase           utc_mc_client_foreach_server_subscribed_n
  * @since_tizen                2.4
- * @description                Negative test case of mc_client_send_custom_command()
+ * @description                Negative test case of mc_client_foreach_server_subscribed()
  */
-int utc_mc_client_send_custom_command_n(void)
+int utc_mc_client_foreach_server_subscribed_n(void)
 {
-    assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    char *command = "test";
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
 
-    ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_send_custom_command(NULL, g_mc_server_name, command, NULL, _mc_command_reply_received_cb, NULL);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+       ret = mc_client_set_playback_updated_cb(g_mc_client, _mc_playback_updated_cb, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    ret = mc_client_send_custom_command(g_mc_client, NULL, command, NULL, _mc_command_reply_received_cb, NULL);
-    assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_PLAYBACK, g_mc_server_name);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       ret = mc_client_foreach_server_subscribed(NULL, MC_SUBSCRIPTION_TYPE_PLAYBACK, _mc_subscribed_server_cb, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+       ret = mc_client_foreach_server_subscribed(g_mc_client, MC_SUBSCRIPTION_TYPE_PLAYBACK, NULL, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
     return 0;
 }
 
 /**
- * @testcase           utc_mc_client_send_playlist_cmd_p
+ * @testcase           utc_mc_client_foreach_server_playlist_p
  * @since_tizen                4.0
- * @description                Positive test case of mc_client_send_playlist_cmd()
+ * @description                Positive test case of mc_client_foreach_server_playlist()
  */
-int utc_mc_client_send_playlist_cmd_p(void)
+int utc_mc_client_foreach_server_playlist_p(void)
 {
        assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
        int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       mc_playlist_h playlist = NULL;
+       result_of_playlist_cb = FALSE;
 
-       ret = mc_server_set_playlist_cmd_received_cb(g_mc_server, _mc_server_playlist_cmd_received_cb, NULL);
+       ret = _mc_register_playlist(&playlist);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
        ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_send_playlist_cmd(g_mc_client, g_mc_server_name, g_playlist_name, "3", MC_PLAYBACK_ACTION_PLAY, 0, &g_request_id);
+       ret = mc_client_foreach_server_playlist(g_mc_client, g_mc_server_name, _mc_server_playlist_list_cb, NULL);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-       wait_for_async();
 
-    return 0;
+       assert_eq(result_of_playlist_cb, TRUE);
+
+       ret = mc_playlist_destroy(playlist);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       return 0;
 }
 
 /**
- * @testcase           utc_mc_client_send_playlist_cmd_n
+ * @testcase           utc_mc_client_foreach_server_playlist_n
  * @since_tizen                4.0
- * @description                Negative test case of mc_client_send_playlist_cmd()
+ * @description                Negative test case of mc_client_foreach_server_playlist()
  */
-int utc_mc_client_send_playlist_cmd_n(void)
+int utc_mc_client_foreach_server_playlist_n(void)
 {
        assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
@@ -3113,284 +4382,367 @@ int utc_mc_client_send_playlist_cmd_n(void)
        ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_send_playlist_cmd(NULL, g_mc_server_name, g_playlist_name, "3", MC_PLAYBACK_ACTION_PLAY, 0, &g_request_id);
-       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
-
-       ret = mc_client_send_playlist_cmd(g_mc_client, NULL, g_playlist_name, "3", MC_PLAYBACK_ACTION_PLAY, 0, &g_request_id);
-       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
-
-       ret = mc_client_send_playlist_cmd(g_mc_client, g_mc_server_name, NULL, "3", MC_PLAYBACK_ACTION_PLAY, 0, &g_request_id);
-       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
-
-       ret = mc_client_send_playlist_cmd(g_mc_client, g_mc_server_name, NULL, "3", MC_PLAYBACK_ACTION_PLAY - 1, 0, &g_request_id);
+       ret = mc_client_foreach_server_playlist(g_mc_client, g_mc_server_name, NULL, NULL);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
        return 0;
 }
 
 /**
- * @testcase           utc_mc_client_send_custom_cmd_p
+ * @testcase           utc_mc_playlist_get_name_p
  * @since_tizen                4.0
- * @description                Negative test case of mc_client_send_custom_cmd()
+ * @description                Positive test case of mc_playlist_get_name()
  */
-int utc_mc_client_send_custom_cmd_p(void)
+int utc_mc_playlist_get_name_p(void)
 {
        assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
        int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    char *command = "test";
+       mc_playlist_h playlist = NULL;
+       char *playlist_name = NULL;
+       bool check_val = FALSE;
 
-       ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+       ret = mc_server_create_playlist(g_mc_server, g_playlist_name, &playlist);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_send_custom_cmd(g_mc_client, g_mc_server_name, command, NULL, NULL);
+       ret = mc_playlist_get_name(playlist, &playlist_name);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       if (playlist_name != NULL) {
+               if (strcmp(g_playlist_name, playlist_name) == 0)
+                       check_val = TRUE;
+
+               free(playlist_name);
+       }
+
+       assert_eq(check_val, TRUE);
+
+       ret = mc_playlist_destroy(playlist);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-       wait_for_async();
 
        return 0;
 }
 
 /**
- * @testcase           utc_mc_client_send_custom_cmd_n
+ * @testcase           utc_mc_playlist_get_name_n
  * @since_tizen                4.0
- * @description                Negative test case of mc_client_send_custom_cmd()
+ * @description                Negative test case of mc_playlist_get_name()
  */
-int utc_mc_client_send_custom_cmd_n(void)
+int utc_mc_playlist_get_name_n(void)
 {
        assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
        int ret = MEDIA_CONTROLLER_ERROR_NONE;
-    char *command = "test";
+       mc_playlist_h playlist = NULL;
 
-       ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+       ret = mc_server_create_playlist(g_mc_server, g_playlist_name, &playlist);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_send_custom_cmd(NULL, g_mc_server_name, command, NULL, &g_request_id);
+       ret = mc_playlist_get_name(playlist, NULL);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
-       ret = mc_client_send_custom_cmd(g_mc_client, NULL, command, NULL, &g_request_id);
-       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+       ret = mc_playlist_destroy(playlist);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
        return 0;
 }
 
 /**
- * @testcase           utc_mc_client_subscribe_p
- * @since_tizen                2.4
- * @description                Positive test case of mc_client_subscribe()
+ * @testcase           utc_mc_playlist_foreach_item_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_playlist_foreach_item()
  */
-int utc_mc_client_subscribe_p(void)
+int utc_mc_playlist_foreach_item_p(void)
 {
        assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
        int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       mc_playlist_h playlist = NULL;
+       result_of_playlist_cb = FALSE;
 
-       ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+       ret = _mc_register_playlist(&playlist);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_set_playback_update_cb(g_mc_client, _mc_playback_updated_cb, NULL);
+       ret = mc_playlist_foreach_item(playlist, _server_playlist_item_cb, NULL);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_PLAYBACK, g_mc_server_name);
-       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       assert_eq(result_of_playlist_cb, TRUE);
 
-       ret = mc_client_set_metadata_update_cb(g_mc_client, _mc_metadata_updated_cb, NULL);
+       ret = mc_playlist_destroy(playlist);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_METADATA, g_mc_server_name);
+       return 0;
+}
+
+/**
+ * @testcase           utc_mc_playlist_foreach_item_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_playlist_foreach_item()
+ */
+int utc_mc_playlist_foreach_item_n(void)
+{
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       mc_playlist_h playlist = NULL;
+
+       ret = _mc_register_playlist(&playlist);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_set_shuffle_mode_update_cb(g_mc_client, _mc_shuffle_mode_changed_cb, NULL);
+       ret = mc_playlist_foreach_item(playlist, NULL, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+       ret = mc_playlist_destroy(playlist);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_SHUFFLE_MODE, g_mc_server_name);
+       return 0;
+}
+
+/**
+ * @testcase           utc_mc_playlist_clone_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_playlist_clone()
+ */
+int utc_mc_playlist_clone_p(void)
+{
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       mc_playlist_h playlist = NULL;
+       mc_playlist_h playlist_dst = NULL;
+
+       ret = _mc_register_playlist(&playlist);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_set_repeat_mode_update_cb(g_mc_client, _mc_repeat_mode_changed_cb, NULL);
+       ret = mc_playlist_clone(playlist, &playlist_dst);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_REPEAT_MODE, g_mc_server_name);
+       ret = mc_playlist_destroy(playlist);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_SERVER_STATE, g_mc_server_name);
+       ret = mc_playlist_destroy(playlist_dst);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
        return 0;
 }
 
 /**
- * @testcase           utc_mc_client_subscribe_n
- * @since_tizen                2.4
- * @description                Negative test case of mc_client_subscribe()
+ * @testcase           utc_mc_playlist_clone_p
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_playlist_clone()
  */
-int utc_mc_client_subscribe_n(void)
+int utc_mc_playlist_clone_n(void)
 {
        assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
        int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       mc_playlist_h playlist = NULL;
 
-       ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+       ret = _mc_register_playlist(&playlist);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_PLAYBACK, g_mc_server_name);
+       ret = mc_playlist_clone(playlist, NULL);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
-       ret = mc_client_set_playback_update_cb(g_mc_client, _mc_playback_updated_cb, NULL);
+       ret = mc_playlist_destroy(playlist);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_subscribe(NULL, MC_SUBSCRIPTION_TYPE_PLAYBACK, g_mc_server_name);
-       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
-
-       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_PLAYBACK, NULL);
-       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
-
-       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_REPEAT_MODE + 1, g_mc_server_name);
-       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
-
        return 0;
 }
 
 /**
- * @testcase           utc_mc_client_unsubscribe_p
- * @since_tizen                2.4
- * @description                Positive test case of mc_client_unsubscribe()
+ * @testcase           utc_mc_playlist_destroy_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_playlist_destroy()
  */
-int utc_mc_client_unsubscribe_p(void)
+int utc_mc_playlist_destroy_p(void)
 {
        assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
        int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       mc_playlist_h playlist = NULL;
 
-       ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
+       ret = _mc_register_playlist(&playlist);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_set_playback_update_cb(g_mc_client, _mc_playback_updated_cb, NULL);
+       ret = mc_playlist_destroy(playlist);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_PLAYBACK, g_mc_server_name);
-       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       return 0;
+}
 
-       ret = mc_client_unsubscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_PLAYBACK, g_mc_server_name);
-       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+/**
+ * @testcase           utc_mc_playlist_destroy_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_playlist_destroy()
+ */
+int utc_mc_playlist_destroy_n(void)
+{
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_set_metadata_update_cb(g_mc_client, _mc_metadata_updated_cb, NULL);
-       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       mc_playlist_h playlist = NULL;
 
-       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_METADATA, g_mc_server_name);
+       ret = _mc_register_playlist(&playlist);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_unsubscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_METADATA, g_mc_server_name);
-       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       ret = mc_playlist_destroy(NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
-       ret = mc_client_set_shuffle_mode_update_cb(g_mc_client, _mc_shuffle_mode_changed_cb, NULL);
-       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+       return 0;
+}
 
-       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_SHUFFLE_MODE, g_mc_server_name);
+/**
+ * @testcase           utc_mc_metadata_clone_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_metadata_clone()
+ */
+int utc_mc_metadata_clone_p(void)
+{
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       mc_metadata_h metadata = NULL;
+       mc_metadata_h metadata_dst = NULL;
+
+       ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_unsubscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_SHUFFLE_MODE, g_mc_server_name);
+       ret = mc_client_get_server_metadata(g_mc_client, g_mc_server_name, &metadata);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_set_repeat_mode_update_cb(g_mc_client, _mc_repeat_mode_changed_cb, NULL);
+       ret = mc_metadata_clone(metadata, &metadata_dst);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_REPEAT_MODE, g_mc_server_name);
+       ret = mc_client_destroy_metadata(metadata);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_unsubscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_REPEAT_MODE, g_mc_server_name);
+       return 0;
+}
+
+/**
+ * @testcase           utc_mc_metadata_clone_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_metadata_clone()
+ */
+int utc_mc_metadata_clone_n(void)
+{
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       mc_metadata_h metadata = NULL;
+
+       ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_SERVER_STATE, g_mc_server_name);
+       ret = mc_client_get_server_metadata(g_mc_client, g_mc_server_name, &metadata);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_unsubscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_SERVER_STATE, g_mc_server_name);
+       ret = mc_metadata_clone(metadata, NULL);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+
+       ret = mc_client_destroy_metadata(metadata);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
        return 0;
 }
 
 /**
- * @testcase           utc_mc_client_unsubscribe_n
- * @since_tizen                2.4
- * @description                Negative test case of mc_client_unsubscribe()
+ * @testcase           utc_mc_metadata_destroy_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_metadata_destroy()
  */
-int utc_mc_client_unsubscribe_n(void)
+int utc_mc_metadata_destroy_p(void)
 {
        assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
-
        int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       mc_metadata_h metadata = NULL;
 
        ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_set_playback_update_cb(g_mc_client, _mc_playback_updated_cb, NULL);
+       ret = mc_client_get_server_metadata(g_mc_client, g_mc_server_name, &metadata);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_PLAYBACK, g_mc_server_name);
+       ret = mc_metadata_destroy(metadata);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_unsubscribe(NULL, MC_SUBSCRIPTION_TYPE_PLAYBACK, g_mc_server_name);
-       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+       return 0;
+}
 
-       ret = mc_client_unsubscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_PLAYBACK, NULL);
-       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+/**
+ * @testcase           utc_mc_metadata_destroy_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_metadata_destroy()
+ */
+int utc_mc_metadata_destroy_n(void)
+{
+       assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
+       int ret = MEDIA_CONTROLLER_ERROR_NONE;
 
-       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_REPEAT_MODE + 1, g_mc_server_name);
+       ret = mc_metadata_destroy(NULL);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
        return 0;
 }
 
 /**
- * @testcase           utc_mc_client_foreach_server_subscribed_p
- * @since_tizen                2.4
- * @description                Positive test case of mc_client_foreach_server_subscribed()
+ * @testcase           utc_mc_metadata_get_p
+ * @since_tizen                4.0
+ * @description                Positive test case of mc_metadata_get()
  */
-int utc_mc_client_foreach_server_subscribed_p(void)
+int utc_mc_metadata_get_p(void)
 {
        assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
-
        int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       mc_metadata_h metadata = NULL;
+       char *value = NULL;
+       bool check_val = FALSE;
 
        ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_set_playback_update_cb(g_mc_client, _mc_playback_updated_cb, NULL);
+       ret = mc_client_get_server_metadata(g_mc_client, g_mc_server_name, &metadata);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_PLAYBACK, g_mc_server_name);
+       ret = mc_metadata_get(metadata, MC_META_MEDIA_TITLE, &value);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_foreach_server_subscribed(g_mc_client, MC_SUBSCRIPTION_TYPE_PLAYBACK, _mc_subscribed_server_cb, NULL);
+       if (value != NULL) {
+               if (strcmp(value, g_mc_test_metadata[0]) == 0)
+                       check_val = TRUE;
+
+               free(value);
+       }
+
+       assert_eq(check_val, TRUE);
+
+       ret = mc_client_destroy_metadata(metadata);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
+
        return 0;
 }
 
 /**
- * @testcase           utc_mc_client_foreach_server_subscribed_n
- * @since_tizen                2.4
- * @description                Negative test case of mc_client_foreach_server_subscribed()
+ * @testcase           utc_mc_metadata_get_n
+ * @since_tizen                4.0
+ * @description                Negative test case of mc_metadata_get()
  */
-int utc_mc_client_foreach_server_subscribed_n(void)
+int utc_mc_metadata_get_n(void)
 {
        assert_eq(startup_ret, MEDIA_CONTROLLER_ERROR_NONE);
-
        int ret = MEDIA_CONTROLLER_ERROR_NONE;
+       mc_metadata_h metadata = NULL;
 
        ret = mc_client_get_latest_server_info(g_mc_client, &g_mc_server_name, &g_mc_server_state);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_set_playback_update_cb(g_mc_client, _mc_playback_updated_cb, NULL);
-       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
-
-       ret = mc_client_subscribe(g_mc_client, MC_SUBSCRIPTION_TYPE_PLAYBACK, g_mc_server_name);
+       ret = mc_client_get_server_metadata(g_mc_client, g_mc_server_name, &metadata);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-       ret = mc_client_foreach_server_subscribed(NULL, MC_SUBSCRIPTION_TYPE_PLAYBACK, _mc_subscribed_server_cb, NULL);
+       ret = mc_metadata_get(metadata, MC_META_MEDIA_TITLE, NULL);
        assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
 
-       ret = mc_client_foreach_server_subscribed(g_mc_client, MC_SUBSCRIPTION_TYPE_PLAYBACK, NULL, NULL);
-       assert_eq(ret, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER);
+       ret = mc_client_destroy_metadata(metadata);
+       assert_eq(ret, MEDIA_CONTROLLER_ERROR_NONE);
 
-    return 0;
+       return 0;
 }