modify DB schema.
[platform/core/api/media-content.git] / test / media-content_test.c
index 86c0f59..f457f1e 100755 (executable)
@@ -23,6 +23,7 @@
 #include <dlog.h>
 #include <pthread.h>
 #include <glib.h>
+#include <tzplatform_config.h>
 
 filter_h g_filter = NULL;
 filter_h g_filter_g = NULL;    //filter for group like folder, tag, playlist, album, year ...
@@ -34,6 +35,7 @@ static int g_media_cnt = 0;
 #define test_audio_id  "0f999626-6218-450c-a4ad-181a3bab6ebf"
 #define test_video_id  "c1a92494-cc5b-4d74-aa7d-253199234548"
 #define test_image_id "db1c184c-6f31-43b4-b924-8c00ac5b6197"
+media_folder_h g_folder = NULL;
 
 bool get_audio_meta(audio_meta_h audio)
 {
@@ -50,12 +52,6 @@ bool get_audio_meta(audio_meta_h audio)
        media_content_debug("audio_id : [%s]", c_value);
        SAFE_FREE(c_value);
 
-       ret = audio_meta_get_title(audio, &c_value);
-       if(ret != MEDIA_CONTENT_ERROR_NONE)
-               media_content_error("error when get meta : [%d]", ret);
-       media_content_debug("title : [%s]", c_value);
-       SAFE_FREE(c_value);
-
        ret = audio_meta_get_album(audio, &c_value);
        if(ret != MEDIA_CONTENT_ERROR_NONE)
                media_content_error("error when get meta : [%d]", ret);
@@ -68,6 +64,12 @@ bool get_audio_meta(audio_meta_h audio)
        media_content_debug("artist : [%s]", c_value);
        SAFE_FREE(c_value);
 
+       ret = audio_meta_get_album_artist(audio, &c_value);
+       if(ret != MEDIA_CONTENT_ERROR_NONE)
+               media_content_error("error when get meta : [%d]", ret);
+       media_content_debug("album_artist : [%s]", c_value);
+       SAFE_FREE(c_value);
+
        ret = audio_meta_get_genre(audio, &c_value);
        if(ret != MEDIA_CONTENT_ERROR_NONE)
                media_content_error("error when get meta : [%d]", ret);
@@ -157,12 +159,6 @@ bool get_video_meta(video_meta_h video)
        media_content_debug("video_id : [%s]", c_value);
        SAFE_FREE(c_value);
 
-       ret = video_meta_get_title(video, &c_value);
-       if(ret != MEDIA_CONTENT_ERROR_NONE)
-               media_content_error("error when get meta : [%d]", ret);
-       media_content_debug("title : [%s]", c_value);
-       SAFE_FREE(c_value);
-
        ret = video_meta_get_album(video, &c_value);
        if(ret != MEDIA_CONTENT_ERROR_NONE)
                media_content_error("error when get meta : [%d]", ret);
@@ -175,6 +171,12 @@ bool get_video_meta(video_meta_h video)
        media_content_debug("artist : [%s]", c_value);
        SAFE_FREE(c_value);
 
+       ret = video_meta_get_album_artist(video, &c_value);
+       if(ret != MEDIA_CONTENT_ERROR_NONE)
+               media_content_error("error when get meta : [%d]", ret);
+       media_content_debug("album_artist : [%s]", c_value);
+       SAFE_FREE(c_value);
+
        ret = video_meta_get_genre(video, &c_value);
        if(ret != MEDIA_CONTENT_ERROR_NONE)
                media_content_error("error when get meta : [%d]", ret);
@@ -324,6 +326,12 @@ bool media_item_cb(media_info_h media, void *user_data)
                media_content_error("error when get info : [%d]", ret);
        media_content_debug("media_id : [%s]", media_id);
 
+       ret = media_info_get_file_path(media, &c_value);
+       if(ret != MEDIA_CONTENT_ERROR_NONE)
+               media_content_error("error when get info : [%d]", ret);
+       media_content_debug("file_path : [%s]", c_value);
+       SAFE_FREE(c_value);
+
 #if 1
        if(media_type == MEDIA_CONTENT_TYPE_MUSIC)
        {
@@ -344,6 +352,9 @@ bool media_item_cb(media_info_h media, void *user_data)
        {
                image_meta_h image;
                media_content_orientation_e orientation = 0;
+               bool is_burst_shot = false;
+               char *burst_id = NULL;
+               char *weather = NULL;
 
                if(media_info_get_image(media, &image) == MEDIA_CONTENT_ERROR_NONE)
                {
@@ -353,6 +364,20 @@ bool media_item_cb(media_info_h media, void *user_data)
                        else
                                media_content_debug("[image] orientation : %d", orientation);
 
+                       ret = image_meta_is_burst_shot(image, &is_burst_shot);
+                       if(ret != MEDIA_CONTENT_ERROR_NONE)
+                               media_content_error("error image_meta_is_burst_shot : [%d]", ret);
+                       if(is_burst_shot)
+                       {
+                               ret = image_meta_get_burst_id(image, &burst_id);
+                               if(ret != MEDIA_CONTENT_ERROR_NONE)
+                                       media_content_error("error image_meta_get_burst_id : [%d]", ret);
+                               else
+                                       media_content_debug("[image] burst_id : [%s]", burst_id);
+
+                               SAFE_FREE(burst_id);
+                       }
+
                        ret = image_meta_destroy(image);
                        if(ret != MEDIA_CONTENT_ERROR_NONE)
                                media_content_error("error image_meta_destroy : [%d]", ret);
@@ -469,6 +494,11 @@ bool media_item_cb(media_info_h media, void *user_data)
                media_content_error("error when get info : [%d]", ret);
        media_content_debug("modified_time : [%d]", t_value);
 
+       ret = media_info_get_timeline(media, &t_value);
+       if(ret != MEDIA_CONTENT_ERROR_NONE)
+               media_content_error("error when get info : [%d]", ret);
+       media_content_debug("timeline : [%d]", t_value);
+
        ret = media_info_get_rating(media, &i_value);
        if(ret != MEDIA_CONTENT_ERROR_NONE)
                media_content_error("error when get info : [%d]", ret);
@@ -483,6 +513,20 @@ bool media_item_cb(media_info_h media, void *user_data)
        if(ret != MEDIA_CONTENT_ERROR_NONE)
                media_content_error("error when get info : [%d]", ret);
        media_content_debug("is_drm : [%d]", b_value);
+       
+       // build error
+       /*
+       ret = media_info_set_weather(media, "Sunny");
+       if(ret != MEDIA_CONTENT_ERROR_NONE) {
+               media_content_error("Fail to set weather");
+               return ret;
+
+       ret = media_info_get_weather(media, &c_value);
+       if(ret != MEDIA_CONTENT_ERROR_NONE)
+               media_content_error("error when get info : [%d]", ret);
+       media_content_debug("weather : [%s]", c_value);
+       SAFE_FREE(c_value);
+       */
 
        /* Media server can't update when another db handle holds DB connection by sqlite3_prepare */
        //ret = media_info_set_location_tag(media, "Test location tag");
@@ -504,7 +548,8 @@ bool folder_list_cb(media_folder_h folder, void *user_data)
 
        if(folder != NULL)
        {
-               media_folder_clone(_folder, folder);
+               if(_folder != NULL)
+                       media_folder_clone(_folder, folder);
 
                if(media_folder_get_folder_id(folder, &folder_id) != MEDIA_CONTENT_ERROR_NONE)
                {
@@ -626,6 +671,7 @@ bool playlist_list_cb(media_playlist_h playlist, void *user_data)
        int playlist_id = 0;
        char *playlist_name = NULL;
        media_playlist_h playlist_h;
+       char *playlist_thumbnail_path = NULL;
 
        media_content_debug("playlist_list_cb ======");
 
@@ -647,7 +693,11 @@ bool playlist_list_cb(media_playlist_h playlist, void *user_data)
        media_content_debug("playlist_name : %s", playlist_name);
        SAFE_FREE(playlist_name);
 
-       media_playlist_get_playlist_from_db(playlist_id, NULL, &playlist_h);
+       media_playlist_get_thumbnail_path(playlist, &playlist_thumbnail_path);
+       media_content_debug("playlist_thumbnail_path : %s", playlist_thumbnail_path);
+       SAFE_FREE(playlist_thumbnail_path);
+
+       media_playlist_get_playlist_from_db(playlist_id, &playlist_h);
 
        media_playlist_destroy(playlist_h);
 
@@ -764,6 +814,7 @@ bool album_list_cb(media_album_h album, void *user_data)
                }
 
                media_content_debug("album_name : [%s]", album_name);
+               SAFE_FREE(album_name);
 
                if(media_album_get_artist(album, &artist) != MEDIA_CONTENT_ERROR_NONE)
                {
@@ -772,6 +823,7 @@ bool album_list_cb(media_album_h album, void *user_data)
                }
 
                media_content_debug("artist : [%s]", artist);
+               SAFE_FREE(artist);
 
                if(media_album_get_album_art(album, &album_art) != MEDIA_CONTENT_ERROR_NONE)
                {
@@ -780,9 +832,6 @@ bool album_list_cb(media_album_h album, void *user_data)
                }
 
                media_content_debug("album_art : [%s]", album_art);
-
-               SAFE_FREE(album_name);
-               SAFE_FREE(artist);
                SAFE_FREE(album_art);
 
                if(media_album_get_media_count_from_db(album_id, filter, &media_count) != MEDIA_CONTENT_ERROR_NONE)
@@ -1027,6 +1076,7 @@ int test_gallery_scenario(void)
                                int width = 0, height = 0;
                                media_content_orientation_e orientation = 0;
                                char *datetaken = NULL;
+                               char *burst_id = NULL;
 
                                ret = media_info_get_image(media_handle, &image_handle);
                                if(ret != MEDIA_CONTENT_ERROR_NONE) {
@@ -1044,19 +1094,23 @@ int test_gallery_scenario(void)
                                        ret = image_meta_get_date_taken(image_handle, &datetaken);
                                        if(ret != MEDIA_CONTENT_ERROR_NONE)
                                                media_content_error("error image_meta_get_date_taken : [%d]", ret);
+                                       ret = image_meta_get_burst_id(image_handle, &burst_id);
+                                       if(ret != MEDIA_CONTENT_ERROR_NONE)
+                                               media_content_error("error image_meta_get_burst_id : [%d]", ret);
 
                                        media_content_debug("This is Image");
                                        media_content_debug("Width : %d, Height : %d, Orientation : %d, Date taken : %s", width, height, orientation, datetaken);
                                }
 
                                SAFE_FREE(datetaken);
+                               SAFE_FREE(burst_id);
                                ret = image_meta_destroy(image_handle);
                                if(ret != MEDIA_CONTENT_ERROR_NONE)
                                        media_content_error("error image_meta_destroy : [%d]", ret);
 
                        } else if(media_type == MEDIA_CONTENT_TYPE_VIDEO) {
                                video_meta_h video_handle;
-                               char *title = NULL, *artist = NULL, *album = NULL;
+                               char *title = NULL, *artist = NULL, *album = NULL, *album_artist = NULL;
                                int duration = 0;
                                time_t time_played = 0;
 
@@ -1064,15 +1118,15 @@ int test_gallery_scenario(void)
                                if(ret != MEDIA_CONTENT_ERROR_NONE) {
                                        media_content_error("media_info_get_video failed: %d", ret);
                                } else {
-                                       ret = video_meta_get_title(video_handle, &title);
-                                       if(ret != MEDIA_CONTENT_ERROR_NONE)
-                                               media_content_error("error video_meta_get_title : [%d]", ret);
                                        ret = video_meta_get_artist(video_handle, &artist);
                                        if(ret != MEDIA_CONTENT_ERROR_NONE)
                                                media_content_error("error video_meta_get_artist : [%d]", ret);
                                        ret = video_meta_get_album(video_handle, &album);
                                        if(ret != MEDIA_CONTENT_ERROR_NONE)
                                                media_content_error("error video_meta_get_album : [%d]", ret);
+                                       ret = video_meta_get_album_artist(video_handle, &album_artist);
+                                       if(ret != MEDIA_CONTENT_ERROR_NONE)
+                                               media_content_error("error video_meta_get_album_artist : [%d]", ret);
                                        ret = video_meta_get_duration(video_handle, &duration);
                                        if(ret != MEDIA_CONTENT_ERROR_NONE)
                                                media_content_error("error video_meta_get_duration : [%d]", ret);
@@ -1081,12 +1135,13 @@ int test_gallery_scenario(void)
                                                media_content_error("error video_meta_get_played_time : [%d]", ret);
 
                                        media_content_debug("This is Video");
-                                       media_content_debug("Title: %s, Album: %s, Artist: %s\nDuration: %d, Played time: %d", title, artist, album, duration, time_played);
+                                       media_content_debug("Title: %s, Album: %s, Artist: %s, Album_artist: %s \n Duration: %d, Played time: %d", title, album, artist, album_artist, duration, time_played);
                                }
 
                                SAFE_FREE(title);
                                SAFE_FREE(artist);
                                SAFE_FREE(album);
+                               SAFE_FREE(album_artist);
 
                                ret = video_meta_destroy(video_handle);
                                if(ret != MEDIA_CONTENT_ERROR_NONE)
@@ -1191,7 +1246,7 @@ int test_gallery_scenario(void)
 
                                } else if(media_type == MEDIA_CONTENT_TYPE_VIDEO) {
                                        video_meta_h video_handle;
-                                       char *title = NULL, *artist = NULL, *album = NULL;
+                                       char *title = NULL, *artist = NULL, *album = NULL, *album_artist = NULL;;
                                        int duration = 0;
                                        time_t time_played;
 
@@ -1199,15 +1254,15 @@ int test_gallery_scenario(void)
                                        if(ret != MEDIA_CONTENT_ERROR_NONE) {
                                                media_content_error("media_info_get_video failed: %d", ret);
                                        } else {
-                                               ret = video_meta_get_title(video_handle, &title);
-                                               if(ret != MEDIA_CONTENT_ERROR_NONE)
-                                                       media_content_error("error video_meta_get_title : [%d]", ret);
                                                ret = video_meta_get_artist(video_handle, &artist);
                                                if(ret != MEDIA_CONTENT_ERROR_NONE)
                                                        media_content_error("error video_meta_get_artist : [%d]", ret);
                                                ret = video_meta_get_album(video_handle, &album);
                                                if(ret != MEDIA_CONTENT_ERROR_NONE)
                                                        media_content_error("error video_meta_get_album : [%d]", ret);
+                                               ret = video_meta_get_album_artist(video_handle, &album_artist);
+                                               if(ret != MEDIA_CONTENT_ERROR_NONE)
+                                                       media_content_error("error video_meta_get_album_artist : [%d]", ret);
                                                ret = video_meta_get_duration(video_handle, &duration);
                                                if(ret != MEDIA_CONTENT_ERROR_NONE)
                                                        media_content_error("error video_meta_get_duration : [%d]", ret);
@@ -1216,12 +1271,13 @@ int test_gallery_scenario(void)
                                                        media_content_error("error video_meta_get_played_time : [%d]", ret);
 
                                                media_content_debug("This is Video");
-                                               media_content_debug("Title: %s, Album: %s, Artist: %s\nDuration: %d, Played time: %d\n", title, artist, album, duration, time_played);
+                                               media_content_debug("Title: %s, Album: %s, Artist: %s, Album_artist: %s \n Duration: %d, Played time: %d\n", title, album, artist, album_artist, duration, time_played);
                                        }
 
                                        SAFE_FREE(title);
                                        SAFE_FREE(artist);
                                        SAFE_FREE(album);
+                                       SAFE_FREE(album_artist);
 
                                        ret = video_meta_destroy(video_handle);
                                        if(ret != MEDIA_CONTENT_ERROR_NONE)
@@ -1489,7 +1545,7 @@ int test_media_info_operation_2(void)
 
 #if 0
        /* Bookmark */
-       char *thumbnail_path1 = "/opt/media/Images and videos/My video clips/teat11.jpg";
+       char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_CONTENT, "Images and videos/My video clips/teat11.jpg"));
        media_bookmark_insert_to_db(test_video_id, 100, thumbnail_path1);
        media_bookmark_insert_to_db(test_video_id, 200, thumbnail_path1);
 
@@ -1574,6 +1630,77 @@ int test_folder_operation(void)
 
        test_filter_destroy();
 
+       /* fix prevent: Resource Leak */
+       SAFE_FREE(folder_id);
+
+       return ret;
+}
+
+bool folder_update_cb(media_folder_h folder, void *user_data)
+{
+       char *folder_id = NULL;
+       char *folder_path = NULL;
+       char *folder_name = NULL;
+       bool ret = true;
+
+       if(folder != NULL)
+       {
+               ret = media_folder_get_folder_id(folder, &folder_id);
+               media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+               media_content_debug("folder_id = [%s]", folder_id);
+               SAFE_FREE(folder_id);
+
+               ret = media_folder_get_path(folder, &folder_path);
+               media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+               media_content_debug("folder_path = [%s]", folder_path);
+               SAFE_FREE(folder_path);
+
+               ret = media_folder_get_name(folder, &folder_name);
+               media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+               media_content_debug("folder_name = [%s]", folder_name);
+               SAFE_FREE(folder_name);
+
+               ret = media_folder_clone(&g_folder, folder);
+               media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+
+               ret = true;
+       }
+       else
+       {
+               ret = false;
+       }
+
+       return ret;
+}
+
+
+int test_folder_update(void)
+{
+       int ret = MEDIA_CONTENT_ERROR_NONE;
+       filter_h filter;
+       int folder_count = 0;
+
+       media_content_debug("\n============Folder Update Test============\n\n");
+
+       ret = media_filter_create(&filter);
+       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+
+       media_filter_set_condition(filter, "MEDIA_TYPE=0 and MEDIA_STORAGE_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);     /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
+
+       ret = media_folder_get_folder_count_from_db(filter, &folder_count);
+
+       media_content_debug("Folder count : %d", folder_count);
+
+       ret = media_folder_foreach_folder_from_db(filter, folder_update_cb, NULL);
+
+       media_filter_destroy(filter);
+
+       ret = media_folder_set_name(g_folder, "test_folder");
+
+       ret = media_folder_update_to_db(g_folder);
+
+       ret = media_folder_destroy(g_folder);
+
        return ret;
 }
 
@@ -1620,6 +1747,12 @@ int test_playlist_operation(void)
                media_playlist_add_media(playlist_1, test_audio_id);
                media_playlist_add_media(playlist_1, test_audio_id);
                media_playlist_add_media(playlist_1, test_video_id);
+
+               #if 0
+               char *playlist_thumb_path = tzplatform_mkpath(TZ_USER_CONTENT, "Images/Default.jpg"));
+               media_playlist_set_thumbnail_path(playlist_1, playlist_thumb_path);
+               #endif
+
                media_playlist_update_to_db(playlist_1);
        }
 
@@ -1631,8 +1764,9 @@ int test_playlist_operation(void)
        }
 
        /* Get Playlist Count*/
-       media_playlist_get_playlist_count_from_db(filter, &playlist_count);
-       media_content_debug("playlist_count [%d]", playlist_count);
+       ret = media_playlist_get_playlist_count_from_db(filter, &playlist_count);
+       if (ret == 0)
+               media_content_debug("playlist_count [%d]", playlist_count);
 
        /* Get Playlist*/
        GList *playlist_id_list = NULL;
@@ -1898,7 +2032,8 @@ int test_bookmark_operation(void)
                media_content_error("error media_filter_set_order : [%d]", ret);
 
        //insert bookmark to video
-       char *thumbnail_path1 = "/opt/usr/media/Images and videos/My video clips/teat11.jpg";
+       char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_CONTENT, "Images and videos/My video clips/teat11.jpg");
+
        ret = media_bookmark_insert_to_db(test_video_id, 400, thumbnail_path1);
        if(ret != MEDIA_CONTENT_ERROR_NONE)
                media_content_error("error media_bookmark_insert_to_db : [%d]", ret);
@@ -2102,6 +2237,10 @@ int test_update_operation()
                        }
 #endif
                }
+
+               /* fix prevent: Resource Leak */
+               SAFE_FREE(media_id);
+               SAFE_FREE(media_path);
        }
 
        return MEDIA_CONTENT_ERROR_NONE;
@@ -2110,8 +2249,8 @@ int test_update_operation()
 int test_insert(void)
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
-       //char *path = "/opt/media/Images/Default.jpg";
-       char *path = "/opt/usr/media/Others/other.txt";
+       char *path = "/opt/usr/media/Images/Default.jpg";
+       //char *path = "/opt/usr/media/Others/other.txt";
        //char *path = NULL;
        media_info_h media_item = NULL;
        media_content_debug("\n============DB Insert Test============\n\n");
@@ -2156,7 +2295,7 @@ int test_move(void)
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
        const char *move_media_id = "60aea677-4742-408e-b5f7-f2628062d06d";
-       char *dst_path = "/opt/usr/media/Images/XX/Default1.jpg";
+       char *dst_path = tzplatform_mkpath(TZ_USER_CONTENT, "Images/XX/Default1.jpg");
        media_info_h move_media = NULL;
 
        ret = media_info_get_media_from_db(move_media_id, &move_media);
@@ -2240,6 +2379,9 @@ bool thumbnail_create_cb(media_info_h media, void *user_data)
                        media_content_error("media_info_create_thumbnail failed: %d", ret);
        }
 
+       /* fix prevent: Resource leak */
+       SAFE_FREE(media_id);
+
        return true;
 }
 
@@ -2279,6 +2421,9 @@ bool thumbnail_cancel_cb(media_info_h media, void *user_data)
        if(g_cnt == g_media_cnt)
                g_main_loop_quit(g_loop);
 
+       /* fix prevent: Resource leak */
+       SAFE_FREE(media_id);
+
        return true;
 }
 
@@ -2561,7 +2706,7 @@ int DFT_test(void)
        printf("Voice Memo size = [%d]\n", g_total_voice_memo_size);
        ret = media_filter_destroy(filter);
 
-       return 0;
+       return ret;
 }
 
 void insert_batch_cb(media_content_error_e error, void * user_data)
@@ -2577,7 +2722,7 @@ int test_batch_operations()
 
        for (i = 0; i < 10; i++) {
                char filepath[255] = {0,};
-               snprintf(filepath, sizeof(filepath), "%s%d.jpg", "/opt/usr/media/test/image", i+1);
+               snprintf(filepath, sizeof(filepath), "%s%d.jpg", tzplatform_mkpath(TZ_USER_CONTENT, "test/image"), i+1);
                media_content_debug("File : %s\n", filepath);
                file_list[i] = strdup(filepath);
        }
@@ -2588,8 +2733,8 @@ int test_batch_operations()
        }
 
        filter_h filter;
-       char *condition = "MEDIA_PATH LIKE \'/opt/usr/media/test/image%%jpg\'";
-
+       char *condition = "MEDIA_PATH LIKE \'";
+       strncat (condition,  tzplatform_mkpath(TZ_USER_CONTENT, "test/image%%jpg\'"), 17);
        ret = media_filter_create(&filter);
        if(ret != MEDIA_CONTENT_ERROR_NONE) {
                media_content_error("Fail to create filter");
@@ -2615,6 +2760,50 @@ int test_batch_operations()
        return ret;
 }
 
+void insert_burst_shot_cb(media_content_error_e error, void * user_data)
+{
+       printf("media_info_insert_burst_shot_to_db completed![%d]\n", error);
+       g_main_loop_quit(g_loop);
+}
+
+gboolean test_insert_burst_shot_to_db_start(gpointer data)
+{
+       int ret = MEDIA_CONTENT_ERROR_NONE;
+       int i = 0;
+       char *file_list[10];
+
+       for (i = 0; i < 10; i++) {
+               char filepath[255] = {0,};
+               snprintf(filepath, sizeof(filepath), "%s%d.jpg", tzplatform_mkpath(TZ_USER_CONTENT, "test/image"), i+1);
+               media_content_debug("File : %s\n", filepath);
+               file_list[i] = strdup(filepath);
+       }
+
+       ret = media_info_insert_burst_shot_to_db((const char **)file_list, 10, insert_burst_shot_cb, NULL);
+       if(ret != MEDIA_CONTENT_ERROR_NONE) {
+               media_content_error("media_info_insert_burst_shot_to_db failed : %d\n", ret);
+       }
+
+       return ret;
+}
+
+int test_insert_burst_shot_to_db(void)
+{
+       GSource *source = NULL;
+       GMainContext *context = NULL;
+
+       g_loop = g_main_loop_new(NULL, FALSE);
+       context = g_main_loop_get_context(g_loop);
+       source = g_idle_source_new();
+       g_source_set_callback (source, test_insert_burst_shot_to_db_start, NULL, NULL);
+       g_source_attach (source, context);
+
+       g_main_loop_run(g_loop);
+       g_main_loop_unref(g_loop);
+
+       return 0;
+}
+
 void _scan_cb(media_content_error_e err, void *user_data)
 {
        printf("scan callback is called : %d\n", err);
@@ -2627,8 +2816,7 @@ int test_scan_file()
 {
        int ret = -1;
 
-       const char *file_path = "/opt/usr/media/test/image1.jpg";
-
+       const char *file_path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
        ret = media_content_scan_file(file_path);
        if(ret != MEDIA_CONTENT_ERROR_NONE) {
                media_content_error("Fail to media_content_scan_file : %d", ret);
@@ -2642,9 +2830,9 @@ gboolean test_scan_dir_start(gpointer data)
 {
        int ret = -1;
 
-       const char *dir_path = "/opt/usr/media";
+       const char *dir_path = tzplatform_getenv(TZ_USER_CONTENT);
 
-       ret = media_content_scan_folder(dir_path, _scan_cb, NULL);
+       ret = media_content_scan_folder(dir_path, TRUE, _scan_cb, NULL);
 
        if(ret != MEDIA_CONTENT_ERROR_NONE) {
                media_content_error("Fail to media_content_scan_file : %d", ret);
@@ -2671,6 +2859,145 @@ int test_scan_dir()
        return 0;
 }
 
+void _noti_cb(media_content_error_e error,
+                               int pid,
+                               media_content_db_update_item_type_e update_item,
+                               media_content_db_update_type_e update_type,
+                               media_content_type_e media_type,
+                               char *uuid,
+                               char *path,
+                               char *mime_type,
+                               void *user_data)
+{
+       if (error == 0) {
+               printf("noti success! : %d\n", error);
+       } else {
+               printf("error occured! : %d\n", error);
+       }
+
+       printf("Noti from PID(%d)\n", pid);
+
+       if (update_item == MEDIA_ITEM_FILE) {
+               printf("Noti item : MEDIA_ITEM_FILE\n");
+       } else if (update_item == MEDIA_ITEM_DIRECTORY) {
+               printf("Noti item : MEDIA_ITEM_DIRECTORY\n");
+       }
+
+       if (update_type == MEDIA_CONTENT_INSERT) {
+               printf("Noti type : MEDIA_CONTENT_INSERT\n");
+       } else if (update_type == MEDIA_CONTENT_DELETE) {
+               printf("Noti type : MEDIA_CONTENT_DELETE\n");
+       } else if (update_type == MEDIA_CONTENT_UPDATE) {
+               printf("Noti type : MEDIA_CONTENT_UPDATE\n");
+       }
+
+       printf("content type : %d\n", media_type);
+
+       if (path)
+               printf("path : %s\n", path);
+       else
+               printf("path not\n");
+
+       if (uuid)
+               printf("uuid : %s\n", uuid);
+       else
+               printf("uuid not\n");
+
+       if (mime_type)
+               printf("mime_type : %s\n", mime_type);
+       else
+               printf("mime not\n");
+
+       if (user_data) printf("String : %s\n", (char *)user_data);
+
+       //g_main_loop_quit(g_loop);
+       return;
+}
+
+gboolean _send_noti_operations(gpointer data)
+{
+       int ret = MEDIA_CONTENT_ERROR_NONE;
+
+       /* First of all, noti subscription */
+       char *user_str = strdup("hi");
+       media_content_set_db_updated_cb(_noti_cb, (void*)user_str);
+
+       /* media_info_insert_to_db */
+       media_info_h media_item = NULL;
+       char *path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
+
+       ret = media_info_insert_to_db(path, &media_item);
+       if (ret < MEDIA_CONTENT_ERROR_NONE) {
+               media_content_error("media_info_insert_to_db failed : %d", ret);
+               media_info_destroy(media_item);
+               return FALSE;
+       }
+
+       media_content_debug("media_info_insert_to_db success");
+
+       /* media_info_delete_batch_from_db */
+       filter_h filter;
+       char *condition = "MEDIA_PATH LIKE \'";
+       strncat (condition,  tzplatform_mkpath(TZ_USER_CONTENT, "test/image%%jpg\'"), 17);
+
+       ret = media_filter_create(&filter);
+       if(ret != MEDIA_CONTENT_ERROR_NONE) {
+               media_content_error("Fail to create filter");
+               media_info_destroy(media_item);
+               return ret;
+       }
+
+       ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
+       if(ret != MEDIA_CONTENT_ERROR_NONE) {
+               media_filter_destroy(filter);
+               media_info_destroy(media_item);
+               media_content_error("Fail to set condition");
+               return ret;
+       }
+       ret = media_info_delete_batch_from_db(filter);
+       if(ret != MEDIA_CONTENT_ERROR_NONE) {
+               media_filter_destroy(filter);
+               media_info_destroy(media_item);
+               media_content_error("media_info_delete_batch_from_db failed : %d\n", ret);
+               return ret;
+       }
+
+       media_filter_destroy(filter);
+
+       /* media_info_update_to_db */
+       ret = media_info_update_to_db(media_item);
+       if(ret != MEDIA_CONTENT_ERROR_NONE) {
+               media_content_error("media_info_update_to_db failed : %d\n", ret);
+               media_info_destroy(media_item);
+               return ret;
+       }
+
+       media_info_destroy(media_item);
+
+       return FALSE;
+}
+
+int test_noti()
+{
+       int ret = MEDIA_CONTENT_ERROR_NONE;
+       GSource *source = NULL;
+       GMainContext *context = NULL;
+
+       g_loop = g_main_loop_new(NULL, FALSE);
+       context = g_main_loop_get_context(g_loop);
+       source = g_idle_source_new();
+       g_source_set_callback (source, _send_noti_operations, NULL, NULL);
+       g_source_attach (source, context);
+
+       g_main_loop_run(g_loop);
+       g_main_loop_unref(g_loop);
+
+       test_filter_destroy();
+       media_content_unset_db_updated_cb();
+
+       return ret;
+}
+
 int main(int argc, char *argv[])
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
@@ -2702,6 +3029,10 @@ int main(int argc, char *argv[])
        if(ret != MEDIA_CONTENT_ERROR_NONE)
                return ret;
 
+       ret = test_folder_update();
+       if(ret != MEDIA_CONTENT_ERROR_NONE)
+               return ret;
+
        ret = test_playlist_operation();
        if(ret != MEDIA_CONTENT_ERROR_NONE)
                return ret;
@@ -2750,6 +3081,10 @@ int main(int argc, char *argv[])
        if(ret != MEDIA_CONTENT_ERROR_NONE)
                return MEDIA_CONTENT_ERROR_NONE;
 
+       ret = test_insert_burst_shot_to_db();
+       if(ret != MEDIA_CONTENT_ERROR_NONE)
+               return MEDIA_CONTENT_ERROR_NONE;
+
        ret = test_scan_file();
        if(ret != MEDIA_CONTENT_ERROR_NONE)
                return MEDIA_CONTENT_ERROR_NONE;
@@ -2757,6 +3092,10 @@ int main(int argc, char *argv[])
        ret = test_scan_dir();
        if(ret != MEDIA_CONTENT_ERROR_NONE)
                return MEDIA_CONTENT_ERROR_NONE;
+
+       ret = test_noti();
+       if(ret != MEDIA_CONTENT_ERROR_NONE)
+               return MEDIA_CONTENT_ERROR_NONE;
 #endif
 
        ret = test_disconnect_database();