add stitched info field.
[platform/core/api/media-content.git] / test / media-content_test.c
1 /*
2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 #include <sys/time.h>
18 #include <stdio.h>
19 #include <stdlib.h>
20 #include <unistd.h>
21 #include <media_content.h>
22 #include <media_info_private.h>
23 #include <dlog.h>
24 #include <pthread.h>
25 #include <glib.h>
26 #include <tzplatform_config.h>
27
28 filter_h g_filter = NULL;
29 filter_h g_filter_g = NULL;     /*filter for group like folder, tag, playlist, album, year ... */
30
31 GMainLoop *g_loop = NULL;
32 static int g_cnt = 0;
33 static int g_media_cnt = 0;
34
35 #define test_audio_id   "0f999626-6218-450c-a4ad-181a3bab6ebf"
36 #define test_video_id   "c1a92494-cc5b-4d74-aa7d-253199234548"
37 #define test_image_id "db1c184c-6f31-43b4-b924-8c00ac5b6197"
38 media_folder_h g_folder = NULL;
39
40 bool get_audio_meta(audio_meta_h audio)
41 {
42         char *c_value = NULL;
43         int i_value = 0;
44         time_t t_value = 0;
45         int ret = MEDIA_CONTENT_ERROR_NONE;
46
47         media_content_debug("=== audio meta ===");
48
49         ret = audio_meta_get_media_id(audio, &c_value);
50         if (ret != MEDIA_CONTENT_ERROR_NONE)
51                 media_content_error("error when get meta : [%d]", ret);
52         media_content_debug("audio_id : [%s]", c_value);
53         SAFE_FREE(c_value);
54
55         ret = audio_meta_get_album(audio, &c_value);
56         if (ret != MEDIA_CONTENT_ERROR_NONE)
57                 media_content_error("error when get meta : [%d]", ret);
58         media_content_debug("album : [%s]", c_value);
59         SAFE_FREE(c_value);
60
61         ret = audio_meta_get_artist(audio, &c_value);
62         if (ret != MEDIA_CONTENT_ERROR_NONE)
63                 media_content_error("error when get meta : [%d]", ret);
64         media_content_debug("artist : [%s]", c_value);
65         SAFE_FREE(c_value);
66
67         ret = audio_meta_get_album_artist(audio, &c_value);
68         if (ret != MEDIA_CONTENT_ERROR_NONE)
69                 media_content_error("error when get meta : [%d]", ret);
70         media_content_debug("album_artist : [%s]", c_value);
71         SAFE_FREE(c_value);
72
73         ret = audio_meta_get_genre(audio, &c_value);
74         if (ret != MEDIA_CONTENT_ERROR_NONE)
75                 media_content_error("error when get meta : [%d]", ret);
76         media_content_debug("genre : [%s]", c_value);
77         SAFE_FREE(c_value);
78
79         ret = audio_meta_get_composer(audio, &c_value);
80         if (ret != MEDIA_CONTENT_ERROR_NONE)
81                 media_content_error("error when get meta : [%d]", ret);
82         media_content_debug("composer : [%s]", c_value);
83         SAFE_FREE(c_value);
84
85         ret = audio_meta_get_year(audio, &c_value);
86         if (ret != MEDIA_CONTENT_ERROR_NONE)
87                 media_content_error("error when get meta : [%d]", ret);
88         media_content_debug("year : [%s]", c_value);
89         SAFE_FREE(c_value);
90
91         ret = audio_meta_get_recorded_date(audio, &c_value);
92         if (ret != MEDIA_CONTENT_ERROR_NONE)
93                 media_content_error("error when get meta : [%d]", ret);
94         media_content_debug("recorded_date : [%s]", c_value);
95         SAFE_FREE(c_value);
96
97         ret = audio_meta_get_copyright(audio, &c_value);
98         if (ret != MEDIA_CONTENT_ERROR_NONE)
99                 media_content_error("error when get meta : [%d]", ret);
100         media_content_debug("copyright : [%s]", c_value);
101         SAFE_FREE(c_value);
102
103         ret = audio_meta_get_track_num(audio, &c_value);
104         if (ret != MEDIA_CONTENT_ERROR_NONE)
105                 media_content_error("error when get meta : [%d]", ret);
106         media_content_debug("track_num : [%s]", c_value);
107         SAFE_FREE(c_value);
108
109         ret = audio_meta_get_bit_rate(audio, &i_value);
110         if (ret != MEDIA_CONTENT_ERROR_NONE)
111                 media_content_error("error when get meta : [%d]", ret);
112         media_content_debug("bitrate : [%d]", i_value);
113
114         ret = audio_meta_get_sample_rate(audio, &i_value);
115         if (ret != MEDIA_CONTENT_ERROR_NONE)
116                 media_content_error("error when get meta : [%d]", ret);
117         media_content_debug("samplerate : [%d]", i_value);
118
119         ret = audio_meta_get_channel(audio, &i_value);
120         if (ret != MEDIA_CONTENT_ERROR_NONE)
121                 media_content_error("error when get meta : [%d]", ret);
122         media_content_debug("channel : [%d]", i_value);
123
124         ret = audio_meta_get_duration(audio, &i_value);
125         if (ret != MEDIA_CONTENT_ERROR_NONE)
126                 media_content_error("error when get meta : [%d]", ret);
127         media_content_debug("duration : [%d]", i_value);
128
129         ret = audio_meta_get_played_count(audio, &i_value);
130         if (ret != MEDIA_CONTENT_ERROR_NONE)
131                 media_content_error("error when get meta : [%d]", ret);
132         media_content_debug("played_count : [%d]", i_value);
133
134         ret = audio_meta_get_played_time(audio, &t_value);
135         if (ret != MEDIA_CONTENT_ERROR_NONE)
136                 media_content_error("error when get meta : [%d]", ret);
137         media_content_debug("played_time : [%d]", t_value);
138
139         ret = audio_meta_get_played_position(audio, &i_value);
140         if (ret != MEDIA_CONTENT_ERROR_NONE)
141                 media_content_error("error when get meta : [%d]", ret);
142         media_content_debug("played_position : [%d]", i_value);
143
144         return true;
145 }
146
147 bool get_video_meta(video_meta_h video)
148 {
149         char *c_value = NULL;
150         int i_value = 0;
151         time_t t_value = 0;
152         int ret = MEDIA_CONTENT_ERROR_NONE;
153
154         media_content_debug("=== video meta ===");
155
156         ret = video_meta_get_media_id(video, &c_value);
157         if (ret != MEDIA_CONTENT_ERROR_NONE)
158                 media_content_error("error when get meta : [%d]", ret);
159         media_content_debug("video_id : [%s]", c_value);
160         SAFE_FREE(c_value);
161
162         ret = video_meta_get_album(video, &c_value);
163         if (ret != MEDIA_CONTENT_ERROR_NONE)
164                 media_content_error("error when get meta : [%d]", ret);
165         media_content_debug("album : [%s]", c_value);
166         SAFE_FREE(c_value);
167
168         ret = video_meta_get_artist(video, &c_value);
169         if (ret != MEDIA_CONTENT_ERROR_NONE)
170                 media_content_error("error when get meta : [%d]", ret);
171         media_content_debug("artist : [%s]", c_value);
172         SAFE_FREE(c_value);
173
174         ret = video_meta_get_album_artist(video, &c_value);
175         if (ret != MEDIA_CONTENT_ERROR_NONE)
176                 media_content_error("error when get meta : [%d]", ret);
177         media_content_debug("album_artist : [%s]", c_value);
178         SAFE_FREE(c_value);
179
180         ret = video_meta_get_genre(video, &c_value);
181         if (ret != MEDIA_CONTENT_ERROR_NONE)
182                 media_content_error("error when get meta : [%d]", ret);
183         media_content_debug("genre : [%s]", c_value);
184         SAFE_FREE(c_value);
185
186         ret = video_meta_get_composer(video, &c_value);
187         if (ret != MEDIA_CONTENT_ERROR_NONE)
188                 media_content_error("error when get meta : [%d]", ret);
189         media_content_debug("omposer : [%s]", c_value);
190         SAFE_FREE(c_value);
191
192         ret = video_meta_get_year(video, &c_value);
193         if (ret != MEDIA_CONTENT_ERROR_NONE)
194                 media_content_error("error when get meta : [%d]", ret);
195         media_content_debug("year : [%s]", c_value);
196         SAFE_FREE(c_value);
197
198         ret = video_meta_get_recorded_date(video, &c_value);
199         if (ret != MEDIA_CONTENT_ERROR_NONE)
200                 media_content_error("error when get meta : [%d]", ret);
201         media_content_debug("recorded_date : [%s]", c_value);
202         SAFE_FREE(c_value);
203
204         ret = video_meta_get_copyright(video, &c_value);
205         if (ret != MEDIA_CONTENT_ERROR_NONE)
206                 media_content_error("error when get meta : [%d]", ret);
207         media_content_debug("copyright : [%s]", c_value);
208         SAFE_FREE(c_value);
209
210         ret = video_meta_get_track_num(video, &c_value);
211         if (ret != MEDIA_CONTENT_ERROR_NONE)
212                 media_content_error("error when get meta : [%d]", ret);
213         media_content_debug("track_num : [%s]", c_value);
214         SAFE_FREE(c_value);
215
216         ret = video_meta_get_bit_rate(video, &i_value);
217         if (ret != MEDIA_CONTENT_ERROR_NONE)
218                 media_content_error("error when get meta : [%d]", ret);
219         media_content_debug("bitrate : [%d]", i_value);
220
221         ret = video_meta_get_duration(video, &i_value);
222         if (ret != MEDIA_CONTENT_ERROR_NONE)
223                 media_content_error("error when get meta : [%d]", ret);
224         media_content_debug("duration : [%d]", i_value);
225
226         ret = video_meta_get_width(video, &i_value);
227         if (ret != MEDIA_CONTENT_ERROR_NONE)
228                 media_content_error("error when get meta : [%d]", ret);
229         media_content_debug("width : [%d]", i_value);
230
231         ret = video_meta_get_height(video, &i_value);
232         if (ret != MEDIA_CONTENT_ERROR_NONE)
233                 media_content_error("error when get meta : [%d]", ret);
234         media_content_debug("height : [%d]", i_value);
235
236         ret = video_meta_get_played_count(video, &i_value);
237         if (ret != MEDIA_CONTENT_ERROR_NONE)
238                 media_content_error("error when get meta : [%d]", ret);
239         media_content_debug("played_count : [%d]", i_value);
240
241         ret = video_meta_get_played_time(video, &t_value);
242         if (ret != MEDIA_CONTENT_ERROR_NONE)
243                 media_content_error("error when get meta : [%d]", ret);
244         media_content_debug("played_time : [%d]", t_value);
245
246         ret = video_meta_get_played_position(video, &i_value);
247         if (ret != MEDIA_CONTENT_ERROR_NONE)
248                 media_content_error("error when get meta : [%d]", ret);
249         media_content_debug("played_position : [%d]", i_value);
250
251         return true;
252 }
253
254 bool gallery_folder_list_cb(media_folder_h folder, void *user_data)
255 {
256         media_folder_h new_folder = NULL;
257         media_folder_clone(&new_folder, folder);
258
259         GList **list = (GList**)user_data;
260         *list = g_list_append(*list, new_folder);
261
262         return true;
263 }
264
265 bool gallery_media_item_cb(media_info_h media, void *user_data)
266 {
267         media_info_h new_media = NULL;
268         media_info_clone(&new_media, media);
269
270         GList **list = (GList**)user_data;
271         *list = g_list_append(*list, new_media);
272
273         return true;
274 }
275
276 bool gallery_tag_item_cb(media_tag_h tag, void *user_data)
277 {
278         media_tag_h new_tag = NULL;
279         media_tag_clone(&new_tag, tag);
280
281         GList **list = (GList**)user_data;
282         *list = g_list_append(*list, new_tag);
283
284         return true;
285 }
286
287 bool gallery_bookmarks_cb(media_bookmark_h bookmark, void *user_data)
288 {
289         media_bookmark_h new_bm = NULL;
290         int ret = MEDIA_CONTENT_ERROR_NONE;
291
292         ret = media_bookmark_clone(&new_bm, bookmark);
293         if (ret != MEDIA_CONTENT_ERROR_NONE)
294                 media_content_error("error media_bookmark_clone : [%d]", ret);
295
296         GList **list = (GList**)user_data;
297         *list = g_list_append(*list, new_bm);
298
299         return true;
300 }
301
302 bool media_item_cb(media_info_h media, void *user_data)
303 {
304         char *c_value = NULL;
305         char *media_id = NULL;
306         media_content_type_e media_type = 0;
307         int ret = MEDIA_CONTENT_ERROR_NONE;
308
309         if (media == NULL) {
310                 media_content_debug("NO Item");
311                 return true;
312         }
313
314         ret = media_info_get_media_type(media, &media_type);
315         if (ret != MEDIA_CONTENT_ERROR_NONE)
316                 media_content_error("error when get info : [%d]", ret);
317         media_content_debug("media_type : [%d]", media_type);
318
319         ret = media_info_get_media_id(media, &media_id);
320         if (ret != MEDIA_CONTENT_ERROR_NONE)
321                 media_content_error("error when get info : [%d]", ret);
322         media_content_debug("media_id : [%s]", media_id);
323
324         ret = media_info_get_file_path(media, &c_value);
325         if (ret != MEDIA_CONTENT_ERROR_NONE)
326                 media_content_error("error when get info : [%d]", ret);
327         media_content_debug("file_path : [%s]", c_value);
328         SAFE_FREE(c_value);
329
330 #if 0
331         int i_value = 0;
332         time_t t_value = 0;
333         bool b_value = false;
334         unsigned long long size = 0;
335
336         if (media_type == MEDIA_CONTENT_TYPE_MUSIC) {
337                 audio_meta_h audio;
338
339                 if (media_info_get_audio(media, &audio) == MEDIA_CONTENT_ERROR_NONE) {
340                         get_audio_meta(audio);
341                         ret = audio_meta_destroy(audio);
342                         if (ret != MEDIA_CONTENT_ERROR_NONE)
343                                 media_content_error("error audio_meta_destroy : [%d]", ret);
344                 } else
345                         media_content_error("[audio_error]");
346
347         } else if (media_type == MEDIA_CONTENT_TYPE_IMAGE) {
348                 image_meta_h image;
349                 media_content_orientation_e orientation = 0;
350                 bool is_burst_shot = false;
351                 char *burst_id = NULL;
352                 char *weather = NULL;
353
354                 if (media_info_get_image(media, &image) == MEDIA_CONTENT_ERROR_NONE) {
355                         ret = image_meta_get_orientation(image, &orientation);
356                         if (ret != MEDIA_CONTENT_ERROR_NONE)
357                                 media_content_error("error image_meta_get_orientation : [%d]", ret);
358                         else
359                                 media_content_debug("[image] orientation : %d", orientation);
360
361                         ret = image_meta_is_burst_shot(image, &is_burst_shot);
362                         if (ret != MEDIA_CONTENT_ERROR_NONE)
363                                 media_content_error("error image_meta_is_burst_shot : [%d]", ret);
364                         if (is_burst_shot) {
365                                 ret = image_meta_get_burst_id(image, &burst_id);
366                                 if (ret != MEDIA_CONTENT_ERROR_NONE)
367                                         media_content_error("error image_meta_get_burst_id : [%d]", ret);
368                                 else
369                                         media_content_debug("[image] burst_id : [%s]", burst_id);
370
371                                 SAFE_FREE(burst_id);
372                         }
373
374                         ret = image_meta_destroy(image);
375                         if (ret != MEDIA_CONTENT_ERROR_NONE)
376                                 media_content_error("error image_meta_destroy : [%d]", ret);
377                 } else
378                         media_content_error("[image_error]");
379
380         } else if (media_type == MEDIA_CONTENT_TYPE_VIDEO) {
381                 video_meta_h video;
382
383                 if (media_info_get_video(media, &video) == MEDIA_CONTENT_ERROR_NONE) {
384                         get_video_meta(video);
385                         ret = video_meta_destroy(video);
386                         if (ret != MEDIA_CONTENT_ERROR_NONE)
387                                 media_content_error("error video_meta_destroy : [%d]", ret);
388                 } else
389                         media_content_error("[video_error]");
390
391         } else {
392                 media_content_debug("Other Content");
393         }
394
395         media_content_debug("=== media_info ===");
396         ret = media_info_get_file_path(media, &c_value);
397         if (ret != MEDIA_CONTENT_ERROR_NONE)
398                 media_content_error("error when get info : [%d]", ret);
399         media_content_debug("file_path : [%s]", c_value);
400         SAFE_FREE(c_value);
401
402         ret = media_info_get_display_name(media, &c_value);
403         if (ret != MEDIA_CONTENT_ERROR_NONE)
404                 media_content_error("error when get info : [%d]", ret);
405         media_content_debug("display_name : [%s]", c_value);
406         SAFE_FREE(c_value);
407
408         ret = media_info_get_mime_type(media, &c_value);
409         if (ret != MEDIA_CONTENT_ERROR_NONE)
410                 media_content_error("error when get info : [%d]", ret);
411         media_content_debug("mime_type : [%s]", c_value);
412         SAFE_FREE(c_value);
413
414         ret = media_info_get_thumbnail_path(media, &c_value);
415         if (ret != MEDIA_CONTENT_ERROR_NONE)
416                 media_content_error("error when get info : [%d]", ret);
417         media_content_debug("thumbnail_path : [%s]", c_value);
418         SAFE_FREE(c_value);
419
420         ret = media_info_get_description(media, &c_value);
421         if (ret != MEDIA_CONTENT_ERROR_NONE)
422                 media_content_error("error when get info : [%d]", ret);
423         media_content_debug("description : [%s]", c_value);
424         SAFE_FREE(c_value);
425
426         ret = media_info_get_author(media, &c_value);
427         if (ret != MEDIA_CONTENT_ERROR_NONE)
428                 media_content_error("error when get info : [%d]", ret);
429         media_content_debug("author : [%s]", c_value);
430         SAFE_FREE(c_value);
431
432         ret = media_info_get_provider(media, &c_value);
433         if (ret != MEDIA_CONTENT_ERROR_NONE)
434                 media_content_error("error when get info : [%d]", ret);
435         media_content_debug("provider : [%s]", c_value);
436         SAFE_FREE(c_value);
437
438         ret = media_info_get_content_name(media, &c_value);
439         if (ret != MEDIA_CONTENT_ERROR_NONE)
440                 media_content_error("error when get info : [%d]", ret);
441         media_content_debug("content_name : [%s]", c_value);
442         SAFE_FREE(c_value);
443
444         ret = media_info_get_category(media, &c_value);
445         if (ret != MEDIA_CONTENT_ERROR_NONE)
446                 media_content_error("error when get info : [%d]", ret);
447         media_content_debug("category : [%s]", c_value);
448         SAFE_FREE(c_value);
449
450         ret = media_info_get_location_tag(media, &c_value);
451         if (ret != MEDIA_CONTENT_ERROR_NONE)
452                 media_content_error("error when get info : [%d]", ret);
453         media_content_debug("location_tag : [%s]", c_value);
454         SAFE_FREE(c_value);
455
456         ret = media_info_get_age_rating(media, &c_value);
457         if (ret != MEDIA_CONTENT_ERROR_NONE)
458                 media_content_error("error when get info : [%d]", ret);
459         media_content_debug("age_rating : [%s]", c_value);
460         SAFE_FREE(c_value);
461
462         ret = media_info_get_keyword(media, &c_value);
463         if (ret != MEDIA_CONTENT_ERROR_NONE)
464                 media_content_error("error when get info : [%d]", ret);
465         media_content_debug("keyword : [%s]", c_value);
466         SAFE_FREE(c_value);
467
468         ret = media_info_get_size(media, &size);
469         if (ret != MEDIA_CONTENT_ERROR_NONE)
470                 media_content_error("error when get info : [%d]", ret);
471         media_content_debug("size : [%lld]", size);
472
473         ret = media_info_get_added_time(media, &t_value);
474         if (ret != MEDIA_CONTENT_ERROR_NONE)
475                 media_content_error("error when get info : [%d]", ret);
476         media_content_debug("added_time : [%d]", t_value);
477
478         ret = media_info_get_modified_time(media, &t_value);
479         if (ret != MEDIA_CONTENT_ERROR_NONE)
480                 media_content_error("error when get info : [%d]", ret);
481         media_content_debug("modified_time : [%d]", t_value);
482
483         ret = media_info_get_timeline(media, &t_value);
484         if (ret != MEDIA_CONTENT_ERROR_NONE)
485                 media_content_error("error when get info : [%d]", ret);
486         media_content_debug("timeline : [%d]", t_value);
487
488         ret = media_info_get_rating(media, &i_value);
489         if (ret != MEDIA_CONTENT_ERROR_NONE)
490                 media_content_error("error when get info : [%d]", ret);
491         media_content_debug("rating : [%d]", i_value);
492
493         ret = media_info_get_favorite(media, &b_value);
494         if (ret != MEDIA_CONTENT_ERROR_NONE)
495                 media_content_error("error when get info : [%d]", ret);
496         media_content_debug("favorite : [%d]", b_value);
497
498         ret = media_info_is_drm(media, &b_value);
499         if (ret != MEDIA_CONTENT_ERROR_NONE)
500                 media_content_error("error when get info : [%d]", ret);
501         media_content_debug("is_drm : [%d]", b_value);
502
503         ret = media_info_is_360_content(media, &b_value);
504         if (ret != MEDIA_CONTENT_ERROR_NONE)
505                 media_content_error("error when get info : [%d]", ret);
506         media_content_debug("is_360 : [%d]", b_value);
507
508         ret = media_info_get_stitched_state(media, &i_value);
509         if (ret != MEDIA_CONTENT_ERROR_NONE)
510                 media_content_error("error when get info : [%d]", ret);
511         media_content_debug("360 stitched : [%d]", i_value);
512
513         ret = media_info_get_stitched_engine(media, &i_value);
514         if (ret != MEDIA_CONTENT_ERROR_NONE)
515                 media_content_error("error when get info : [%d]", ret);
516         media_content_debug("360 engine : [%d]", i_value);
517
518         ret = media_info_set_weather(media, "Sunny");
519         if (ret != MEDIA_CONTENT_ERROR_NONE) {
520                 media_content_error("Fail to set weather");
521                 return ret;
522
523         ret = media_info_get_weather(media, &c_value);
524         if (ret != MEDIA_CONTENT_ERROR_NONE)
525                 media_content_error("error when get info : [%d]", ret);
526         media_content_debug("weather : [%s]", c_value);
527         SAFE_FREE(c_value);
528
529         /* Media server can't update when another db handle holds DB connection by sqlite3_prepare */
530         /*ret = media_info_set_location_tag(media, "Test location tag");*/
531         /*media_info_update_to_db(media);*/
532         SAFE_FREE(media_id);
533 #endif
534         SAFE_FREE(media_id);
535         return true;
536 }
537
538 bool folder_list_cb(media_folder_h folder, void *user_data)
539 {
540         int item_count = 0;
541         char *folder_id = NULL;
542         char *str_val = NULL;
543         int int_val = -1;
544         media_content_storage_e storage_type;
545         bool ret;
546         media_folder_h *_folder = (media_folder_h*)user_data;
547
548         media_content_debug("===========================");
549         if (folder != NULL) {
550                 if (_folder != NULL)
551                         media_folder_clone(_folder, folder);
552
553                 if (media_folder_get_folder_id(folder, &folder_id) != MEDIA_CONTENT_ERROR_NONE) {
554                         media_content_error("[ERROR] media_folder_get_folder_id is failed");
555                         return false;
556                 }
557                 media_content_debug("folder_id = [%s]", folder_id);
558
559                 if (media_folder_get_parent_folder_id(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE) {
560                         media_content_error("[ERROR] media_folder_get_parent_folder_id is failed");
561                         return false;
562                 }
563                 media_content_debug("parent_folder_id = [%s]", str_val);
564
565                 if (media_folder_get_path(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE) {
566                         SAFE_FREE(folder_id);
567                         media_content_error("[ERROR] media_folder_get_path is failed");
568                         return false;
569                 }
570                 media_content_debug("folder_path = [%s]", str_val);
571                 SAFE_FREE(str_val);
572
573                 if (media_folder_get_name(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE) {
574                         SAFE_FREE(folder_id);
575                         media_content_error("[ERROR] media_folder_get_name is failed");
576                         return false;
577                 }
578                 media_content_debug("folder_name = [%s]", str_val);
579                 SAFE_FREE(str_val);
580
581                 if (media_folder_get_storage_type(folder, &storage_type) != MEDIA_CONTENT_ERROR_NONE) {
582                         SAFE_FREE(folder_id);
583                         media_content_error("[ERROR] media_folder_get_storage_type is failed");
584                         return false;
585                 }
586                 media_content_debug("storage_type = [%d]", storage_type);
587
588                 if (media_folder_get_storage_id(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE) {
589                         SAFE_FREE(folder_id);
590                         media_content_error("[ERROR] media_folder_get_name is failed");
591                         return false;
592                 }
593                 media_content_debug("storage_id = [%s]", str_val);
594
595                 if (media_folder_get_order(folder, &int_val) != MEDIA_CONTENT_ERROR_NONE) {
596                         media_content_error("[ERROR] media_folder_get_order is failed");
597                         return false;
598                 }
599                 media_content_debug("folder_order = [%d]", int_val);
600 #if 1
601                 if (media_folder_get_media_count_from_db(folder_id, g_filter, &item_count) != MEDIA_CONTENT_ERROR_NONE) {
602                         SAFE_FREE(folder_id);
603                         media_content_error("[ERROR] media_folder_get_media_count_from_db is failed");
604                         return false;
605                 }
606
607                 if (media_folder_foreach_media_from_db(folder_id, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE) {
608                         SAFE_FREE(folder_id);
609                         media_content_error("[ERROR] media_folder_foreach_media_from_db is failed");
610                         return false;
611                 }
612 #endif
613                 SAFE_FREE(folder_id);
614                 ret = true;
615         } else {
616                 ret = false;
617         }
618
619         return ret;
620 }
621
622 bool test_album_from_db(int album_id)
623 {
624         int ret = MEDIA_CONTENT_ERROR_NONE;
625         media_album_h album_h;
626         int test_album_id = 0;
627         char *album_name = NULL;
628         char *artist = NULL;
629
630         ret = media_album_get_album_from_db(album_id, &album_h);
631         if (ret != MEDIA_CONTENT_ERROR_NONE) {
632                 media_content_error("error when get album");
633                 return false;
634         }
635
636         if (media_album_get_album_id(album_h, &test_album_id) != MEDIA_CONTENT_ERROR_NONE) {
637                 media_album_destroy(album_h);
638                 return false;
639         }
640
641         media_content_debug("test_album_id : [%d]", test_album_id);
642
643         if (media_album_get_name(album_h, &album_name) != MEDIA_CONTENT_ERROR_NONE) {
644                 media_album_destroy(album_h);
645                 return false;
646         }
647
648         media_content_debug("album_name : [%s]", album_name);
649
650         if (media_album_get_artist(album_h, &artist) != MEDIA_CONTENT_ERROR_NONE) {
651                 media_album_destroy(album_h);
652                 /* fix prevent: Resource Leak */
653                 SAFE_FREE(album_name);
654                 return false;
655         }
656
657         media_content_debug("artist : [%s]", artist);
658
659         SAFE_FREE(album_name);
660         SAFE_FREE(artist);
661
662         media_album_destroy(album_h);
663
664         return true;
665 }
666
667 bool playlist_list_cb(media_playlist_h playlist, void *user_data)
668 {
669         int playlist_id = 0;
670         char *playlist_name = NULL;
671         media_playlist_h playlist_h;
672         char *playlist_thumbnail_path = NULL;
673
674         media_content_debug("playlist_list_cb ======");
675 #if 0
676         GList **list = (GList**)user_data;
677 #endif
678
679         if (playlist == NULL) {
680                 media_content_debug(" playlist handle is NULL");
681                 return false;
682         }
683
684         media_playlist_get_playlist_id(playlist, &playlist_id);
685         media_content_debug("playlist_id : %d", playlist_id);
686         /* 64bit build issue */
687 #if 0
688         if (user_data != NULL)
689                 *list = g_list_append(*list, (gpointer)playlist_id);
690 #endif
691         media_playlist_get_name(playlist, &playlist_name);
692         media_content_debug("playlist_name : %s", playlist_name);
693         SAFE_FREE(playlist_name);
694
695         media_playlist_get_thumbnail_path(playlist, &playlist_thumbnail_path);
696         media_content_debug("playlist_thumbnail_path : %s", playlist_thumbnail_path);
697         SAFE_FREE(playlist_thumbnail_path);
698
699         media_playlist_get_playlist_from_db(playlist_id, &playlist_h);
700
701         media_playlist_destroy(playlist_h);
702
703         return true;
704 }
705
706 bool tag_list_cb(media_tag_h tag, void *user_data)
707 {
708         int tag_id = 0;
709         char *tag_name = NULL;
710         int ret = MEDIA_CONTENT_ERROR_NONE;
711
712         if (tag == NULL) {
713                 media_content_debug(" tag handle is NULL");
714                 return false;
715         }
716
717         ret = media_tag_get_tag_id(tag, &tag_id);
718         if (ret != MEDIA_CONTENT_ERROR_NONE)
719                 media_content_error("error media_tag_get_tag_id : [%d]", ret);
720         else
721                 media_content_debug("tag_id : %d", tag_id);
722
723         ret = media_tag_get_name(tag, &tag_name);
724         if (ret != MEDIA_CONTENT_ERROR_NONE)
725                 media_content_error("error media_tag_get_name : [%d]", ret);
726         else
727                 media_content_debug("tag_name : %s", tag_name);
728         SAFE_FREE(tag_name);
729
730         return true;
731 }
732
733 bool bookmarks_cb(media_bookmark_h bookmark, void *user_data)
734 {
735         media_bookmark_h *_bookmark = (media_bookmark_h*)bookmark;
736         int ret = MEDIA_CONTENT_ERROR_NONE;
737
738         if (_bookmark != NULL) {
739                 char *name = NULL;
740                 time_t time = 0;
741                 int bookmark_id = 0;
742
743                 ret = media_bookmark_get_bookmark_id(bookmark, &bookmark_id);
744                 if (ret != MEDIA_CONTENT_ERROR_NONE)
745                         media_content_error("error media_bookmark_get_bookmark_id : [%d]", ret);
746                 else
747                         media_content_debug("bookmark_id : %d", bookmark_id);
748
749                 ret = media_bookmark_get_thumbnail_path(bookmark, &name);
750                 if (ret != MEDIA_CONTENT_ERROR_NONE)
751                         media_content_error("error media_bookmark_get_thumbnail_path : [%d]", ret);
752                 else
753                         media_content_debug("bookmark thumbnail_path : %s", name);
754                 SAFE_FREE(name);
755
756                 ret = media_bookmark_get_marked_time(bookmark, &time);
757                 if (ret != MEDIA_CONTENT_ERROR_NONE)
758                         media_content_error("error media_bookmark_get_marked_time : [%d]", ret);
759                 else
760                         media_content_debug("bookmark marked_time : %d", time);
761         }
762
763         return true;
764 }
765
766 bool album_list_cb(media_album_h album, void *user_data)
767 {
768         int album_id = 0;
769         char *album_name = NULL;
770         char *artist = NULL;
771         char *album_art = NULL;
772         int media_count = 0;
773         int ret = MEDIA_CONTENT_ERROR_NONE;
774         filter_h filter = NULL;
775
776         /*Set Filter*/
777         const char *condition = "MEDIA_TYPE=3"; /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
778
779         ret = media_filter_create(&filter);
780         if (ret != MEDIA_CONTENT_ERROR_NONE) {
781                 media_content_error("Fail to create filter");
782                 return ret;
783         }
784         ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
785         if (ret != MEDIA_CONTENT_ERROR_NONE) {
786                 media_filter_destroy(filter);
787                 media_content_error("Fail to set condition");
788                 return ret;
789         }
790         ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE);
791         if (ret != MEDIA_CONTENT_ERROR_NONE) {
792                 media_filter_destroy(filter);
793                 media_content_error("Fail to set order");
794                 return ret;
795         }
796
797         if (album != NULL) {
798                 if (media_album_get_album_id(album, &album_id) != MEDIA_CONTENT_ERROR_NONE) {
799                         media_filter_destroy(filter);
800                         return false;
801                 }
802
803                 media_content_debug("album_id : [%d]", album_id);
804
805                 if (media_album_get_name(album, &album_name) != MEDIA_CONTENT_ERROR_NONE) {
806                         media_filter_destroy(filter);
807                         return false;
808                 }
809
810                 media_content_debug("album_name : [%s]", album_name);
811                 SAFE_FREE(album_name);
812
813                 if (media_album_get_artist(album, &artist) != MEDIA_CONTENT_ERROR_NONE) {
814                         media_filter_destroy(filter);
815                         return false;
816                 }
817
818                 media_content_debug("artist : [%s]", artist);
819                 SAFE_FREE(artist);
820
821                 if (media_album_get_album_art(album, &album_art) != MEDIA_CONTENT_ERROR_NONE) {
822                         media_filter_destroy(filter);
823                         return false;
824                 }
825
826                 media_content_debug("album_art : [%s]", album_art);
827                 SAFE_FREE(album_art);
828
829                 if (media_album_get_media_count_from_db(album_id, filter, &media_count) != MEDIA_CONTENT_ERROR_NONE) {
830                         media_filter_destroy(filter);
831                         return false;
832                 }
833
834                 media_content_debug("media_count : [%d]", media_count);
835
836                 if (media_album_foreach_media_from_db(album_id, filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE) {
837                         media_filter_destroy(filter);
838                         return false;
839                 }
840
841                 test_album_from_db(album_id);
842         } else {
843                 media_content_error("album item not Found!!");
844         }
845
846         media_filter_destroy(filter);
847
848         return true;
849 }
850
851 bool group_list_cb(const char *group_name, void *user_data)
852 {
853         int media_count = 0;
854         int *idx = user_data;
855
856         media_content_debug("group item : [%s] [%d]", group_name, *idx);
857
858         if (media_group_get_media_count_from_db(group_name, *idx, g_filter, &media_count) != MEDIA_CONTENT_ERROR_NONE)
859                 return false;
860
861         media_content_debug("media_count : [%d]", media_count);
862
863         if (media_group_foreach_media_from_db(group_name, *idx, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE)
864                 return false;
865
866         return true;
867 }
868
869 bool playlist_item_cb(int playlist_member_id, media_info_h media, void *user_data)
870 {
871         media_content_debug("playlist_member_id : [%d]", playlist_member_id);
872         /* 64bit build issue */
873 #if 0
874         GList **list = (GList**)user_data;
875
876         *list = g_list_append(*list, (gpointer)playlist_member_id);
877 #endif
878         /*media_item_cb(media, user_data);*/
879
880         return true;
881 }
882
883 int test_filter_create(void)
884 {
885         media_content_debug("\n============Filter Create============\n\n");
886
887         int ret = MEDIA_CONTENT_ERROR_NONE;
888
889         /* Filter for media */
890         const char *condition = "MEDIA_TYPE=3"; /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
891         /*const char *condition = "MEDIA_TYPE IS NOT 0 AND MEDIA_DESCRIPTION IS NOT NULL"; */   /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
892
893         ret = media_filter_create(&g_filter);
894
895         /* Set condition and collate
896          * Condition string : You can make where statement of sql.
897          * Colation : You can use collation when comparing.
898          * Ex) In case of FILE_NAME='Samsung' as condition string,
899          *      if you want to compare with NOCASE collation,
900          *      call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
901          *      if you want to compare in case-sensitive,
902          *      call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
903          */
904         ret = media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
905
906         /* Collation of ordering
907          * If you want to get list, which is sorted by NOCASE,
908          * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_NOCASE);
909          * Or,
910          * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
911          */
912         /* Able to set multi column to set order */
913 #if 0
914         ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, "MEDIA_MODIFIED_TIME, MEDIA_DISPLAY_NAME", MEDIA_CONTENT_COLLATE_DEFAULT);
915         ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
916         ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TRACK_NUM_INT, MEDIA_CONTENT_COLLATE_DEFAULT);
917         ret = media_filter_set_storage(g_filter, "cfbf3d2c-71c5-4611-bccc-7cbac890146e");
918
919         /* Filter for group */
920         const char *g_condition = "TAG_NAME like \"\%my\%\"";
921         const char *g_condition = "BOOKMARK_MARKED_TIME > 300";
922 #endif
923         ret = media_filter_create(&g_filter_g);
924
925         ret = media_filter_set_order(g_filter_g, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
926
927         return ret;
928 }
929
930 int test_filter_destroy(void)
931 {
932         media_content_debug("\n============Filter Create============\n\n");
933
934         int ret = MEDIA_CONTENT_ERROR_NONE;
935
936         ret = media_filter_destroy(g_filter);
937
938         return ret;
939 }
940
941 int test_connect_database(void)
942 {
943         int ret = MEDIA_CONTENT_ERROR_NONE;
944
945         media_content_debug("\n============DB Connection Test============\n\n");
946
947         ret = media_content_connect();
948
949         if (ret == MEDIA_CONTENT_ERROR_NONE)
950                 media_content_debug("connection is success\n\n");
951         else
952                 media_content_error("connection is failed\n\n");
953
954         return ret;
955 }
956
957 int test_gallery_scenario(void)
958 {
959         int ret = MEDIA_CONTENT_ERROR_NONE;
960         unsigned int i = 0;
961         filter_h filter = NULL;
962
963         int count;
964         GList *folder_list = NULL;
965         media_folder_h folder_handle = NULL;
966
967         /* First, Get folder list */
968         ret = media_folder_foreach_folder_from_db(filter, gallery_folder_list_cb, &folder_list);
969         if (ret != MEDIA_CONTENT_ERROR_NONE) {
970                 media_content_error("media_folder_foreach_folder_from_db failed: %d", ret);
971                 return -1;
972         } else {
973                 media_content_debug("media_folder_foreach_folder_from_db success!!");
974                 char *folder_id = NULL;
975                 char *folder_name = NULL;
976                 char *folder_path = NULL;
977
978                 for (i = 0; i < g_list_length(folder_list); i++) {
979                         folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
980
981                         ret = media_folder_get_folder_id(folder_handle, &folder_id);
982                         if (ret != MEDIA_CONTENT_ERROR_NONE)
983                                 media_content_error("media_folder_get_folder_id failed: %d", ret);
984                         ret = media_folder_get_name(folder_handle, &folder_name);
985                         if (ret != MEDIA_CONTENT_ERROR_NONE)
986                                 media_content_error("media_folder_get_name failed: %d", ret);
987                         ret = media_folder_get_path(folder_handle, &folder_path);
988                         if (ret != MEDIA_CONTENT_ERROR_NONE)
989                                 media_content_error("media_folder_get_path failed: %d", ret);
990
991                         media_content_debug("folder_id [%d] : %s", i, folder_id);
992                         media_content_debug("folder_name [%d] : %s", i, folder_name);
993                         media_content_debug("folder_path [%d] : %s", i, folder_path);
994
995                         ret = media_folder_get_media_count_from_db(folder_id, filter, &count);
996                         /* User should free these string */
997                         SAFE_FREE(folder_id);
998                         SAFE_FREE(folder_name);
999                         SAFE_FREE(folder_path);
1000                         if (ret != MEDIA_CONTENT_ERROR_NONE) {
1001                                 media_content_error("media_folder_get_media_count_from_db failed: %d", ret);
1002                                 return -1;
1003                         } else {
1004                                 media_content_debug("media count [%d] : %d", i, count);
1005                         }
1006                 }
1007         }
1008
1009         /* To check performance */
1010         struct timeval start, end;
1011         gettimeofday(&start, NULL);
1012
1013         /* Second, Get all item list */
1014         media_info_h media_handle = NULL;
1015         GList *all_item_list = NULL;
1016
1017         media_content_collation_e collate_type = MEDIA_CONTENT_COLLATE_NOCASE;
1018         media_content_order_e order_type = MEDIA_CONTENT_ORDER_DESC;
1019         ret = media_filter_create(&filter);
1020         if (ret != MEDIA_CONTENT_ERROR_NONE) {
1021                 media_content_error("Fail to create filter");
1022                 return ret;
1023         }
1024         ret = media_filter_set_condition(filter, "MEDIA_TYPE = 0", collate_type);
1025         if (ret != MEDIA_CONTENT_ERROR_NONE) {
1026                 media_filter_destroy(filter);
1027                 media_content_error("Fail to set condition");
1028                 return ret;
1029         }
1030         ret = media_filter_set_order(filter, order_type, MEDIA_DISPLAY_NAME, collate_type);
1031         if (ret != MEDIA_CONTENT_ERROR_NONE) {
1032                 media_filter_destroy(filter);
1033                 media_content_error("Fail to set order");
1034                 return ret;
1035         }
1036
1037         ret = media_info_foreach_media_from_db(filter, gallery_media_item_cb, &all_item_list);
1038         if (ret != MEDIA_CONTENT_ERROR_NONE) {
1039                 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
1040                 media_filter_destroy(filter);
1041                 return -1;
1042         } else {
1043                 media_content_debug("media_info_foreach_media_from_db success");
1044                 media_content_type_e media_type;
1045                 char *media_id = NULL;
1046                 char *media_name = NULL;
1047                 char *media_path = NULL;
1048
1049                 for (i = 0; i < g_list_length(all_item_list); i++) {
1050                         media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
1051
1052                         ret = media_info_get_media_id(media_handle, &media_id);
1053                         if (ret != MEDIA_CONTENT_ERROR_NONE)
1054                                 media_content_error("media_info_get_media_id failed: %d", ret);
1055                         ret = media_info_get_media_type(media_handle, &media_type);
1056                         if (ret != MEDIA_CONTENT_ERROR_NONE)
1057                                 media_content_error("media_info_get_media_type failed: %d", ret);
1058                         ret = media_info_get_display_name(media_handle, &media_name);
1059                         if (ret != MEDIA_CONTENT_ERROR_NONE)
1060                                 media_content_error("media_info_get_display_name failed: %d", ret);
1061                         ret = media_info_get_file_path(media_handle, &media_path);
1062                         if (ret != MEDIA_CONTENT_ERROR_NONE)
1063                                 media_content_error("media_info_get_file_path failed: %d", ret);
1064
1065                         if (media_type == MEDIA_CONTENT_TYPE_IMAGE) {
1066                                 image_meta_h image_handle;
1067                                 int width = 0, height = 0;
1068                                 media_content_orientation_e orientation = 0;
1069                                 char *datetaken = NULL;
1070                                 char *burst_id = NULL;
1071
1072                                 ret = media_info_get_image(media_handle, &image_handle);
1073                                 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1074                                         media_content_error("media_info_get_image failed: %d", ret);
1075                                 } else {
1076                                         ret = image_meta_get_width(image_handle, &width);
1077                                         if (ret != MEDIA_CONTENT_ERROR_NONE)
1078                                                 media_content_error("error image_meta_get_width : [%d]", ret);
1079                                         ret = image_meta_get_height(image_handle, &height);
1080                                         if (ret != MEDIA_CONTENT_ERROR_NONE)
1081                                                 media_content_error("error image_meta_get_height : [%d]", ret);
1082                                         ret = image_meta_get_orientation(image_handle, &orientation);
1083                                         if (ret != MEDIA_CONTENT_ERROR_NONE)
1084                                                 media_content_error("error image_meta_get_orientation : [%d]", ret);
1085                                         ret = image_meta_get_date_taken(image_handle, &datetaken);
1086                                         if (ret != MEDIA_CONTENT_ERROR_NONE)
1087                                                 media_content_error("error image_meta_get_date_taken : [%d]", ret);
1088                                         ret = image_meta_get_burst_id(image_handle, &burst_id);
1089                                         if (ret != MEDIA_CONTENT_ERROR_NONE)
1090                                                 media_content_error("error image_meta_get_burst_id : [%d]", ret);
1091
1092                                         media_content_debug("This is Image");
1093                                         media_content_debug("Width : %d, Height : %d, Orientation : %d, Date taken : %s", width, height, orientation, datetaken);
1094                                 }
1095
1096                                 SAFE_FREE(datetaken);
1097                                 SAFE_FREE(burst_id);
1098                                 ret = image_meta_destroy(image_handle);
1099                                 if (ret != MEDIA_CONTENT_ERROR_NONE)
1100                                         media_content_error("error image_meta_destroy : [%d]", ret);
1101
1102                         } else if (media_type == MEDIA_CONTENT_TYPE_VIDEO) {
1103                                 video_meta_h video_handle;
1104                                 char *title = NULL, *artist = NULL, *album = NULL, *album_artist = NULL;
1105                                 int duration = 0;
1106                                 time_t time_played = 0;
1107
1108                                 ret = media_info_get_video(media_handle, &video_handle);
1109                                 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1110                                         media_content_error("media_info_get_video failed: %d", ret);
1111                                 } else {
1112                                         ret = video_meta_get_artist(video_handle, &artist);
1113                                         if (ret != MEDIA_CONTENT_ERROR_NONE)
1114                                                 media_content_error("error video_meta_get_artist : [%d]", ret);
1115                                         ret = video_meta_get_album(video_handle, &album);
1116                                         if (ret != MEDIA_CONTENT_ERROR_NONE)
1117                                                 media_content_error("error video_meta_get_album : [%d]", ret);
1118                                         ret = video_meta_get_album_artist(video_handle, &album_artist);
1119                                         if (ret != MEDIA_CONTENT_ERROR_NONE)
1120                                                 media_content_error("error video_meta_get_album_artist : [%d]", ret);
1121                                         ret = video_meta_get_duration(video_handle, &duration);
1122                                         if (ret != MEDIA_CONTENT_ERROR_NONE)
1123                                                 media_content_error("error video_meta_get_duration : [%d]", ret);
1124                                         ret = video_meta_get_played_time(video_handle, &time_played);
1125                                         if (ret != MEDIA_CONTENT_ERROR_NONE)
1126                                                 media_content_error("error video_meta_get_played_time : [%d]", ret);
1127
1128                                         media_content_debug("This is Video");
1129                                         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);
1130                                 }
1131
1132                                 SAFE_FREE(title);
1133                                 SAFE_FREE(artist);
1134                                 SAFE_FREE(album);
1135                                 SAFE_FREE(album_artist);
1136
1137                                 ret = video_meta_destroy(video_handle);
1138                                 if (ret != MEDIA_CONTENT_ERROR_NONE)
1139                                         media_content_error("error video_meta_destroy : [%d]", ret);
1140                         }
1141
1142                         SAFE_FREE(media_id);
1143                         SAFE_FREE(media_name);
1144                         SAFE_FREE(media_path);
1145                 }
1146         }
1147
1148         media_filter_destroy(filter);
1149         filter = NULL;
1150
1151         /* To check performance */
1152         gettimeofday(&end, NULL);
1153         long time = (end.tv_sec * 1000000 + end.tv_usec) - (start.tv_sec * 1000000 + start.tv_usec);
1154         media_content_debug("Time : %ld\n", time);
1155
1156         /* Third, Get item list of a folder */
1157         GList *item_list = NULL;
1158
1159         for (i = 0; i < g_list_length(folder_list); i++) {
1160                 unsigned int j = 0;
1161                 char *folder_id = NULL;
1162                 char *folder_name = NULL;
1163                 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1164
1165                 media_folder_get_folder_id(folder_handle, &folder_id);
1166                 media_folder_get_name(folder_handle, &folder_name);
1167
1168                 ret = media_folder_foreach_media_from_db(folder_id, filter, gallery_media_item_cb, &item_list);
1169                 SAFE_FREE(folder_id);
1170                 SAFE_FREE(folder_name);
1171
1172                 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1173                         media_content_error("media_folder_foreach_media_from_db failed: %d", ret);
1174                         return -1;
1175                 } else {
1176                         media_content_error("media_folder_foreach_media_from_db success!", ret);
1177                         char *media_id = NULL;
1178                         char *media_name = NULL;
1179                         char *media_path = NULL;
1180                         media_content_type_e media_type = 0;
1181
1182                         for (j = 0; j < g_list_length(item_list); j++) {
1183                                 media_handle = (media_info_h)g_list_nth_data(item_list, j);
1184
1185                                 ret = media_info_get_media_id(media_handle, &media_id);
1186                                 if (ret != MEDIA_CONTENT_ERROR_NONE)
1187                                         media_content_error("media_info_get_media_id failed: %d", ret);
1188                                 ret = media_info_get_display_name(media_handle, &media_name);
1189                                 if (ret != MEDIA_CONTENT_ERROR_NONE)
1190                                         media_content_error("media_info_get_display_name failed: %d", ret);
1191                                 ret = media_info_get_file_path(media_handle, &media_path);
1192                                 if (ret != MEDIA_CONTENT_ERROR_NONE)
1193                                         media_content_error("media_info_get_file_path failed: %d", ret);
1194                                 ret = media_info_get_media_type(media_handle, &media_type);
1195                                 if (ret != MEDIA_CONTENT_ERROR_NONE)
1196                                         media_content_error("media_info_get_media_type failed: %d", ret);
1197
1198                                 media_content_debug("[%s] media_id [%d] : %s", folder_name, j, media_id);
1199                                 media_content_debug("[%s] media_type [%d] : %d", folder_name, j, media_type);
1200                                 media_content_debug("[%s] media_name [%d] : %s", folder_name, j, media_name);
1201                                 media_content_debug("[%s] media_path [%d] : %s", folder_name, j, media_path);
1202
1203                                 if (media_type == MEDIA_CONTENT_TYPE_IMAGE) {
1204                                         image_meta_h image_handle;
1205                                         int width = 0, height = 0;
1206                                         media_content_orientation_e orientation = 0;
1207                                         char *datetaken = NULL;
1208
1209                                         ret = media_info_get_image(media_handle, &image_handle);
1210                                         if (ret != MEDIA_CONTENT_ERROR_NONE) {
1211                                                 media_content_error("media_info_get_image failed: %d", ret);
1212                                         } else {
1213                                                 ret = image_meta_get_width(image_handle, &width);
1214                                                 if (ret != MEDIA_CONTENT_ERROR_NONE)
1215                                                         media_content_error("error image_meta_get_width : [%d]", ret);
1216                                                 ret = image_meta_get_height(image_handle, &height);
1217                                                 if (ret != MEDIA_CONTENT_ERROR_NONE)
1218                                                         media_content_error("error image_meta_get_height : [%d]", ret);
1219                                                 ret = image_meta_get_orientation(image_handle, &orientation);
1220                                                 if (ret != MEDIA_CONTENT_ERROR_NONE)
1221                                                         media_content_error("error image_meta_get_orientation : [%d]", ret);
1222                                                 ret = image_meta_get_date_taken(image_handle, &datetaken);
1223                                                 if (ret != MEDIA_CONTENT_ERROR_NONE)
1224                                                         media_content_error("error image_meta_get_date_taken : [%d]", ret);
1225
1226                                                 media_content_debug("This is Image");
1227                                                 media_content_debug("Width : %d, Height : %d, Orientation : %d, Date taken : %s", width, height, orientation, datetaken);
1228                                         }
1229
1230                                         SAFE_FREE(datetaken);
1231                                         ret = image_meta_destroy(image_handle);
1232                                         if (ret != MEDIA_CONTENT_ERROR_NONE)
1233                                                 media_content_error("error image_meta_destroy : [%d]", ret);
1234
1235                                 } else if (media_type == MEDIA_CONTENT_TYPE_VIDEO) {
1236                                         video_meta_h video_handle;
1237                                         char *title = NULL, *artist = NULL, *album = NULL, *album_artist = NULL;;
1238                                         int duration = 0;
1239                                         time_t time_played;
1240
1241                                         ret = media_info_get_video(media_handle, &video_handle);
1242                                         if (ret != MEDIA_CONTENT_ERROR_NONE) {
1243                                                 media_content_error("media_info_get_video failed: %d", ret);
1244                                         } else {
1245                                                 ret = video_meta_get_artist(video_handle, &artist);
1246                                                 if (ret != MEDIA_CONTENT_ERROR_NONE)
1247                                                         media_content_error("error video_meta_get_artist : [%d]", ret);
1248                                                 ret = video_meta_get_album(video_handle, &album);
1249                                                 if (ret != MEDIA_CONTENT_ERROR_NONE)
1250                                                         media_content_error("error video_meta_get_album : [%d]", ret);
1251                                                 ret = video_meta_get_album_artist(video_handle, &album_artist);
1252                                                 if (ret != MEDIA_CONTENT_ERROR_NONE)
1253                                                         media_content_error("error video_meta_get_album_artist : [%d]", ret);
1254                                                 ret = video_meta_get_duration(video_handle, &duration);
1255                                                 if (ret != MEDIA_CONTENT_ERROR_NONE)
1256                                                         media_content_error("error video_meta_get_duration : [%d]", ret);
1257                                                 ret = video_meta_get_played_time(video_handle, &time_played);
1258                                                 if (ret != MEDIA_CONTENT_ERROR_NONE)
1259                                                         media_content_error("error video_meta_get_played_time : [%d]", ret);
1260
1261                                                 media_content_debug("This is Video");
1262                                                 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);
1263                                         }
1264
1265                                         SAFE_FREE(title);
1266                                         SAFE_FREE(artist);
1267                                         SAFE_FREE(album);
1268                                         SAFE_FREE(album_artist);
1269
1270                                         ret = video_meta_destroy(video_handle);
1271                                         if (ret != MEDIA_CONTENT_ERROR_NONE)
1272                                                 media_content_error("error video_meta_destroy : [%d]", ret);
1273
1274                                         /* Get bookmar list in case of video */
1275                                         media_bookmark_h bm_handle;
1276                                         GList *bm_list = NULL;
1277
1278                                         ret = media_info_foreach_bookmark_from_db(media_id, filter, gallery_bookmarks_cb, &bm_list);
1279                                         if (ret != MEDIA_CONTENT_ERROR_NONE) {
1280                                                 media_content_error("media_info_foreach_bookmark_from_db failed: %d", ret);
1281                                         } else {
1282                                                 media_content_debug("media_info_foreach_bookmark_from_db success");
1283
1284                                                 unsigned int k = 0;
1285
1286                                                 for (k = 0; k < g_list_length(bm_list); k++) {
1287                                                         bm_handle = (media_bookmark_h)g_list_nth_data(bm_list, k);
1288                                                         time_t marked_time;
1289                                                         char *thumb_path = NULL;
1290
1291                                                         ret = media_bookmark_get_marked_time(bm_handle, &marked_time);
1292                                                         if (ret != MEDIA_CONTENT_ERROR_NONE)
1293                                                                 media_content_error("error media_bookmark_get_marked_time : [%d]", ret);
1294                                                         ret = media_bookmark_get_thumbnail_path(bm_handle, &thumb_path);
1295                                                         if (ret != MEDIA_CONTENT_ERROR_NONE)
1296                                                                 media_content_error("error media_bookmark_get_thumbnail_path : [%d]", ret);
1297
1298                                                         media_content_debug("Bookmark time : %d\nBookmar thumb: %s", marked_time, thumb_path);
1299                                                         SAFE_FREE(thumb_path);
1300                                                 }
1301
1302                                                 /* Remove bookmark list */
1303                                                 unsigned int l = 0;
1304                                                 if (bm_list) {
1305                                                         for (l = 0; l < g_list_length(bm_list); l++) {
1306                                                                 bm_handle = (media_bookmark_h)g_list_nth_data(bm_list, l);
1307                                                                 ret = media_bookmark_destroy(bm_handle);
1308                                                                 if (ret != MEDIA_CONTENT_ERROR_NONE)
1309                                                                         media_content_error("error media_bookmark_destroy : [%d]", ret);
1310                                                         }
1311
1312                                                         g_list_free(bm_list);
1313                                                 }
1314
1315                                         }
1316                                 }
1317
1318                                 SAFE_FREE(media_id);
1319                                 SAFE_FREE(media_name);
1320                                 SAFE_FREE(media_path);
1321                         }
1322                 }
1323         }
1324
1325         /* Get tag list */
1326         media_tag_h tag_handle = NULL;
1327         GList *tag_list = NULL;
1328         GList *media_list_in_tag = NULL;
1329
1330         ret = media_tag_foreach_tag_from_db(filter, gallery_tag_item_cb, &tag_list);
1331
1332         if (ret != MEDIA_CONTENT_ERROR_NONE) {
1333                 media_content_error("media_tag_foreach_tag_from_db failed: %d", ret);
1334                 return -1;
1335         } else {
1336                 media_content_error("media_tag_foreach_tag_from_db success");
1337                 char *tag_name = NULL;
1338                 int tag_id;
1339
1340                 for (i = 0; i < g_list_length(tag_list); i++) {
1341                         tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
1342                         media_tag_get_tag_id(tag_handle, &tag_id);
1343                         media_tag_get_name(tag_handle, &tag_name);
1344
1345                         media_content_debug("[%d] %s", tag_id, tag_name);
1346
1347                         ret = media_tag_foreach_media_from_db(tag_id, filter, gallery_media_item_cb, &media_list_in_tag);
1348                         if (ret != MEDIA_CONTENT_ERROR_NONE) {
1349                                 media_content_error("media_tag_foreach_media_from_db failed: %d", ret);
1350                                 return -1;
1351                         } else {
1352                                 media_content_error("media_tag_foreach_media_from_db success");
1353                                 unsigned int j = 0;
1354                                 media_info_h tag_media_handle;
1355                                 char *media_id = NULL;
1356                                 char *media_name = NULL;
1357                                 char *media_path = NULL;
1358                                 media_content_type_e media_type = 0;
1359
1360                                 for (j = 0; j < g_list_length(media_list_in_tag); j++) {
1361                                         tag_media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, j);
1362                                         ret = media_info_get_media_id(tag_media_handle, &media_id);
1363                                         if (ret != MEDIA_CONTENT_ERROR_NONE)
1364                                                 media_content_error("media_info_get_media_id failed: %d", ret);
1365                                         ret = media_info_get_display_name(tag_media_handle, &media_name);
1366                                         if (ret != MEDIA_CONTENT_ERROR_NONE)
1367                                                 media_content_error("media_info_get_display_name failed: %d", ret);
1368                                         ret = media_info_get_file_path(tag_media_handle, &media_path);
1369                                         if (ret != MEDIA_CONTENT_ERROR_NONE)
1370                                                 media_content_error("media_info_get_file_path failed: %d", ret);
1371                                         ret = media_info_get_media_type(tag_media_handle, &media_type);
1372                                         if (ret != MEDIA_CONTENT_ERROR_NONE)
1373                                                 media_content_error("media_info_get_media_type failed: %d", ret);
1374
1375                                         media_content_debug("[%s] media_id [%d] : %s", tag_name, j, media_id);
1376                                         media_content_debug("[%s] media_type [%d] : %d", tag_name, j, media_type);
1377                                         media_content_debug("[%s] media_name [%d] : %s", tag_name, j, media_name);
1378                                         media_content_debug("[%s] media_path [%d] : %s", tag_name, j, media_path);
1379                                 }
1380                                 SAFE_FREE(media_id);
1381                                 SAFE_FREE(media_name);
1382                                 SAFE_FREE(media_path);
1383                         }
1384                         SAFE_FREE(tag_name);
1385                 }
1386         }
1387
1388         /* Remove folder list */
1389         if (folder_list) {
1390                 for (i = 0; i < g_list_length(folder_list); i++) {
1391                         folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1392                         media_folder_destroy(folder_handle);
1393                 }
1394
1395                 g_list_free(folder_list);
1396         }
1397
1398         /* Remove all items list */
1399         if (all_item_list) {
1400                 for (i = 0; i < g_list_length(all_item_list); i++) {
1401                         media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
1402                         ret = media_info_destroy(media_handle);
1403                         if (ret != MEDIA_CONTENT_ERROR_NONE)
1404                                 media_content_error("media_info_destroy failed: %d", ret);
1405                 }
1406
1407                 g_list_free(all_item_list);
1408         }
1409
1410         /* Remove items list */
1411         if (item_list) {
1412                 for (i = 0; i < g_list_length(item_list); i++) {
1413                         media_handle = (media_info_h)g_list_nth_data(item_list, i);
1414                         ret = media_info_destroy(media_handle);
1415                         if (ret != MEDIA_CONTENT_ERROR_NONE)
1416                                 media_content_error("media_info_destroy failed: %d", ret);
1417                 }
1418
1419                 g_list_free(item_list);
1420         }
1421
1422         /* Remove tag list */
1423         if (tag_list) {
1424                 for (i = 0; i < g_list_length(tag_list); i++) {
1425                         tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
1426                         ret = media_tag_destroy(tag_handle);
1427                         if (ret != MEDIA_CONTENT_ERROR_NONE)
1428                                 media_content_error("error media_tag_destroy : [%d]", ret);
1429                 }
1430
1431                 g_list_free(tag_list);
1432         }
1433
1434         /* Remove media list in a tag */
1435         if (media_list_in_tag) {
1436                 for (i = 0; i < g_list_length(media_list_in_tag); i++) {
1437                         media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, i);
1438                         ret = media_info_destroy(media_handle);
1439                         if (ret != MEDIA_CONTENT_ERROR_NONE)
1440                                 media_content_error("media_info_destroy failed: %d", ret);
1441                 }
1442
1443                 g_list_free(media_list_in_tag);
1444         }
1445
1446         return MEDIA_CONTENT_ERROR_NONE;
1447 }
1448
1449 /*Get All Music file. sort by Title and not case sensitive*/
1450 int test_get_all_music_files(void)
1451 {
1452         int ret = MEDIA_CONTENT_ERROR_NONE;
1453         int media_count = 0;
1454         filter_h filter;
1455
1456         /*Set Filter*/
1457         const char *condition = "MEDIA_TYPE=3"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1458
1459         ret = media_filter_create(&filter);
1460         if (ret != MEDIA_CONTENT_ERROR_NONE) {
1461                 media_content_error("Fail to create filter");
1462                 return ret;
1463         }
1464         ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_LOCALIZED);
1465         if (ret != MEDIA_CONTENT_ERROR_NONE) {
1466                 media_filter_destroy(filter);
1467                 media_content_error("Fail to set condition");
1468                 return ret;
1469         }
1470         ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_LOCALIZED);
1471         if (ret != MEDIA_CONTENT_ERROR_NONE) {
1472                 media_filter_destroy(filter);
1473                 media_content_error("Fail to set order");
1474                 return ret;
1475         }
1476
1477         /*Get Media Count*/
1478         ret = media_info_get_media_count_from_db(filter, &media_count);
1479         if (ret != MEDIA_CONTENT_ERROR_NONE) {
1480                 media_filter_destroy(filter);
1481                 media_content_error("Fail to get media count");
1482                 return ret;
1483         }
1484
1485         media_content_debug("media_count : [%d]", media_count);
1486
1487         ret = media_info_foreach_media_from_db(filter, media_item_cb, NULL);
1488         if (ret != MEDIA_CONTENT_ERROR_NONE) {
1489                 media_filter_destroy(filter);
1490                 media_content_error("Fail to get media");
1491                 return ret;
1492         }
1493
1494         ret = media_filter_destroy(filter);
1495
1496         return ret;
1497 }
1498
1499 int test_media_info_operation(void)
1500 {
1501         int ret = MEDIA_CONTENT_ERROR_NONE;
1502         int media_count = 0;
1503
1504         media_content_debug("\n============Media info Test============\n\n");
1505
1506         test_filter_create();
1507
1508         ret = media_info_get_media_count_from_db(g_filter, &media_count);
1509         if (ret != MEDIA_CONTENT_ERROR_NONE)
1510                 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
1511         else
1512                 media_content_debug("media_count : [%d]", media_count);
1513
1514         ret = media_info_foreach_media_from_db(g_filter, media_item_cb, NULL);
1515         if (ret == MEDIA_CONTENT_ERROR_NONE)
1516                 media_content_debug("media_info_foreach_media_from_db is success");
1517         else
1518                 media_content_error("media_info_foreach_media_from_db is failed");
1519
1520         test_filter_destroy();
1521
1522         return ret;
1523 }
1524
1525 int test_media_info_operation_2(void)
1526 {
1527         int ret = MEDIA_CONTENT_ERROR_NONE;
1528         int bookmark_count = 0;
1529
1530         media_content_debug("\n============Media info Test 2============\n\n");
1531
1532         test_filter_create();
1533
1534 #if 0
1535         /* Bookmark */
1536         char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_CONTENT, "Images and videos/My video clips/teat11.jpg"));
1537         media_bookmark_insert_to_db(test_video_id, 100, thumbnail_path1);
1538         media_bookmark_insert_to_db(test_video_id, 200, thumbnail_path1);
1539
1540         media_info_get_bookmark_count_from_db(test_video_id, g_filter_g, &bookmark_count);
1541
1542         media_content_debug("bookmark_count : [%d]", bookmark_count);
1543
1544         ret = media_info_foreach_bookmark_from_db(test_video_id, g_filter_g, bookmarks_cb, NULL);
1545 #endif
1546
1547         /* Tag */
1548         ret = media_info_get_tag_count_from_db(test_audio_id, g_filter_g, &bookmark_count);
1549         if (ret != MEDIA_CONTENT_ERROR_NONE)
1550                 media_content_error("media_info_get_tag_count_from_db failed: %d", ret);
1551         else
1552                 media_content_debug("tag_count : [%d]", bookmark_count);
1553
1554         ret = media_info_foreach_tag_from_db(test_audio_id, g_filter_g, tag_list_cb, NULL);
1555         if (ret != MEDIA_CONTENT_ERROR_NONE)
1556                 media_content_error("media_info_foreach_tag_from_db failed: %d", ret);
1557
1558         test_filter_destroy();
1559
1560         return ret;
1561 }
1562
1563 int test_folder_operation(void)
1564 {
1565         int ret = MEDIA_CONTENT_ERROR_NONE;
1566         filter_h filter = NULL;
1567         media_folder_h folder = NULL;
1568         char *folder_id = NULL;
1569         int count = 0;
1570
1571         media_content_debug("\n============Folder Test============\n\n");
1572
1573         test_filter_create();
1574
1575         ret = media_filter_create(&filter);
1576         if (ret != MEDIA_CONTENT_ERROR_NONE) {
1577                 media_content_error("[ERROR] media_folder_filter_create is failed");
1578                 return ret;
1579         }
1580
1581         media_filter_set_condition(filter, "(MEDIA_TYPE = 0 or MEDIA_TYPE = 1) and MEDIA_STORAGE_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);       /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
1582         media_filter_set_offset(filter, 0, 5);
1583         media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1584         media_filter_set_storage(filter, "cfbf3d2c-71c5-4611-bccc-7cbac890146e");
1585
1586         ret = media_folder_get_folder_count_from_db(filter, &count);
1587         media_content_debug("Folder count : [%d]", count);
1588
1589         ret = media_folder_foreach_folder_from_db(filter, folder_list_cb, &folder);
1590
1591         filter_h m_filter = NULL;
1592
1593         ret = media_filter_create(&m_filter);
1594         if (ret != MEDIA_CONTENT_ERROR_NONE) {
1595                 test_filter_destroy();
1596                 media_filter_destroy(filter);
1597                 media_content_error("[ERROR] media_info_filter_create is failed");
1598                 return ret;
1599         }
1600
1601         media_filter_set_condition(m_filter, "MEDIA_TYPE=1 and MEDIA_STORAGE_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);   /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
1602         media_filter_set_offset(m_filter, 0, 5);
1603         media_filter_set_order(m_filter, MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1604
1605         ret = media_folder_foreach_media_from_db(folder_id, m_filter, media_item_cb, NULL);
1606         if (ret != MEDIA_CONTENT_ERROR_NONE)
1607                 media_content_error("[ERROR] media_folder_foreach_media_from_db is failed, error code : %d", ret);
1608
1609         media_filter_destroy(filter);
1610         media_filter_destroy(m_filter);
1611
1612         test_filter_destroy();
1613
1614         /* fix prevent: Resource Leak */
1615         SAFE_FREE(folder_id);
1616
1617         return ret;
1618 }
1619
1620 bool folder_update_cb(media_folder_h folder, void *user_data)
1621 {
1622         char *folder_id = NULL;
1623         char *folder_path = NULL;
1624         char *folder_name = NULL;
1625         int folder_order = -1;
1626         bool ret = true;
1627
1628         if (folder != NULL) {
1629                 ret = media_folder_get_folder_id(folder, &folder_id);
1630                 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1631                 media_content_debug("folder_id = [%s]", folder_id);
1632                 SAFE_FREE(folder_id);
1633
1634                 ret = media_folder_get_path(folder, &folder_path);
1635                 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1636                 media_content_debug("folder_path = [%s]", folder_path);
1637                 SAFE_FREE(folder_path);
1638
1639                 ret = media_folder_get_name(folder, &folder_name);
1640                 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1641                 media_content_debug("folder_name = [%s]", folder_name);
1642                 SAFE_FREE(folder_name);
1643
1644                 ret = media_folder_get_order(folder, &folder_order);
1645                 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1646                 media_content_debug("folder_order = [%d]", folder_order);
1647
1648                 ret = media_folder_clone(&g_folder, folder);
1649                 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1650
1651                 ret = true;
1652         } else {
1653                 ret = false;
1654         }
1655
1656         return ret;
1657 }
1658
1659
1660 int test_folder_update(void)
1661 {
1662         int ret = MEDIA_CONTENT_ERROR_NONE;
1663         filter_h filter;
1664         int folder_count = 0;
1665
1666         media_content_debug("\n============Folder Update Test============\n\n");
1667
1668         ret = media_filter_create(&filter);
1669         media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1670
1671         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*/
1672         ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, FOLDER_ORDER, MEDIA_CONTENT_COLLATE_NOCASE);
1673
1674         ret = media_folder_get_folder_count_from_db(filter, &folder_count);
1675
1676         media_content_debug("Folder count : %d", folder_count);
1677
1678         ret = media_folder_foreach_folder_from_db(filter, folder_update_cb, NULL);
1679
1680         media_filter_destroy(filter);
1681
1682         ret = media_folder_set_name(g_folder, "test_folder");
1683
1684         ret = media_folder_set_order(g_folder, 200);
1685
1686         ret = media_folder_update_to_db(g_folder);
1687
1688         ret = media_folder_destroy(g_folder);
1689
1690         return ret;
1691 }
1692
1693 int test_playlist_operation(void)
1694 {
1695         int ret = MEDIA_CONTENT_ERROR_NONE;
1696         media_playlist_h playlist_1 = NULL;
1697         media_playlist_h playlist_2 = NULL;
1698         media_playlist_h playlist_3 = NULL;
1699         media_playlist_h playlist_4 = NULL;
1700         int playlist_id_1 = 0;
1701         int playlist_id_2 = 0;
1702         int playlist_id_3 = 0;
1703         const char *playlist_name_1 = "myPlaylist_1";
1704         const char *playlist_name_2 = "myPlaylist_2";
1705         const char *playlist_name_3 = "myPlaylist_3";
1706         int playlist_count = 0;
1707         int media_count = 0;
1708         int order_1 = 0;
1709         int order_2 = 0;
1710         int order_3 = 0;
1711         int order_4 = 0;
1712         int order_5 = 0;
1713         filter_h filter = NULL;
1714         filter_h m_filter = NULL;
1715
1716         media_content_debug("\n============Playlist Test============\n\n");
1717
1718         /* Filter for playlist */
1719
1720         const char *condition = "(MEDIA_TYPE=1 or MEDIA_TYPE=3)";       /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1721
1722         ret = media_filter_create(&filter);
1723         ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
1724         ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_NAME, MEDIA_CONTENT_COLLATE_NOCASE);
1725
1726         /* Create Playlist */
1727         media_playlist_insert_to_db(playlist_name_1, &playlist_1);
1728         media_playlist_insert_to_db(playlist_name_2, &playlist_2);
1729         media_playlist_insert_to_db(playlist_name_3, &playlist_3);
1730
1731         if (playlist_1 != NULL) {
1732                 /* Add media to Playlist */
1733                 media_playlist_add_media(playlist_1, test_audio_id);
1734                 media_playlist_add_media(playlist_1, test_audio_id);
1735                 media_playlist_add_media(playlist_1, test_video_id);
1736
1737                 #if 0
1738                 char *playlist_thumb_path = tzplatform_mkpath(TZ_USER_CONTENT, "Images/Default.jpg"));
1739                 media_playlist_set_thumbnail_path(playlist_1, playlist_thumb_path);
1740                 #endif
1741
1742                 media_playlist_update_to_db(playlist_1);
1743         }
1744
1745         if (playlist_2 != NULL) {
1746                 media_playlist_add_media(playlist_2, test_audio_id);
1747                 media_playlist_add_media(playlist_2, test_audio_id);
1748                 media_playlist_update_to_db(playlist_2);
1749         }
1750
1751         /* Get Playlist Count*/
1752         ret = media_playlist_get_playlist_count_from_db(filter, &playlist_count);
1753         if (ret == 0)
1754                 media_content_debug("playlist_count [%d]", playlist_count);
1755
1756         /* Get Playlist*/
1757         GList *playlist_id_list = NULL;
1758         media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, &playlist_id_list);
1759         /* 64bit build issue */
1760 #if 0
1761         /* Get Playlist id*/
1762         playlist_id_1 = (int)g_list_nth_data(playlist_id_list, 0);
1763         playlist_id_2 = (int)g_list_nth_data(playlist_id_list, 1);
1764         playlist_id_3 = (int)g_list_nth_data(playlist_id_list, 2);
1765 #endif
1766         media_content_debug("playlist_id_1 [%d]", playlist_id_1);
1767         media_content_debug("playlist_id_2 [%d]", playlist_id_2);
1768         media_content_debug("playlist_id_3 [%d]", playlist_id_3);
1769
1770         /* Export and import playlist */
1771         media_playlist_export_to_file(playlist_3, "/opt/usr/media/Music/playlist.m3u");
1772         media_playlist_import_from_file("/opt/usr/media/Music/playlist.m3u", "playlist_4", &playlist_4);
1773
1774         /* Filter for media*/
1775         ret = media_filter_create(&m_filter);
1776
1777         ret = media_filter_set_condition(m_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1778
1779         ret = media_filter_set_order(m_filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_MEMBER_ORDER, MEDIA_CONTENT_COLLATE_DEFAULT);
1780
1781         /* Get media count */
1782         media_playlist_get_media_count_from_db(playlist_id_1, m_filter, &media_count);
1783         media_content_debug("playlist_1_media_count [%d]", media_count);
1784
1785         media_playlist_get_media_count_from_db(playlist_id_2, m_filter, &media_count);
1786         media_content_debug("playlist_2_media_count [%d]", media_count);
1787
1788         media_playlist_get_media_count_from_db(playlist_id_3, m_filter, &media_count);
1789         media_content_debug("playlist_3_media_count [%d]", media_count);
1790
1791         /* Get media of playlist */
1792         GList *playlist_member_id_list = NULL;
1793         GList *playlist_member_id_list_1 = NULL;
1794
1795         media_playlist_foreach_media_from_db(playlist_id_1, m_filter, playlist_item_cb, &playlist_member_id_list);
1796         media_playlist_foreach_media_from_db(playlist_id_2, m_filter, playlist_item_cb, &playlist_member_id_list_1);
1797
1798         int playlist_member_id_1_1 = 0;
1799         int playlist_member_id_1_2 = 0;
1800         int playlist_member_id_1_3 = 0;
1801         int playlist_member_id_2_1 = 0;
1802         int playlist_member_id_2_2 = 0;
1803         /* 64bit build issue */
1804 #if 0
1805         playlist_member_id_1_1 = (int)g_list_nth_data(playlist_member_id_list, 0);
1806         playlist_member_id_1_2 = (int)g_list_nth_data(playlist_member_id_list, 1);
1807         playlist_member_id_1_3 = (int)g_list_nth_data(playlist_member_id_list, 2);
1808         playlist_member_id_2_1 = (int)g_list_nth_data(playlist_member_id_list_1, 0);
1809         playlist_member_id_2_2 = (int)g_list_nth_data(playlist_member_id_list_1, 1);
1810 #endif
1811         media_content_debug("playlist_member_id_1_1 [%d]", playlist_member_id_1_1);
1812         media_content_debug("playlist_member_id_1_2 [%d]", playlist_member_id_1_2);
1813         media_content_debug("playlist_member_id_1_3 [%d]", playlist_member_id_1_3);
1814         media_content_debug("playlist_member_id_2_1 [%d]", playlist_member_id_2_1);
1815         media_content_debug("playlist_member_id_2_2 [%d]", playlist_member_id_2_2);
1816
1817         media_playlist_get_play_order(playlist_1, playlist_member_id_1_1, &order_1);
1818         media_playlist_get_play_order(playlist_1, playlist_member_id_1_2, &order_2);
1819         media_playlist_get_play_order(playlist_1, playlist_member_id_1_3, &order_3);
1820         media_playlist_get_play_order(playlist_2, playlist_member_id_2_1, &order_4);
1821         media_playlist_get_play_order(playlist_2, playlist_member_id_2_2, &order_5);
1822         media_content_debug("order_1 [%d] order_2 [%d] order_3 [%d] order_4 [%d] order_5 [%d]", order_1, order_2, order_3, order_4, order_5);
1823
1824         /* Update Playlist */
1825         media_playlist_remove_media(playlist_2, playlist_member_id_2_1);
1826         media_playlist_add_media(playlist_2, test_video_id);
1827         media_playlist_set_name(playlist_2, "test_playlist");
1828         media_playlist_set_play_order(playlist_2, playlist_member_id_2_2, order_5+100);
1829         media_playlist_update_to_db(playlist_2);
1830
1831         /* Get Updated Playlist*/
1832         media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, NULL);
1833
1834         /* deletes the playlist */
1835 #if 0
1836         media_playlist_delete_from_db(playlist_id_1);
1837         media_playlist_delete_from_db(playlist_id_2);
1838 #endif
1839
1840         if (playlist_1 != NULL)
1841                 media_playlist_destroy(playlist_1);
1842         if (playlist_2 != NULL)
1843                 media_playlist_destroy(playlist_2);
1844         if (playlist_3 != NULL)
1845                 media_playlist_destroy(playlist_3);
1846         if (playlist_4 != NULL)
1847                 media_playlist_destroy(playlist_4);
1848
1849         g_list_free(playlist_id_list);
1850         g_list_free(playlist_member_id_list);
1851         g_list_free(playlist_member_id_list_1);
1852
1853         if (filter != NULL)
1854                 ret = media_filter_destroy(filter);
1855         if (m_filter != NULL)
1856                 ret = media_filter_destroy(m_filter);
1857
1858         return ret;
1859 }
1860
1861 int test_tag_operation(void)
1862 {
1863         int ret = MEDIA_CONTENT_ERROR_NONE;
1864         media_tag_h tag_1;
1865         media_tag_h tag_2;
1866         media_tag_h tag_3;
1867         int tag_id_1 = 0;
1868         int tag_id_2 = 0;
1869         int tag_id_3 = 0;
1870         const char *tag_name_1 = "myTag_1";
1871         const char *tag_name_2 = "myTag_2";
1872         const char *tag_name_3 = "myTag_3";
1873         int tag_count = 0;
1874         int media_count = 0;
1875         filter_h filter;
1876
1877         media_content_debug("\n============Tag Test============\n\n");
1878
1879         const char *g_condition = "TAG_NAME like \"%%my%%\"";
1880
1881         ret = media_filter_create(&filter);
1882
1883         ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1884
1885         ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
1886
1887         /* Create Tag */
1888         ret = media_tag_insert_to_db(tag_name_1, &tag_1);
1889         if (ret != MEDIA_CONTENT_ERROR_NONE)
1890                 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1891         ret = media_tag_insert_to_db(tag_name_2, &tag_2);
1892         if (ret != MEDIA_CONTENT_ERROR_NONE)
1893                 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1894         ret = media_tag_insert_to_db(tag_name_3, &tag_3);
1895         if (ret != MEDIA_CONTENT_ERROR_NONE)
1896                 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1897
1898         /* Add media to Tag */
1899         ret = media_tag_add_media(tag_1, test_audio_id);
1900         if (ret != MEDIA_CONTENT_ERROR_NONE)
1901                 media_content_error("error media_tag_add_media : [%d]", ret);
1902         ret = media_tag_add_media(tag_1, test_video_id);
1903         if (ret != MEDIA_CONTENT_ERROR_NONE)
1904                 media_content_error("error media_tag_add_media : [%d]", ret);
1905         ret = media_tag_update_to_db(tag_1);
1906         if (ret != MEDIA_CONTENT_ERROR_NONE)
1907                 media_content_error("error media_tag_update_to_db : [%d]", ret);
1908
1909         ret = media_tag_add_media(tag_2, test_audio_id);
1910         if (ret != MEDIA_CONTENT_ERROR_NONE)
1911                 media_content_error("error media_tag_add_media : [%d]", ret);
1912         ret = media_tag_update_to_db(tag_2);
1913         if (ret != MEDIA_CONTENT_ERROR_NONE)
1914                 media_content_error("error media_tag_update_to_db : [%d]", ret);
1915
1916         /* Get Tag Count*/
1917         ret = media_tag_get_tag_count_from_db(filter, &tag_count);
1918         if (ret != MEDIA_CONTENT_ERROR_NONE)
1919                 media_content_error("error media_tag_get_tag_count_from_db : [%d]", ret);
1920         else
1921                 media_content_debug("tag_count [%d]", tag_count);
1922
1923         /* Get Tag*/
1924         ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
1925         if (ret != MEDIA_CONTENT_ERROR_NONE)
1926                 media_content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
1927
1928         /* Get Tag id*/
1929         ret = media_tag_get_tag_id(tag_1, &tag_id_1);
1930         if (ret != MEDIA_CONTENT_ERROR_NONE)
1931                 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1932         else
1933                 media_content_debug("tag_id_1 [%d]", tag_id_1);
1934
1935         ret = media_tag_get_tag_id(tag_2, &tag_id_2);
1936         if (ret != MEDIA_CONTENT_ERROR_NONE)
1937                 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1938         else
1939                 media_content_debug("tag_id_2 [%d]", tag_id_2);
1940
1941         ret = media_tag_get_tag_id(tag_3, &tag_id_3);
1942         if (ret != MEDIA_CONTENT_ERROR_NONE)
1943                 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1944         else
1945                 media_content_debug("tag_id_3 [%d]", tag_id_3);
1946
1947         /* Get media count */
1948         ret = media_tag_get_media_count_from_db(tag_id_1, NULL, &media_count);
1949         if (ret != MEDIA_CONTENT_ERROR_NONE)
1950                 media_content_error("error media_tag_get_media_count_from_db : [%d]", ret);
1951         else
1952                 media_content_debug("tag_1_media_count [%d]", media_count);
1953
1954         ret = media_tag_get_media_count_from_db(tag_id_2, NULL, &media_count);
1955         if (ret != MEDIA_CONTENT_ERROR_NONE)
1956                 media_content_error("error media_tag_get_media_count_from_db : [%d]", ret);
1957         else
1958                 media_content_debug("tag_2_media_count [%d]", media_count);
1959
1960         /* Get media of Tag */
1961         ret = media_tag_foreach_media_from_db(tag_id_1, NULL, media_item_cb, NULL);
1962         if (ret != MEDIA_CONTENT_ERROR_NONE)
1963                 media_content_error("error media_tag_foreach_media_from_db : [%d]", ret);
1964
1965         ret = media_tag_foreach_media_from_db(tag_id_2, NULL, media_item_cb, NULL);
1966         if (ret != MEDIA_CONTENT_ERROR_NONE)
1967                 media_content_error("error media_tag_foreach_media_from_db : [%d]", ret);
1968
1969         /* Update Tag */
1970         ret = media_tag_add_media(tag_2, test_video_id);
1971         if (ret != MEDIA_CONTENT_ERROR_NONE)
1972                 media_content_error("error media_tag_add_media : [%d]", ret);
1973         ret = media_tag_set_name(tag_2, (char *)"test_tag");
1974         if (ret != MEDIA_CONTENT_ERROR_NONE)
1975                 media_content_error("error media_tag_set_name : [%d]", ret);
1976         ret = media_tag_update_to_db(tag_2);
1977         if (ret != MEDIA_CONTENT_ERROR_NONE)
1978                 media_content_error("error media_tag_update_to_db : [%d]", ret);
1979
1980         /* Get Updated Tag*/
1981         ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
1982         if (ret != MEDIA_CONTENT_ERROR_NONE)
1983                 media_content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
1984
1985         /* deletes the tag */
1986         ret = media_tag_delete_from_db(tag_id_1);
1987         if (ret != MEDIA_CONTENT_ERROR_NONE)
1988                 media_content_error("error media_tag_delete_from_db : [%d]", ret);
1989         ret = media_tag_delete_from_db(tag_id_2);
1990         if (ret != MEDIA_CONTENT_ERROR_NONE)
1991                 media_content_error("error media_tag_delete_from_db : [%d]", ret);
1992
1993         ret = media_tag_destroy(tag_1);
1994         if (ret != MEDIA_CONTENT_ERROR_NONE)
1995                 media_content_error("error media_tag_destroy : [%d]", ret);
1996         ret = media_tag_destroy(tag_2);
1997         if (ret != MEDIA_CONTENT_ERROR_NONE)
1998                 media_content_error("error media_tag_destroy : [%d]", ret);
1999         ret = media_filter_destroy(filter);
2000         if (ret != MEDIA_CONTENT_ERROR_NONE)
2001                 media_content_error("error media_filter_destroy : [%d]", ret);
2002
2003         return ret;
2004 }
2005
2006
2007 int test_bookmark_operation(void)
2008 {
2009         /* bookmark is only supported for video information. */
2010         int ret = MEDIA_CONTENT_ERROR_NONE;
2011         int bookmark_count = 0;
2012         filter_h filter;
2013
2014         media_content_debug("\n============Bookmark Test============\n\n");
2015
2016         const char *g_condition = "BOOKMARK_MARKED_TIME > 300";
2017
2018         ret = media_filter_create(&filter);
2019         if (ret != MEDIA_CONTENT_ERROR_NONE)
2020                 media_content_error("error media_filter_create : [%d]", ret);
2021
2022         ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2023         if (ret != MEDIA_CONTENT_ERROR_NONE)
2024                 media_content_error("error media_filter_set_condition : [%d]", ret);
2025
2026         ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, BOOKMARK_MARKED_TIME, MEDIA_CONTENT_COLLATE_DEFAULT);
2027         if (ret != MEDIA_CONTENT_ERROR_NONE)
2028                 media_content_error("error media_filter_set_order : [%d]", ret);
2029
2030         /* insert bookmark to video */
2031         const char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_CONTENT, "Images and videos/My video clips/teat11.jpg");
2032         ret = media_bookmark_insert_to_db(test_video_id, 400, thumbnail_path1);
2033         if (ret != MEDIA_CONTENT_ERROR_NONE)
2034                 media_content_error("error media_bookmark_insert_to_db : [%d]", ret);
2035
2036         ret = media_bookmark_insert_to_db(test_video_id, 600, thumbnail_path1);
2037         if (ret != MEDIA_CONTENT_ERROR_NONE)
2038                 media_content_error("error media_bookmark_insert_to_db : [%d]", ret);
2039
2040         ret = media_bookmark_get_bookmark_count_from_db(filter, &bookmark_count);
2041         if (ret != MEDIA_CONTENT_ERROR_NONE)
2042                 media_content_error("error media_bookmark_get_bookmark_count_from_db : [%d]", ret);
2043         else
2044                 media_content_debug("bookmark_count = [%d]", bookmark_count);
2045
2046         ret = media_filter_destroy(filter);
2047         if (ret != MEDIA_CONTENT_ERROR_NONE)
2048                 media_content_error("error media_filter_destroy : [%d]", ret);
2049
2050         return ret;
2051 }
2052
2053 int test_album_list(void)
2054 {
2055         media_content_debug("\n============Album Test============\n\n");
2056
2057         int ret = MEDIA_CONTENT_ERROR_NONE;
2058         int album_count = 0;
2059         filter_h filter;
2060
2061         /*Set Filter*/
2062         const char *condition = "MEDIA_TYPE=3"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
2063
2064         ret = media_filter_create(&filter);
2065         if (ret != MEDIA_CONTENT_ERROR_NONE) {
2066                 media_content_error("Fail to create filter");
2067                 return ret;
2068         }
2069         ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2070         if (ret != MEDIA_CONTENT_ERROR_NONE) {
2071                 media_filter_destroy(filter);
2072                 media_content_error("Fail to set condition");
2073                 return ret;
2074         }
2075         ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ALBUM, MEDIA_CONTENT_COLLATE_NOCASE);
2076         if (ret != MEDIA_CONTENT_ERROR_NONE) {
2077                 media_filter_destroy(filter);
2078                 media_content_error("Fail to set order");
2079                 return ret;
2080         }
2081
2082         ret = media_album_get_album_count_from_db(filter, &album_count);
2083         if (ret != MEDIA_CONTENT_ERROR_NONE) {
2084                 media_filter_destroy(filter);
2085                 return ret;
2086         } else {
2087                 media_content_debug("album_count [%d]", album_count);
2088         }
2089
2090         ret = media_album_foreach_album_from_db(filter, album_list_cb, NULL);
2091         if (ret != MEDIA_CONTENT_ERROR_NONE)
2092                 media_content_error("error media_album_foreach_album_from_db : [%d]", ret);
2093
2094         ret = media_filter_destroy(filter);
2095         if (ret != MEDIA_CONTENT_ERROR_NONE)
2096                 media_content_error("error media_filter_destroy : [%d]", ret);
2097
2098         return ret;
2099 }
2100
2101 int test_group_operation(void)
2102 {
2103         media_content_debug("\n============Group Test============\n\n");
2104
2105         int ret = MEDIA_CONTENT_ERROR_NONE;
2106         int group_count = 0;
2107         int idx = 0;
2108
2109         ret = test_filter_create();
2110         if (ret != MEDIA_CONTENT_ERROR_NONE) {
2111                 media_content_error("[error(0x%08x)", ret);
2112                 return ret;
2113         }
2114
2115         for (idx = 0; idx < MEDIA_CONTENT_GROUP_MAX; idx++) {
2116                 ret = media_group_get_group_count_from_db(g_filter, idx, &group_count);
2117                 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2118                         test_filter_destroy();
2119                         media_content_error("media_group_get_group_count_from_db fail. idx=[%d]", ret, idx);
2120                         return ret;
2121                 } else {
2122                         media_content_debug("[%2d]group_count [%d]", idx, group_count);
2123                 }
2124
2125                 ret = media_group_foreach_group_from_db(g_filter, idx, group_list_cb, &idx);
2126         }
2127         ret = test_filter_destroy();
2128
2129         return ret;
2130 }
2131
2132 int test_update_operation()
2133 {
2134         int ret = MEDIA_CONTENT_ERROR_NONE;
2135         unsigned int i = 0;
2136         media_info_h media_handle = NULL;
2137         GList *all_item_list = NULL;
2138
2139         /* Get all item list */
2140         ret = media_info_foreach_media_from_db(NULL, gallery_media_item_cb, &all_item_list);
2141         if (ret != MEDIA_CONTENT_ERROR_NONE) {
2142                 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
2143                 return -1;
2144         } else {
2145                 media_content_debug("media_info_foreach_media_from_db success");
2146                 char *media_id = NULL;
2147                 char *media_path = NULL;
2148                 media_content_type_e media_type = 0;
2149
2150                 for (i = 0; i < g_list_length(all_item_list); i++) {
2151                         media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
2152
2153                         ret = media_info_get_media_id(media_handle, &media_id);
2154                         if (ret != MEDIA_CONTENT_ERROR_NONE)
2155                                 media_content_error("media_info_get_media_id failed: %d", ret);
2156                         ret = media_info_get_file_path(media_handle, &media_path);
2157                         if (ret != MEDIA_CONTENT_ERROR_NONE)
2158                                 media_content_error("media_info_get_file_path failed: %d", ret);
2159                         ret = media_info_get_media_type(media_handle, &media_type);
2160                         if (ret != MEDIA_CONTENT_ERROR_NONE)
2161                                 media_content_error("media_info_get_media_type failed: %d", ret);
2162
2163                         media_content_debug("media_id [%d] : %s", i, media_id);
2164                         media_content_debug("media_type [%d] : %d", i, media_type);
2165                         media_content_debug("media_path [%d] : %s", i, media_path);
2166 #if 0
2167                         if (media_type == MEDIA_CONTENT_TYPE_IMAGE) {
2168                                 image_meta_h image_handle;
2169                                 media_content_orientation_e orientation;
2170
2171                                 ret = media_info_get_image(media_handle, &image_handle);
2172                                 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2173                                         media_content_error("media_info_get_image failed: %d", ret);
2174                                 } else {
2175                                         media_content_debug("media_info_get_image success");
2176
2177                                         /* update image meta */
2178                                         orientation = MEDIA_CONTENT_ORIENTATION_ROT_180;
2179                                         image_meta_set_orientation(image_handle, orientation);
2180
2181                                         ret = image_meta_update_to_db(image_handle);
2182                                         if (ret != MEDIA_CONTENT_ERROR_NONE)
2183                                                 media_content_error("image_meta_update_to_db failed: %d", ret);
2184                                         else
2185                                                 media_content_debug("image_meta_update_to_db success");
2186                                 }
2187
2188                         } else if (media_type == MEDIA_CONTENT_TYPE_VIDEO) {
2189                                 video_meta_h video_handle;
2190
2191                                 ret = media_info_get_video(media_handle, &video_handle);
2192                                 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2193                                         media_content_error("media_info_get_video failed: %d", ret);
2194                                 } else {
2195                                         media_content_debug("media_info_get_video success");
2196
2197                                         /* update video meta */
2198                                         video_meta_set_played_count(video_handle, 5);
2199                                         video_meta_set_played_time(video_handle, 5);
2200                                         video_meta_set_played_position(video_handle, 5);
2201                                         video_meta_update_to_db(video_handle);
2202
2203                                         ret = video_meta_update_to_db(video_handle);
2204                                         if (ret != MEDIA_CONTENT_ERROR_NONE)
2205                                                 media_content_error("video_meta_update_to_db failed: %d", ret);
2206                                         else
2207                                                 media_content_debug("video_meta_update_to_db success");
2208                                 }
2209                         } else if (media_type == MEDIA_CONTENT_TYPE_MUSIC) {
2210                                 audio_meta_h audio_handle = NULL;
2211                                 ret = media_info_get_audio(media_handle, &audio_handle);
2212                                 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2213                                         media_content_error("media_info_get_audio failed: %d", ret);
2214                                 } else {
2215                                         media_content_debug("media_info_get_audio success");
2216
2217                                         audio_meta_set_played_count(audio_handle, 5);
2218                                         audio_meta_set_played_time(audio_handle, 1000);
2219                                         audio_meta_set_played_position(audio_handle, 180);
2220
2221                                         ret = audio_meta_update_to_db(audio_handle);
2222                                         if (ret != MEDIA_CONTENT_ERROR_NONE)
2223                                                 media_content_error("audio_meta_update_to_db failed: %d", ret);
2224                                         else
2225                                                 media_content_debug("audio_meta_update_to_db success");
2226                                 }
2227
2228                         }
2229 #endif
2230                 }
2231
2232                 /* fix prevent: Resource Leak */
2233                 SAFE_FREE(media_id);
2234                 SAFE_FREE(media_path);
2235         }
2236
2237         return MEDIA_CONTENT_ERROR_NONE;
2238 }
2239
2240 int test_insert(void)
2241 {
2242         int ret = MEDIA_CONTENT_ERROR_NONE;
2243         const char *path = "/opt/usr/media/Images/Default.jpg";
2244 #if 0
2245         const char *path = "/opt/usr/media/Others/other.txt";
2246         char *path = NULL;
2247 #endif
2248         media_info_h media_item = NULL;
2249         media_content_debug("\n============DB Insert Test============\n\n");
2250
2251         ret = media_info_insert_to_db(path, &media_item);
2252
2253         if ((ret == MEDIA_CONTENT_ERROR_NONE) && (media_item != NULL)) {
2254                 media_content_debug("Insertion is success");
2255         } else {
2256                 media_content_error("Insertion is failed");
2257                 ret = media_info_destroy(media_item);
2258                 return ret;
2259         }
2260
2261         char *media_id = NULL;
2262
2263         ret = media_info_get_media_id(media_item, &media_id);
2264         if (ret != MEDIA_CONTENT_ERROR_NONE)
2265                 media_content_error("media_info_get_media_id failed: %d", ret);
2266         else
2267                 media_content_debug("Media ID: %s", media_id);
2268
2269         SAFE_FREE(media_id);
2270
2271         ret = media_info_update_to_db(media_item);
2272         if (ret == MEDIA_CONTENT_ERROR_NONE)
2273                 media_content_debug("media_info_update_to_db is success");
2274         else
2275                 media_content_error("media_info_update_to_db is failed");
2276
2277         ret = media_info_destroy(media_item);
2278         if (ret != MEDIA_CONTENT_ERROR_NONE)
2279                 media_content_error("media_info_destroy failed: %d", ret);
2280
2281         return ret;
2282 }
2283
2284 int test_move(void)
2285 {
2286         int ret = MEDIA_CONTENT_ERROR_NONE;
2287         const char *move_media_id = "60aea677-4742-408e-b5f7-f2628062d06d";
2288         const char *dst_path = tzplatform_mkpath(TZ_USER_CONTENT, "Images/XX/Default1.jpg");
2289         media_info_h move_media = NULL;
2290
2291         ret = media_info_get_media_from_db(move_media_id, &move_media);
2292         if (ret == MEDIA_CONTENT_ERROR_NONE)
2293                 media_content_debug("media_info_get_media_from_db success");
2294         else
2295                 media_content_error("media_info_get_media_from_db failed: %d", ret);
2296
2297         media_content_debug("\n============DB Move Test============\n\n");
2298
2299         if (move_media) {
2300                 ret = media_info_move_to_db(move_media, dst_path);
2301
2302                 if (ret == MEDIA_CONTENT_ERROR_NONE)
2303                         media_content_debug("Move is success");
2304                 else
2305                         media_content_error("Move is failed");
2306
2307                 ret = media_info_destroy(move_media);
2308         } else {
2309                 media_content_debug("There is no item : %s", move_media_id);
2310         }
2311
2312         return ret;
2313 }
2314
2315 void thumbnail_completed_cb(media_content_error_e error, const char *path, void *user_data)
2316 {
2317         char *thumbnail_path = NULL;
2318         int ret = MEDIA_CONTENT_ERROR_NONE;
2319         g_cnt++;
2320
2321         media_content_debug("=================[%d][%d]", g_media_cnt, g_cnt);
2322         media_content_debug("error_code [%d]", error);
2323         media_content_debug("thumbnail_path [%s]", path);
2324         if (user_data != NULL) {
2325                 media_info_h media = (media_info_h)user_data;
2326                 ret = media_info_get_thumbnail_path(media, &thumbnail_path);
2327                 if (ret != MEDIA_CONTENT_ERROR_NONE)
2328                         media_content_error("media_info_get_thumbnail_path failed: %d", ret);
2329                 else
2330                         media_content_debug("thumbnail_path get from media[%s]", thumbnail_path);
2331                 SAFE_FREE(thumbnail_path);
2332                 ret = media_info_destroy(media);
2333                 if (ret != MEDIA_CONTENT_ERROR_NONE)
2334                         media_content_error("media_info_destroy failed: %d", ret);
2335         }
2336
2337         if (g_cnt == g_media_cnt)
2338                 g_main_loop_quit(g_loop);
2339
2340         return;
2341 }
2342
2343 bool thumbnail_create_cb(media_info_h media, void *user_data)
2344 {
2345         char *media_id = NULL;
2346         media_info_h dst = NULL;
2347         int ret = MEDIA_CONTENT_ERROR_NONE;
2348
2349         if (media == NULL) {
2350                 media_content_debug("NO Item");
2351                 return true;
2352         }
2353
2354         ret = media_info_get_media_id(media, &media_id);
2355         if (ret != MEDIA_CONTENT_ERROR_NONE)
2356                 media_content_error("media_info_get_media_id failed: %d", ret);
2357         else
2358                 media_content_debug("media_id : [%s]", media_id);
2359
2360         ret = media_info_clone(&dst, media);
2361         if (ret != MEDIA_CONTENT_ERROR_NONE)
2362                 media_content_error("media_info_clone failed: %d", ret);
2363         else {
2364                 ret = media_info_create_thumbnail(dst, thumbnail_completed_cb, dst);
2365                 if (ret != MEDIA_CONTENT_ERROR_NONE)
2366                         media_content_error("media_info_create_thumbnail failed: %d", ret);
2367         }
2368
2369         /* fix prevent: Resource leak */
2370         SAFE_FREE(media_id);
2371
2372         return true;
2373 }
2374
2375 bool thumbnail_cancel_cb(media_info_h media, void *user_data)
2376 {
2377         int ret = MEDIA_CONTENT_ERROR_NONE;
2378
2379         char *media_id = NULL;
2380         media_info_h dst = NULL;
2381
2382         g_cnt++;
2383
2384         if (media == NULL) {
2385                 media_content_debug("NO Item");
2386                 return true;
2387         }
2388
2389         ret = media_info_get_media_id(media, &media_id);
2390         if (ret != MEDIA_CONTENT_ERROR_NONE)
2391                 media_content_error("media_info_get_media_id failed: %d", ret);
2392         else
2393                 media_content_debug("media_id : [%s]", media_id);
2394
2395         ret = media_info_clone(&dst, media);
2396         if (ret != MEDIA_CONTENT_ERROR_NONE)
2397                 media_content_error("media_info_clone failed: %d", ret);
2398
2399         ret = media_info_cancel_thumbnail(dst);
2400         if (ret != MEDIA_CONTENT_ERROR_NONE)
2401                 media_content_error("media_info_cancel_thumbnail failed: %d", ret);
2402
2403         ret = media_info_destroy(dst);
2404         if (ret != MEDIA_CONTENT_ERROR_NONE)
2405                         media_content_error("media_info_destroy failed: %d", ret);
2406
2407         if (g_cnt == g_media_cnt)
2408                 g_main_loop_quit(g_loop);
2409
2410         /* fix prevent: Resource leak */
2411         SAFE_FREE(media_id);
2412
2413         return true;
2414 }
2415
2416 gboolean create_thumbnail_start(gpointer data)
2417 {
2418         int ret = MEDIA_CONTENT_ERROR_NONE;
2419
2420         ret = media_info_foreach_media_from_db(g_filter, thumbnail_create_cb, NULL);
2421
2422         if (ret == MEDIA_CONTENT_ERROR_NONE)
2423                 media_content_debug("media_info_foreach_media_from_db is success");
2424         else
2425                 media_content_error("media_info_foreach_media_from_db is failed");
2426
2427         return false;
2428 }
2429
2430 gboolean cancel_thumbnail_start(gpointer data)
2431 {
2432         int ret = MEDIA_CONTENT_ERROR_NONE;
2433
2434         ret = media_info_foreach_media_from_db(g_filter, thumbnail_cancel_cb, NULL);
2435
2436         if (ret == MEDIA_CONTENT_ERROR_NONE)
2437                 media_content_debug("media_info_foreach_media_from_db is success");
2438         else
2439                 media_content_error("media_info_foreach_media_from_db is failed");
2440
2441         return false;
2442 }
2443
2444 int test_create_thumbnail(int cancel)
2445 {
2446         int ret = MEDIA_CONTENT_ERROR_NONE;
2447         GSource *source = NULL;
2448         GMainContext *context = NULL;
2449
2450         test_filter_create();
2451
2452         ret = media_info_get_media_count_from_db(g_filter, &g_media_cnt);
2453         if (ret != MEDIA_CONTENT_ERROR_NONE)
2454                 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
2455         else
2456                 media_content_debug("media_count : [%d]", g_media_cnt);
2457
2458         g_loop = g_main_loop_new(NULL, FALSE);
2459         context = g_main_loop_get_context(g_loop);
2460         source = g_idle_source_new();
2461         g_source_set_callback(source, create_thumbnail_start, NULL, NULL);
2462         g_source_attach(source, context);
2463
2464         /* Logic to cancel */
2465         if (cancel) {
2466                 GSource *cancel_src = NULL;
2467                 cancel_src = g_idle_source_new();
2468                 g_source_set_callback(cancel_src, cancel_thumbnail_start, NULL, NULL);
2469                 g_source_attach(cancel_src, context);
2470         }
2471
2472         g_main_loop_run(g_loop);
2473         g_main_loop_unref(g_loop);
2474
2475         test_filter_destroy();
2476
2477         return ret;
2478 }
2479
2480 bool face_cb(media_face_h face, void *user_data)
2481 {
2482         if (user_data != NULL) {
2483                 unsigned x, y, rect_w, rect_h;
2484                 media_face_get_face_rect(face, &x, &y, &rect_w, &rect_h);
2485                 media_content_debug("face(%p) x = %d, y = %d [%d, %d]", face, x, y, rect_w, rect_h);
2486                 return TRUE;
2487         }
2488         return FALSE;
2489 }
2490
2491 void face_detection_complete_cb(media_content_error_e error, int count, void *user_data)
2492 {
2493         int ret = MEDIA_CONTENT_ERROR_NONE;
2494         g_cnt++;
2495
2496         media_content_debug("=================[%d][%d]", g_media_cnt, g_cnt);
2497         media_content_debug("error_code [%d]", error);
2498         media_content_debug("face_count [%d]", count);
2499         if (count == 0) {
2500                 media_content_debug("No faces are detected!");
2501         } else if (user_data != NULL) {
2502                 media_info_h media = (media_info_h)user_data;
2503                 char *media_id = NULL;
2504                 ret = media_info_get_media_id(media, &media_id);
2505                 if (ret != MEDIA_CONTENT_ERROR_NONE)
2506                         media_content_error("media_info_get_media_id failed: %d", ret);
2507                 if (media_id != NULL) {
2508                         ret = media_info_foreach_face_from_db(media_id, NULL, face_cb, NULL);
2509                         if (ret != MEDIA_CONTENT_ERROR_NONE)
2510                                 media_content_error("media_info_foreach_face_from_db failed: %d", ret);
2511                 }
2512                 ret = media_info_destroy(media);
2513                 if (ret != MEDIA_CONTENT_ERROR_NONE)
2514                         media_content_error("media_info_destroy failed: %d", ret);
2515         }
2516
2517         if (g_cnt == g_media_cnt)
2518                 g_main_loop_quit(g_loop);
2519
2520         return;
2521 }
2522
2523 bool start_face_detection_cb(media_info_h media, void *user_data)
2524 {
2525         char *media_id = NULL;
2526         media_info_h dst = NULL;
2527         int ret = MEDIA_CONTENT_ERROR_NONE;
2528
2529         if (media == NULL) {
2530                 media_content_debug("NO Item");
2531                 return true;
2532         }
2533
2534         ret = media_info_get_media_id(media, &media_id);
2535         if (ret != MEDIA_CONTENT_ERROR_NONE)
2536                 media_content_error("media_info_get_media_id failed: %d", ret);
2537         else
2538                 media_content_debug("media_id : [%s]", media_id);
2539
2540         ret = media_info_clone(&dst, media);
2541         if (ret != MEDIA_CONTENT_ERROR_NONE)
2542                 media_content_error("media_info_clone failed: %d", ret);
2543         else {
2544                 ret = media_info_start_face_detection(dst, face_detection_complete_cb, dst);
2545                 if (ret != MEDIA_CONTENT_ERROR_NONE)
2546                         media_content_error("media_info_start_face_detection failed: %d", ret);
2547         }
2548
2549         /* fix prevent: Resource leak */
2550         SAFE_FREE(media_id);
2551
2552         return true;
2553 }
2554
2555 bool cancel_face_detection_cb(media_info_h media, void *user_data)
2556 {
2557         int ret = MEDIA_CONTENT_ERROR_NONE;
2558
2559         char *media_id = NULL;
2560         media_info_h dst = NULL;
2561
2562         g_cnt++;
2563
2564         if (media == NULL) {
2565                 media_content_debug("NO Item");
2566                 return true;
2567         }
2568
2569         ret = media_info_get_media_id(media, &media_id);
2570         if (ret != MEDIA_CONTENT_ERROR_NONE)
2571                 media_content_error("media_info_get_media_id failed: %d", ret);
2572         else
2573                 media_content_debug("media_id : [%s]", media_id);
2574
2575         ret = media_info_clone(&dst, media);
2576         if (ret != MEDIA_CONTENT_ERROR_NONE)
2577                 media_content_error("media_info_clone failed: %d", ret);
2578
2579         ret = media_info_cancel_face_detection(dst);
2580         if (ret != MEDIA_CONTENT_ERROR_NONE)
2581                 media_content_error("media_info_cancel_face_detection failed: %d", ret);
2582
2583         ret = media_info_destroy(dst);
2584         if (ret != MEDIA_CONTENT_ERROR_NONE)
2585                         media_content_error("media_info_destroy failed: %d", ret);
2586
2587         if (g_cnt == g_media_cnt)
2588                 g_main_loop_quit(g_loop);
2589
2590         /* fix prevent: Resource leak */
2591         SAFE_FREE(media_id);
2592
2593         return true;
2594 }
2595
2596 gboolean face_detection_start(gpointer data)
2597 {
2598         int ret = MEDIA_CONTENT_ERROR_NONE;
2599
2600         ret = media_info_foreach_media_from_db(g_filter, start_face_detection_cb, NULL);
2601
2602         if (ret == MEDIA_CONTENT_ERROR_NONE)
2603                 media_content_debug("media_info_foreach_media_from_db is success");
2604         else
2605                 media_content_error("media_info_foreach_media_from_db is failed");
2606
2607         return false;
2608 }
2609
2610 gboolean face_detection_cancel(gpointer data)
2611 {
2612         int ret = MEDIA_CONTENT_ERROR_NONE;
2613
2614         ret = media_info_foreach_media_from_db(g_filter, cancel_face_detection_cb, NULL);
2615
2616         if (ret == MEDIA_CONTENT_ERROR_NONE)
2617                 media_content_debug("media_info_foreach_media_from_db is success");
2618         else
2619                 media_content_error("media_info_foreach_media_from_db is failed");
2620
2621         return false;
2622 }
2623
2624 int test_start_face_detection(int cancel)
2625 {
2626         int ret = MEDIA_CONTENT_ERROR_NONE;
2627         GSource *source = NULL;
2628         GMainContext *context = NULL;
2629
2630         test_filter_create();
2631
2632         ret = media_info_get_media_count_from_db(g_filter, &g_media_cnt);
2633         if (ret != MEDIA_CONTENT_ERROR_NONE)
2634                 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
2635         else
2636                 media_content_debug("media_count : [%d]", g_media_cnt);
2637
2638         if (g_media_cnt == 0)
2639                 goto END;
2640
2641         g_loop = g_main_loop_new(NULL, FALSE);
2642         context = g_main_loop_get_context(g_loop);
2643         source = g_idle_source_new();
2644         g_source_set_callback(source, face_detection_start, NULL, NULL);
2645         g_source_attach(source, context);
2646
2647         /* Logic to cancel */
2648         if (cancel) {
2649                 GSource *cancel_src = NULL;
2650                 cancel_src = g_idle_source_new();
2651                 g_source_set_callback(cancel_src, face_detection_cancel, NULL, NULL);
2652                 g_source_attach(cancel_src, context);
2653         }
2654
2655         g_main_loop_run(g_loop);
2656         g_main_loop_unref(g_loop);
2657
2658 END:
2659         test_filter_destroy();
2660
2661         return ret;
2662 }
2663
2664 int test_disconnect_database(void)
2665 {
2666         int ret = MEDIA_CONTENT_ERROR_NONE;
2667         media_content_debug("\n============DB Disconnection Test============\n\n");
2668
2669         ret = media_content_disconnect();
2670
2671         if (ret == MEDIA_CONTENT_ERROR_NONE)
2672                 media_content_debug("disconnection is success");
2673         else
2674                 media_content_error("disconnection is failed");
2675
2676         return ret;
2677 }
2678
2679 int test_request_update_db(void)
2680 {
2681         int ret = MEDIA_CONTENT_ERROR_NONE;
2682         media_info_h media = NULL;
2683         char *content_name = NULL;
2684         bool favorite = FALSE;
2685
2686         ret = media_info_get_media_from_db("71b19196-5b38-4ab1-ab34-bfe05c369614", &media);
2687         if (ret != MEDIA_CONTENT_ERROR_NONE)
2688                 media_content_error("media_info_get_media_from_db failed: %d", ret);
2689
2690         ret = media_info_set_content_name(media, "TEST_content_name");
2691         if (ret != MEDIA_CONTENT_ERROR_NONE)
2692                 media_content_error("media_info_set_content_name failed: %d", ret);
2693
2694         ret = media_info_set_favorite(media, TRUE);
2695         if (ret != MEDIA_CONTENT_ERROR_NONE)
2696                 media_content_error("media_info_set_favorite failed: %d", ret);
2697
2698         ret = media_info_update_to_db(media);
2699         if (ret == MEDIA_CONTENT_ERROR_NONE)
2700                 media_content_debug("media_info_update_to_db is success");
2701         else
2702                 media_content_error("media_info_update_to_db is failed");
2703
2704         if (media != NULL)
2705                 media_info_destroy(media);
2706
2707         /*get the updated value*/
2708         ret = media_info_get_media_from_db("71b19196-5b38-4ab1-ab34-bfe05c369614", &media);
2709         if (ret != MEDIA_CONTENT_ERROR_NONE)
2710                 media_content_error("media_info_get_media_from_db failed: %d", ret);
2711
2712         ret = media_info_get_content_name(media, &content_name);
2713         if (ret != MEDIA_CONTENT_ERROR_NONE)
2714                 media_content_error("media_info_get_content_name failed: %d", ret);
2715         else
2716                 media_content_debug("content name [%s]", content_name);
2717
2718         SAFE_FREE(content_name);
2719
2720         ret = media_info_get_favorite(media, &favorite);
2721         if (ret != MEDIA_CONTENT_ERROR_NONE)
2722                 media_content_error("media_info_get_favorite failed: %d", ret);
2723         else
2724                 media_content_debug("favorite [%d]", favorite);
2725
2726         ret = media_info_destroy(media);
2727
2728         return ret;
2729 }
2730
2731 int g_total_photo_size = 0;
2732 int g_total_video_size = 0;
2733 int g_total_mp3_size = 0;
2734 int g_total_voice_memo_size = 0;
2735
2736 bool dft_cb(media_info_h media, void *user_data)
2737 {
2738         unsigned long long file_size = 0;
2739         media_content_type_e media_type = -1;
2740         char *mime_type = NULL;
2741         int ret = MEDIA_CONTENT_ERROR_NONE;
2742
2743         if (media == NULL)
2744                 return true;
2745
2746         ret = media_info_get_media_type(media, &media_type);
2747         if (ret != MEDIA_CONTENT_ERROR_NONE)
2748                 media_content_error("media_info_get_media_type failed: %d", ret);
2749         ret = media_info_get_size(media, &file_size);
2750         if (ret != MEDIA_CONTENT_ERROR_NONE)
2751                 media_content_error("media_info_get_size failed: %d", ret);
2752         ret = media_info_get_mime_type(media, &mime_type);
2753         if (ret != MEDIA_CONTENT_ERROR_NONE)
2754                 media_content_error("media_info_get_mime_type failed: %d", ret);
2755
2756         if (media_type == MEDIA_CONTENT_TYPE_IMAGE)
2757                 g_total_photo_size += file_size;
2758         else if (media_type == MEDIA_CONTENT_TYPE_VIDEO)
2759                 g_total_video_size += file_size;
2760         else if (media_type == MEDIA_CONTENT_TYPE_SOUND)
2761                 g_total_voice_memo_size += file_size;
2762         else if (media_type == MEDIA_CONTENT_TYPE_MUSIC) {
2763                 if ((mime_type != NULL) && (!strcmp("audio/mpeg", mime_type)))
2764                         g_total_mp3_size += file_size;
2765                 else
2766                         g_total_voice_memo_size += file_size;
2767         } else
2768                 media_content_debug("invalid media_type");
2769
2770         if (mime_type != NULL)
2771                 free(mime_type);
2772
2773         return true;
2774
2775 }
2776
2777 int DFT_test(void)
2778 {
2779         int ret = MEDIA_CONTENT_ERROR_NONE;
2780         media_content_debug("\n============DFT_test============\n\n");
2781
2782         filter_h filter = NULL;
2783         int media_cnt = 0;
2784
2785         /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
2786
2787         ret = media_filter_create(&filter);
2788
2789 /*Internal Memory*/
2790         media_content_debug("[Internal Memory]\n");
2791         /*1. Photo ============================================================*/
2792         ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
2793
2794         /*Get Photo Count*/
2795         ret = media_info_get_media_count_from_db(filter, &media_cnt);
2796         media_content_debug("Photo count = [%d]\n", media_cnt);
2797
2798         /*Get Photo Size*/
2799         ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2800         media_content_debug("Photo size = [%d]\n", g_total_photo_size);
2801
2802         /*2. Video ============================================================*/
2803         ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
2804
2805         /*Get Video Count*/
2806         ret = media_info_get_media_count_from_db(filter, &media_cnt);
2807         media_content_debug("Video count = [%d]\n", media_cnt);
2808
2809         /*Get Video Size*/
2810         ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2811         media_content_debug("Video size = [%d]\n", g_total_video_size);
2812
2813         /*3. MP3 ============================================================*/
2814         ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT);
2815
2816         /*Get MP3 Count*/
2817         ret = media_info_get_media_count_from_db(filter, &media_cnt);
2818         media_content_debug("MP3 count = [%d]\n", media_cnt);
2819
2820         /*Get MP3 Size*/
2821         ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2822         media_content_debug("MP3 size = [%d]\n", g_total_mp3_size);
2823
2824         /*4. Voice Memo ============================================================*/
2825         ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND (MEDIA_MIME_TYPE=\"audio/AMR\" OR MEDIA_MIME_TYPE=\"audio/mp4\")", MEDIA_CONTENT_COLLATE_DEFAULT);
2826
2827         /*Get Voice Memo Count*/
2828         ret = media_info_get_media_count_from_db(filter, &media_cnt);
2829         media_content_debug("Voice Memo count = [%d]\n", media_cnt);
2830
2831         /*Get Voice Memo Size*/
2832         ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2833         media_content_debug("Voice Memo size = [%d]\n", g_total_voice_memo_size);
2834
2835         g_total_photo_size = 0;
2836         g_total_video_size = 0;
2837         g_total_mp3_size = 0;
2838         g_total_voice_memo_size = 0;
2839
2840 /*External Memory*/
2841         media_content_debug("\n[External Memory]\n");
2842         /*1. Photo ============================================================*/
2843         ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
2844
2845         /*Get Photo Count*/
2846         ret = media_info_get_media_count_from_db(filter, &media_cnt);
2847         media_content_debug("Photo count = [%d]\n", media_cnt);
2848
2849         /*Get Photo Size*/
2850         ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2851         media_content_debug("Photo size = [%d]\n", g_total_photo_size);
2852
2853         /*2. Video ============================================================*/
2854         ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
2855
2856         /*Get Video Count*/
2857         ret = media_info_get_media_count_from_db(filter, &media_cnt);
2858         media_content_debug("Video count = [%d]\n", media_cnt);
2859
2860         /*Get Video Size*/
2861         ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2862         media_content_debug("Video size = [%d]\n", g_total_video_size);
2863
2864         /*3. MP3 ============================================================*/
2865         ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT);
2866
2867         /*Get MP3 Count*/
2868         ret = media_info_get_media_count_from_db(filter, &media_cnt);
2869         media_content_debug("MP3 count = [%d]\n", media_cnt);
2870
2871         /*Get MP3 Size*/
2872         ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2873         media_content_debug("MP3 size = [%d]\n", g_total_mp3_size);
2874
2875         /*4. Voice Memo ============================================================*/
2876         ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND (MEDIA_MIME_TYPE=\"audio/AMR\" OR MEDIA_MIME_TYPE=\"audio/mp4\")", MEDIA_CONTENT_COLLATE_DEFAULT);
2877
2878         /*Get Voice Memo Count*/
2879         ret = media_info_get_media_count_from_db(filter, &media_cnt);
2880         media_content_debug("Voice Memo count = [%d]\n", media_cnt);
2881
2882         /*Get Voice Memo Size*/
2883         ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2884         media_content_debug("Voice Memo size = [%d]\n", g_total_voice_memo_size);
2885         ret = media_filter_destroy(filter);
2886
2887         return ret;
2888 }
2889
2890 void insert_batch_cb(media_content_error_e error, void * user_data)
2891 {
2892         media_content_debug("media_info_insert_batch_to_db completed!\n");
2893 }
2894
2895 int test_batch_operations()
2896 {
2897         int ret = -1;
2898         int i;
2899         char *file_list[10];
2900
2901         for (i = 0; i < 10; i++) {
2902                 char filepath[255] = {0,};
2903                 snprintf(filepath, sizeof(filepath), "%s%d.jpg", tzplatform_mkpath(TZ_USER_CONTENT, "test/image"), i+1);
2904                 media_content_debug("File : %s\n", filepath);
2905                 file_list[i] = strdup(filepath);
2906         }
2907
2908         ret = media_info_insert_batch_to_db((const char **)file_list, 10, insert_batch_cb, NULL);
2909         if (ret != MEDIA_CONTENT_ERROR_NONE)
2910                 media_content_error("media_info_insert_batch_to_db failed : %d\n", ret);
2911
2912         filter_h filter;
2913         char *condition = "MEDIA_PATH LIKE \'";
2914         strncat(condition, tzplatform_mkpath(TZ_USER_CONTENT, "test/image%%jpg\'"), 17);
2915         ret = media_filter_create(&filter);
2916         if (ret != MEDIA_CONTENT_ERROR_NONE) {
2917                 media_content_error("Fail to create filter");
2918                 return ret;
2919         }
2920
2921         ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2922         if (ret != MEDIA_CONTENT_ERROR_NONE) {
2923                 media_filter_destroy(filter);
2924                 media_content_error("Fail to set condition");
2925                 return ret;
2926         }
2927
2928         ret = media_info_delete_batch_from_db(filter);
2929         if (ret != MEDIA_CONTENT_ERROR_NONE) {
2930                 media_filter_destroy(filter);
2931                 media_content_error("media_info_delete_batch_from_db failed : %d\n", ret);
2932                 return ret;
2933         }
2934
2935         ret = media_filter_destroy(filter);
2936
2937         return ret;
2938 }
2939
2940 void insert_burst_shot_cb(media_content_error_e error, void * user_data)
2941 {
2942         media_content_debug("media_info_insert_burst_shot_to_db completed![%d]\n", error);
2943         g_main_loop_quit(g_loop);
2944 }
2945
2946 gboolean test_insert_burst_shot_to_db_start(gpointer data)
2947 {
2948         int ret = MEDIA_CONTENT_ERROR_NONE;
2949         int i = 0;
2950         char *file_list[10];
2951
2952         for (i = 0; i < 10; i++) {
2953                 char filepath[255] = {0,};
2954                 snprintf(filepath, sizeof(filepath), "%s%d.jpg", tzplatform_mkpath(TZ_USER_CONTENT, "test/image"), i+1);
2955                 media_content_debug("File : %s\n", filepath);
2956                 file_list[i] = strdup(filepath);
2957         }
2958
2959         ret = media_info_insert_burst_shot_to_db((const char **)file_list, 10, insert_burst_shot_cb, NULL);
2960         if (ret != MEDIA_CONTENT_ERROR_NONE)
2961                 media_content_error("media_info_insert_burst_shot_to_db failed : %d\n", ret);
2962
2963         return ret;
2964 }
2965
2966 int test_insert_burst_shot_to_db(void)
2967 {
2968         GSource *source = NULL;
2969         GMainContext *context = NULL;
2970
2971         g_loop = g_main_loop_new(NULL, FALSE);
2972         context = g_main_loop_get_context(g_loop);
2973         source = g_idle_source_new();
2974         g_source_set_callback(source, test_insert_burst_shot_to_db_start, NULL, NULL);
2975         g_source_attach(source, context);
2976
2977         g_main_loop_run(g_loop);
2978         g_main_loop_unref(g_loop);
2979
2980         return 0;
2981 }
2982
2983 void _scan_cb(media_content_error_e err, void *user_data)
2984 {
2985         media_content_debug("scan callback is called : %d\n", err);
2986         g_main_loop_quit(g_loop);
2987
2988         return;
2989 }
2990
2991 int test_scan_file()
2992 {
2993         int ret = -1;
2994
2995         const char *file_path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
2996         ret = media_content_scan_file(file_path);
2997         if (ret != MEDIA_CONTENT_ERROR_NONE) {
2998                 media_content_error("Fail to media_content_scan_file : %d", ret);
2999                 return ret;
3000         }
3001
3002         return 0;
3003 }
3004
3005 gboolean test_scan_dir_start(gpointer data)
3006 {
3007         int ret = -1;
3008
3009         const char *dir_path = tzplatform_getenv(TZ_USER_CONTENT);
3010
3011         ret = media_content_scan_folder(dir_path, TRUE, _scan_cb, NULL);
3012
3013         if (ret != MEDIA_CONTENT_ERROR_NONE) {
3014                 media_content_error("Fail to test_scan_dir_start : %d", ret);
3015                 return ret;
3016         }
3017
3018         return 0;
3019 }
3020
3021 gboolean cancel_scan_dir_start(gpointer data)
3022 {
3023         int ret = MEDIA_CONTENT_ERROR_NONE;
3024
3025         const char *dir_path = "/opt/usr/media/Images";
3026
3027         ret = media_content_cancel_scan_folder(dir_path);
3028
3029         if (ret == MEDIA_CONTENT_ERROR_NONE)
3030                 media_content_debug("media_content_cancel_scan_folder is success");
3031         else
3032                 media_content_error("media_content_cancel_scan_folder is failed");
3033
3034         return false;
3035 }
3036
3037 int test_scan_dir(int cancel)
3038 {
3039         GSource *source = NULL;
3040         GMainContext *context = NULL;
3041
3042         g_loop = g_main_loop_new(NULL, FALSE);
3043         context = g_main_loop_get_context(g_loop);
3044         source = g_idle_source_new();
3045         g_source_set_callback(source, test_scan_dir_start, NULL, NULL);
3046         g_source_attach(source, context);
3047
3048         if (cancel) {
3049                 GSource *cancel_src = NULL;
3050                 cancel_src = g_idle_source_new();
3051                 g_source_set_callback(cancel_src, cancel_scan_dir_start, NULL, NULL);
3052                 g_source_attach(cancel_src, context);
3053         }
3054
3055         g_main_loop_run(g_loop);
3056         g_main_loop_unref(g_loop);
3057
3058         return 0;
3059 }
3060
3061 void _noti_cb(media_content_error_e error,
3062                                 int pid,
3063                                 media_content_db_update_item_type_e update_item,
3064                                 media_content_db_update_type_e update_type,
3065                                 media_content_type_e media_type,
3066                                 char *uuid,
3067                                 char *path,
3068                                 char *mime_type,
3069                                 void *user_data)
3070 {
3071         if (error == 0)
3072                 media_content_debug("noti success! : %d\n", error);
3073         else
3074                 media_content_debug("error occured! : %d\n", error);
3075
3076         media_content_debug("Noti from PID(%d)\n", pid);
3077
3078         if (update_item == MEDIA_ITEM_FILE)
3079                 media_content_debug("Noti item : MEDIA_ITEM_FILE\n");
3080         else if (update_item == MEDIA_ITEM_DIRECTORY)
3081                 media_content_debug("Noti item : MEDIA_ITEM_DIRECTORY\n");
3082
3083         if (update_type == MEDIA_CONTENT_INSERT)
3084                 media_content_debug("Noti type : MEDIA_CONTENT_INSERT\n");
3085         else if (update_type == MEDIA_CONTENT_DELETE)
3086                 media_content_debug("Noti type : MEDIA_CONTENT_DELETE\n");
3087         else if (update_type == MEDIA_CONTENT_UPDATE)
3088                 media_content_debug("Noti type : MEDIA_CONTENT_UPDATE\n");
3089
3090         media_content_debug("content type : %d\n", media_type);
3091
3092         if (path)
3093                 media_content_debug("path : %s\n", path);
3094         else
3095                 media_content_debug("path not\n");
3096
3097         if (uuid)
3098                 media_content_debug("uuid : %s\n", uuid);
3099         else
3100                 media_content_debug("uuid not\n");
3101
3102         if (mime_type)
3103                 media_content_debug("mime_type : %s\n", mime_type);
3104         else
3105                 media_content_debug("mime not\n");
3106
3107         if (user_data) media_content_debug("String : %s\n", (char *)user_data);
3108
3109         return;
3110 }
3111
3112 void _noti_cb_2(media_content_error_e error,
3113                                 int pid,
3114                                 media_content_db_update_item_type_e update_item,
3115                                 media_content_db_update_type_e update_type,
3116                                 media_content_type_e media_type,
3117                                 char *uuid,
3118                                 char *path,
3119                                 char *mime_type,
3120                                 void *user_data)
3121 {
3122         if (error == 0)
3123                 media_content_debug("noti_2 success! : %d\n", error);
3124         else
3125                 media_content_debug("error occured! : %d\n", error);
3126
3127         media_content_debug("Noti_2 from PID(%d)\n", pid);
3128
3129         g_main_loop_quit(g_loop);
3130         return;
3131 }
3132
3133 static media_content_noti_h noti_h;
3134 static media_content_noti_h noti_h_2;
3135
3136 gboolean _send_noti_operations(gpointer data)
3137 {
3138         int ret = MEDIA_CONTENT_ERROR_NONE;
3139
3140         /* First of all, noti subscription */
3141         char *user_str = strdup("hi");
3142         media_content_add_db_updated_cb(_noti_cb, (void*)user_str, &noti_h);
3143         media_content_add_db_updated_cb(_noti_cb_2, (void*)user_str, &noti_h_2);
3144
3145         /* media_info_insert_to_db */
3146         media_info_h media_item = NULL;
3147         const char *path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
3148
3149         ret = media_info_insert_to_db(path, &media_item);
3150         if (ret != MEDIA_CONTENT_ERROR_NONE) {
3151                 media_content_error("media_info_insert_to_db failed : %d", ret);
3152                 media_info_destroy(media_item);
3153                 return FALSE;
3154         }
3155
3156         media_content_debug("media_info_insert_to_db success");
3157
3158         /* media_info_delete_batch_from_db */
3159         filter_h filter;
3160         char condition[2048] = {0,};
3161         const char *temp = NULL;
3162         temp = tzplatform_mkpath(TZ_USER_CONTENT, "test/image%%\'");
3163         snprintf(condition, sizeof(condition), "MEDIA_PATH LIKE \'%s", temp);
3164
3165         ret = media_filter_create(&filter);
3166         if (ret != MEDIA_CONTENT_ERROR_NONE) {
3167                 media_content_error("Fail to create filter");
3168                 media_info_destroy(media_item);
3169                 return ret;
3170         }
3171
3172         ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
3173         if (ret != MEDIA_CONTENT_ERROR_NONE) {
3174                 media_filter_destroy(filter);
3175                 media_info_destroy(media_item);
3176                 media_content_error("Fail to set condition");
3177                 return ret;
3178         }
3179         ret = media_info_delete_batch_from_db(filter);
3180         if (ret != MEDIA_CONTENT_ERROR_NONE) {
3181                 media_filter_destroy(filter);
3182                 media_info_destroy(media_item);
3183                 media_content_error("media_info_delete_batch_from_db failed : %d\n", ret);
3184                 return ret;
3185         }
3186
3187         media_filter_destroy(filter);
3188
3189         media_content_remove_db_updated_cb(noti_h);
3190
3191         /* media_info_update_to_db */
3192         ret = media_info_update_to_db(media_item);
3193         if (ret != MEDIA_CONTENT_ERROR_NONE) {
3194                 media_content_error("media_info_update_to_db failed : %d\n", ret);
3195                 media_info_destroy(media_item);
3196                 return ret;
3197         }
3198
3199         media_info_destroy(media_item);
3200
3201         return FALSE;
3202 }
3203
3204 int test_noti()
3205 {
3206         int ret = MEDIA_CONTENT_ERROR_NONE;
3207         GSource *source = NULL;
3208         GMainContext *context = NULL;
3209
3210         g_loop = g_main_loop_new(NULL, FALSE);
3211         context = g_main_loop_get_context(g_loop);
3212         source = g_idle_source_new();
3213         g_source_set_callback(source, _send_noti_operations, NULL, NULL);
3214         g_source_attach(source, context);
3215
3216         g_main_loop_run(g_loop);
3217         g_main_loop_unref(g_loop);
3218
3219         test_filter_destroy();
3220         media_content_remove_db_updated_cb(noti_h_2);
3221
3222         return ret;
3223 }
3224
3225 int test_create_handle(void)
3226 {
3227         int ret = MEDIA_CONTENT_ERROR_NONE;
3228         media_info_h media = NULL;
3229         const char *path = "/home/owner/content/test/test.txt";
3230         char *str_value = NULL;
3231         int int_value = -1;
3232         bool bool_value = FALSE;
3233         unsigned long long content_size = 0;
3234         time_t modified_time = 0;
3235         double double_value = 0.0;
3236
3237         ret = media_info_create(path, &media);
3238
3239         ret = media_info_set_title(media, "test_title");
3240         ret = media_info_set_album(media, "test_album");
3241         ret = media_info_set_artist(media, "test_artist");
3242         ret = media_info_set_genre(media, "test_genre");
3243         ret = media_info_set_recorded_date(media, "test_recorded_date");
3244         ret = media_info_set_age_rating(media, "test_age_rating");
3245         ret = media_info_set_author(media, "test_author");
3246         ret = media_info_set_category(media, "test_category");
3247         ret = media_info_set_content_name(media, "test_content_name");
3248         ret = media_info_set_description(media, "test_description");
3249         ret = media_info_set_display_name(media, "test_display_name");
3250         ret = media_info_set_keyword(media, "test_keyword");
3251         ret = media_info_set_location_tag(media, "test_location_tag");
3252         ret = media_info_set_weather(media, "test_weather");
3253         ret = media_info_set_provider(media, "test_provider");
3254
3255         ret = media_info_set_altitude(media, 100.10);
3256         ret = media_info_set_latitude(media, 200.20);
3257         ret = media_info_set_longitude(media, 300.30);
3258         ret = media_info_set_rating(media, 10);
3259         ret = media_info_set_played_time(media);
3260         ret = media_info_set_favorite(media, TRUE);
3261         ret = media_info_increase_played_count(media);
3262         ret = media_info_set_added_time(media, 12345);
3263
3264         ret = media_info_insert_to_db_with_data(media);
3265         if (ret != MEDIA_CONTENT_ERROR_NONE) {
3266                 media_content_error("media_info_insert_to_db_with_data failed : %d\n", ret);
3267                 media_info_destroy(media);
3268                 return ret;
3269         }
3270
3271         ret = media_info_get_media_id(media, &str_value);
3272         media_content_debug("media_id = [%s]", str_value);
3273         SAFE_FREE(str_value);
3274
3275         ret = media_info_get_file_path(media, &str_value);
3276         media_content_debug("file_path = [%s]", str_value);
3277         SAFE_FREE(str_value);
3278
3279         ret = media_info_get_title(media, &str_value);
3280         media_content_debug("title = [%s]", str_value);
3281         SAFE_FREE(str_value);
3282
3283         ret = media_info_get_age_rating(media, &str_value);
3284         media_content_debug("age_rating = [%s]", str_value);
3285         SAFE_FREE(str_value);
3286
3287         ret = media_info_get_author(media, &str_value);
3288         media_content_debug("author = [%s]", str_value);
3289         SAFE_FREE(str_value);
3290
3291         ret = media_info_get_category(media, &str_value);
3292         media_content_debug("category = [%s]", str_value);
3293         SAFE_FREE(str_value);
3294
3295         ret = media_info_get_content_name(media, &str_value);
3296         media_content_debug("content_name = [%s]", str_value);
3297         SAFE_FREE(str_value);
3298
3299         ret = media_info_get_description(media, &str_value);
3300         media_content_debug("description = [%s]", str_value);
3301         SAFE_FREE(str_value);
3302
3303         ret = media_info_get_display_name(media, &str_value);
3304         media_content_debug("display_name = [%s]", str_value);
3305         SAFE_FREE(str_value);
3306
3307         ret = media_info_get_keyword(media, &str_value);
3308         media_content_debug("keyword = [%s]", str_value);
3309         SAFE_FREE(str_value);
3310
3311         ret = media_info_get_location_tag(media, &str_value);
3312         media_content_debug("location_tag = [%s]", str_value);
3313         SAFE_FREE(str_value);
3314
3315         ret = media_info_get_weather(media, &str_value);
3316         media_content_debug("weather = [%s]", str_value);
3317         SAFE_FREE(str_value);
3318
3319         ret = media_info_get_provider(media, &str_value);
3320         media_content_debug("provider = [%s]", str_value);
3321         SAFE_FREE(str_value);
3322
3323         ret = media_info_get_longitude(media, &double_value);
3324         media_content_debug("longitude = [%lf]", double_value);
3325
3326         ret = media_info_get_latitude(media, &double_value);
3327         media_content_debug("latitude = [%lf]", double_value);
3328
3329         ret = media_info_get_altitude(media, &double_value);
3330         media_content_debug("altitud = [%lf]", double_value);
3331
3332         ret = media_info_get_rating(media, &int_value);
3333         media_content_debug("rating = [%d]", int_value);
3334
3335         ret = media_info_get_favorite(media, &bool_value);
3336         media_content_debug("favorite = [%d]", bool_value);
3337
3338         ret = media_info_get_played_time(media, &modified_time);
3339         media_content_debug("played_time = [%d]", modified_time);
3340
3341         ret = media_info_get_played_count(media, &int_value);
3342         media_content_debug("played_count = [%d]", int_value);
3343
3344         ret = media_info_get_added_time(media, &modified_time);
3345         media_content_debug("added_time = [%d]", modified_time);
3346
3347         ret = media_info_get_size(media, &content_size);
3348         media_content_debug("size = [%d]", content_size);
3349
3350         ret = media_info_get_modified_time(media, &modified_time);
3351         media_content_debug("modified_time = [%d]", modified_time);
3352
3353         ret = media_info_get_media_type(media, (media_content_type_e *)&int_value);
3354         media_content_debug("media_type = [%d]", int_value);
3355
3356         ret = media_info_get_storage_type(media, (media_content_storage_e *)&int_value);
3357         media_content_debug("storage_type = [%d]", int_value);
3358
3359         media_info_destroy(media);
3360
3361         return ret;
3362
3363 }
3364
3365 bool media_face_test_cb(media_face_h face, void *user_data)
3366 {
3367         char *face_id = NULL;
3368         char *media_id = NULL;
3369         unsigned int rect_x = 0;
3370         unsigned int rect_y = 0;
3371         unsigned int rect_w = 0;
3372         unsigned int rect_h = 0;
3373         media_content_orientation_e orientation = 0;
3374         char *face_tag = NULL;
3375
3376         media_face_get_face_id(face, &face_id);
3377         media_face_get_media_id(face, &media_id);
3378         media_face_get_face_rect(face, &rect_x, &rect_y, &rect_w, &rect_h);
3379         media_face_get_orientation(face, &orientation);
3380         media_face_get_tag(face, &face_tag);
3381
3382         media_content_debug("face_id [%s] media_id [%s]", face_id, media_id);
3383         media_content_debug("rect_x [%d] rect_y [%d] rect_w [%d] rect_h [%d] orientation [%d]", rect_x, rect_y, rect_w, rect_h, orientation);
3384         media_content_debug("tag [%s]", face_tag);
3385
3386         if (user_data != NULL) {
3387                 media_face_h new_face = NULL;
3388                 media_face_clone(&new_face, face);
3389
3390                 GList **list = (GList**)user_data;
3391                 *list = g_list_append(*list, new_face);
3392         }
3393
3394         SAFE_FREE(face_id);
3395         SAFE_FREE(media_id);
3396         SAFE_FREE(face_tag);
3397
3398         return true;
3399 }
3400
3401 int test_face(void)
3402 {
3403         int ret = MEDIA_CONTENT_ERROR_NONE;
3404         filter_h filter = NULL;
3405         GList *all_item_list = NULL;
3406         int i = 0;
3407
3408         ret = media_filter_create(&filter);
3409         media_content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "fail media_filter_create");
3410
3411         ret = media_filter_set_condition(filter, "MEDIA_TYPE = 0", MEDIA_CONTENT_COLLATE_DEFAULT);
3412         if (ret != MEDIA_CONTENT_ERROR_NONE) {
3413                 media_filter_destroy(filter);
3414                 media_content_error("Fail to set condition");
3415                 return ret;
3416         }
3417
3418         ret = media_info_foreach_media_from_db(filter, gallery_media_item_cb, &all_item_list);
3419         if (ret != MEDIA_CONTENT_ERROR_NONE) {
3420                 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
3421                 media_filter_destroy(filter);
3422                 return ret;
3423         }
3424
3425         for (i = 0; i < g_list_length(all_item_list); i++) {
3426                 media_info_h media_handle = NULL;
3427                 char *media_id = NULL;
3428                 int face_count = 0;
3429
3430                 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
3431
3432                 ret = media_info_get_media_id(media_handle, &media_id);
3433                 if (ret != MEDIA_CONTENT_ERROR_NONE)
3434                         media_content_error("media_info_get_media_id failed: %d", ret);
3435
3436                 ret = media_info_get_face_count_from_db(media_id, filter, &face_count);
3437                 if (ret != MEDIA_CONTENT_ERROR_NONE)
3438                         media_content_error("media_info_get_face_count_from_db failed: %d", ret);
3439
3440                 media_content_error("media_id [%s] face_count [%d]", media_id, face_count);
3441
3442                 ret = media_info_foreach_face_from_db(media_id, filter, media_face_test_cb, NULL);
3443                 if (ret != MEDIA_CONTENT_ERROR_NONE)
3444                         media_content_error("media_info_foreach_face_from_db failed: %d", ret);
3445
3446                 media_info_destroy(media_handle);
3447         }
3448
3449         media_filter_destroy(filter);
3450
3451         return ret;
3452 }
3453
3454 int test_face_add_del(void)
3455 {
3456         int ret = MEDIA_CONTENT_ERROR_NONE;
3457         char *media_id = "ecca7366-e085-41d8-a12b-cbdfc2b9c5fc";
3458
3459         /* Insert Test */
3460         media_face_h face = NULL;
3461
3462         char *face_tag = "test_face_tag";
3463
3464         ret = media_face_create(media_id, &face);
3465         media_content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "fail media_face_create");
3466
3467         ret = media_face_set_face_rect(face, 10, 12, 50, 100);
3468         ret = media_face_set_orientation(face, 5);
3469         ret = media_face_set_tag(face, face_tag);
3470
3471         ret = media_face_insert_to_db(face);
3472         ret = media_face_destroy(face);
3473
3474         /* Update Test */
3475         GList *all_item_list = NULL;
3476         filter_h filter = NULL;
3477         ret = media_filter_create(&filter);
3478         media_content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "fail media_filter_create");
3479
3480         ret = media_filter_set_condition(filter, "MEDIA_FACE_TAG IS NOT NULL", MEDIA_CONTENT_COLLATE_DEFAULT);
3481         if (ret != MEDIA_CONTENT_ERROR_NONE) {
3482                 media_filter_destroy(filter);
3483                 media_content_error("Fail to set condition");
3484                 return ret;
3485         }
3486
3487         ret = media_info_foreach_face_from_db(media_id, filter, media_face_test_cb, &all_item_list);
3488
3489         if (g_list_length(all_item_list) > 0) {
3490                 media_face_h face_handle = NULL;
3491                 face_handle = (media_face_h)g_list_nth_data(all_item_list, 0);
3492
3493                 ret = media_face_set_face_rect(face_handle, 20, 22, 70, 70);
3494                 ret = media_face_set_orientation(face_handle, 3);
3495                 ret = media_face_set_tag(face_handle, NULL);
3496                 ret = media_face_update_to_db(face_handle);
3497
3498                 media_face_destroy(face_handle);
3499         }
3500
3501         media_filter_destroy(filter);
3502
3503         /* Delete Test */
3504         char *face_id = "5e58a3a8-f0b2-4c29-b799-b49a70dc2313";
3505
3506         /* Delete Test*/
3507         ret = media_face_delete_from_db(face_id);
3508
3509         return ret;
3510 }
3511
3512 #ifdef _USE_TV_PROFILE
3513 filter_h g_tv_filter = NULL;
3514
3515 int test_tv_filter_create(void)
3516 {
3517         media_content_debug("\n============Filter Create============\n\n");
3518
3519         int ret = MEDIA_CONTENT_ERROR_NONE;
3520
3521         ret = media_filter_create(&g_tv_filter);
3522
3523         ret = media_filter_set_storage(g_tv_filter, "0a22a163-e634-4a2e-ba14-0469a969eea0");
3524
3525         ret = media_filter_set_order(g_tv_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_STORAGE_ID, MEDIA_CONTENT_COLLATE_DEFAULT);
3526
3527         return ret;
3528 }
3529
3530 int test_tv_filter_destroy(void)
3531 {
3532         media_content_debug("\n============Filter Destroy============\n\n");
3533
3534         int ret = MEDIA_CONTENT_ERROR_NONE;
3535
3536         ret = media_filter_destroy(g_tv_filter);
3537
3538         return ret;
3539 }
3540
3541 bool pvr_item_cb(media_pvr_h pvr, void *user_data)
3542 {
3543         int ret = MEDIA_CONTENT_ERROR_NONE;
3544         char *c_value = NULL;
3545         int i_value = 0;
3546         bool b_value = false;
3547         unsigned long long l_value = 0;
3548
3549         if (pvr == NULL) {
3550                 media_content_debug("NO Item");
3551                 return true;
3552         }
3553
3554         ret = media_pvr_get_media_id(pvr, &c_value);
3555         if (ret != MEDIA_CONTENT_ERROR_NONE)
3556                 media_content_error("Fail to media_pvr_get_media_id");
3557         media_content_debug("media_id [%s]", c_value);
3558         SAFE_FREE(c_value);
3559
3560         ret = media_pvr_get_channel_name(pvr, &c_value);
3561         if (ret != MEDIA_CONTENT_ERROR_NONE)
3562                 media_content_error("Fail to media_pvr_get_channel_name");
3563         media_content_debug("channel_name [%s]", c_value);
3564         SAFE_FREE(c_value);
3565
3566         ret = media_pvr_get_program_title(pvr, &c_value);
3567         if (ret != MEDIA_CONTENT_ERROR_NONE)
3568                 media_content_error("Fail to media_pvr_get_program_title");
3569         media_content_debug("program_title [%s]", c_value);
3570         SAFE_FREE(c_value);
3571
3572         ret = media_pvr_get_program_crid(pvr, &c_value);
3573         if (ret != MEDIA_CONTENT_ERROR_NONE)
3574                 media_content_error("Fail to media_pvr_get_program_crid");
3575         media_content_debug("program_crid [%s]", c_value);
3576         SAFE_FREE(c_value);
3577
3578         ret = media_pvr_get_guidance(pvr, &c_value);
3579         if (ret != MEDIA_CONTENT_ERROR_NONE)
3580                 media_content_error("Fail to media_pvr_get_guidance");
3581         media_content_debug("guidance [%s]", c_value);
3582         SAFE_FREE(c_value);
3583
3584         ret = media_pvr_get_synopsis(pvr, &c_value);
3585         if (ret != MEDIA_CONTENT_ERROR_NONE)
3586                 media_content_error("Fail to media_pvr_get_synopsis");
3587         media_content_debug("synopsis [%s]", c_value);
3588         SAFE_FREE(c_value);
3589
3590         ret = media_pvr_get_genre(pvr, &c_value);
3591         if (ret != MEDIA_CONTENT_ERROR_NONE)
3592                 media_content_error("Fail to media_pvr_get_synopsis");
3593         media_content_debug("genre [%s]", c_value);
3594         SAFE_FREE(c_value);
3595
3596         ret = media_pvr_get_language(pvr, &c_value);
3597         if (ret != MEDIA_CONTENT_ERROR_NONE)
3598                 media_content_error("Fail to media_pvr_get_language");
3599         media_content_debug("language [%s]", c_value);
3600         SAFE_FREE(c_value);
3601
3602         ret = media_pvr_get_path(pvr, &c_value);
3603         if (ret != MEDIA_CONTENT_ERROR_NONE)
3604                 media_content_error("Fail to media_pvr_get_path");
3605         media_content_debug("path [%s]", c_value);
3606         SAFE_FREE(c_value);
3607
3608         ret = media_pvr_get_storage_id(pvr, &c_value);
3609         if (ret != MEDIA_CONTENT_ERROR_NONE)
3610                 media_content_error("Fail to media_pvr_get_storage_id");
3611         media_content_debug("storage_id [%s]", c_value);
3612         SAFE_FREE(c_value);
3613
3614         ret = media_pvr_get_size(pvr, &l_value);
3615         if (ret != MEDIA_CONTENT_ERROR_NONE)
3616                 media_content_error("Fail to media_pvr_get_size");
3617         media_content_debug("size [%ld]", l_value);
3618
3619         ret = media_pvr_get_timezone(pvr, &i_value);
3620         if (ret != MEDIA_CONTENT_ERROR_NONE)
3621                 media_content_error("Fail to media_pvr_get_timezone");
3622         media_content_debug("timezone [%d]", i_value);
3623
3624         ret = media_pvr_get_ptc(pvr, &i_value);
3625         if (ret != MEDIA_CONTENT_ERROR_NONE)
3626                 media_content_error("Fail to media_pvr_get_ptc");
3627         media_content_debug("ptc [%d]", i_value);
3628
3629         ret = media_pvr_get_major(pvr, &i_value);
3630         if (ret != MEDIA_CONTENT_ERROR_NONE)
3631                 media_content_error("Fail to media_pvr_get_major");
3632         media_content_debug("[%d]", i_value);
3633
3634         ret = media_pvr_get_minor(pvr, &i_value);
3635         if (ret != MEDIA_CONTENT_ERROR_NONE)
3636                 media_content_error("Fail to media_pvr_get_minor");
3637         media_content_debug("minor [%d]", i_value);
3638
3639         ret = media_pvr_get_channel_type(pvr, &i_value);
3640         if (ret != MEDIA_CONTENT_ERROR_NONE)
3641                 media_content_error("Fail to media_pvr_get_channel_type");
3642         media_content_debug("channel_type [%d]", i_value);
3643
3644         ret = media_pvr_get_program_num(pvr, &i_value);
3645         if (ret != MEDIA_CONTENT_ERROR_NONE)
3646                 media_content_error("Fail to media_pvr_get_program_num");
3647         media_content_debug("program_num [%d]", i_value);
3648
3649         ret = media_pvr_get_duration(pvr, &i_value);
3650         if (ret != MEDIA_CONTENT_ERROR_NONE)
3651                 media_content_error("Fail to media_pvr_get_duration");
3652         media_content_debug("duration [%d]", i_value);
3653
3654         ret = media_pvr_get_embargo_time(pvr, &i_value);
3655         if (ret != MEDIA_CONTENT_ERROR_NONE)
3656                 media_content_error("Fail to media_pvr_get_embargo_time");
3657         media_content_debug("embargo_time [%d]", i_value);
3658
3659         ret = media_pvr_get_expiry_time(pvr, &i_value);
3660         if (ret != MEDIA_CONTENT_ERROR_NONE)
3661                 media_content_error("Fail to media_pvr_get_expiry_time");
3662         media_content_debug("expiry_time [%d]", i_value);
3663
3664         ret = media_pvr_get_parental_rating(pvr, &i_value);
3665         if (ret != MEDIA_CONTENT_ERROR_NONE)
3666                 media_content_error("Fail to media_pvr_get_parental_rating");
3667         media_content_debug("parental_rating [%d]", i_value);
3668
3669         ret = media_pvr_get_start_time(pvr, &i_value);
3670         if (ret != MEDIA_CONTENT_ERROR_NONE)
3671                 media_content_error("Fail to media_pvr_get_start_time");
3672         media_content_debug("start_time [%d]", i_value);
3673
3674         ret = media_pvr_get_program_start_time(pvr, &i_value);
3675         if (ret != MEDIA_CONTENT_ERROR_NONE)
3676                 media_content_error("Fail to media_pvr_get_program_start_time");
3677         media_content_debug("program_start_time [%d]", i_value);
3678
3679         ret = media_pvr_get_program_end_time(pvr, &i_value);
3680         if (ret != MEDIA_CONTENT_ERROR_NONE)
3681                 media_content_error("Fail to media_pvr_get_program_end_time");
3682         media_content_debug("program_end_time [%d]", i_value);
3683
3684         ret = media_pvr_get_program_date(pvr, &i_value);
3685         if (ret != MEDIA_CONTENT_ERROR_NONE)
3686                 media_content_error("Fail to media_pvr_get_program_date");
3687         media_content_debug("program_date [%d]", i_value);
3688
3689         ret = media_pvr_get_timer_record(pvr, &b_value);
3690         if (ret != MEDIA_CONTENT_ERROR_NONE)
3691                 media_content_error("Fail to media_pvr_get_timer_record");
3692         media_content_debug("timer_record [%d]", b_value);
3693
3694         ret = media_pvr_get_series_record(pvr, &b_value);
3695         if (ret != MEDIA_CONTENT_ERROR_NONE)
3696                 media_content_error("Fail to media_pvr_get_series_record");
3697         media_content_debug("series_record [%d]", b_value);
3698
3699         ret = media_pvr_get_hd(pvr, &i_value);
3700         if (ret != MEDIA_CONTENT_ERROR_NONE)
3701                 media_content_error("Fail to media_pvr_get_hd");
3702         media_content_debug("hd [%d]", i_value);
3703
3704         ret = media_pvr_get_subtitle(pvr, &b_value);
3705         if (ret != MEDIA_CONTENT_ERROR_NONE)
3706                 media_content_error("Fail to media_pvr_get_subtitle");
3707         media_content_debug("subtitle [%d]", b_value);
3708
3709         ret = media_pvr_get_ttx(pvr, &b_value);
3710         if (ret != MEDIA_CONTENT_ERROR_NONE)
3711                 media_content_error("Fail to media_pvr_get_ttx");
3712         media_content_debug("ttx [%d]", b_value);
3713
3714         ret = media_pvr_get_ad(pvr, &b_value);
3715         if (ret != MEDIA_CONTENT_ERROR_NONE)
3716                 media_content_error("Fail to media_pvr_get_ad");
3717         media_content_debug("ad [%d]", b_value);
3718
3719         ret = media_pvr_get_hard_of_hearing_radio(pvr, &b_value);
3720         if (ret != MEDIA_CONTENT_ERROR_NONE)
3721                 media_content_error("Fail to media_pvr_get_hard_of_hearing_radio");
3722         media_content_debug("hard_of_hearing_radio [%d]", b_value);
3723
3724         ret = media_pvr_get_data_service(pvr, &b_value);
3725         if (ret != MEDIA_CONTENT_ERROR_NONE)
3726                 media_content_error("Fail to media_pvr_get_data_service");
3727         media_content_debug("data_service [%d]", b_value);
3728
3729         ret = media_pvr_get_content_lock(pvr, &b_value);
3730         if (ret != MEDIA_CONTENT_ERROR_NONE)
3731                 media_content_error("Fail to media_pvr_get_content_lock");
3732         media_content_debug("content_lock [%d]", b_value);
3733
3734         ret = media_pvr_get_content_watch(pvr, &b_value);
3735         if (ret != MEDIA_CONTENT_ERROR_NONE)
3736                 media_content_error("Fail to media_pvr_get_content_watch");
3737         media_content_debug("content_watch [%d]", b_value);
3738
3739         ret = media_pvr_get_has_audio_only(pvr, &b_value);
3740         if (ret != MEDIA_CONTENT_ERROR_NONE)
3741                 media_content_error("Fail to media_pvr_get_has_audio_only");
3742         media_content_debug("has_audio_only [%d]", b_value);
3743
3744         ret = media_pvr_get_is_local_record(pvr, &b_value);
3745         if (ret != MEDIA_CONTENT_ERROR_NONE)
3746                 media_content_error("Fail to media_pvr_get_is_local_record");
3747         media_content_debug("is_local_record [%d]", b_value);
3748
3749         ret = media_pvr_get_resolution(pvr, (media_pvr_resolution_e*)&i_value);
3750         if (ret != MEDIA_CONTENT_ERROR_NONE)
3751                 media_content_error("Fail to media_pvr_get_resolution");
3752         media_content_debug("resolution [%d]", i_value);
3753
3754         ret = media_pvr_get_aspectratio(pvr, (media_pvr_aspectratio_e*)&i_value);
3755         if (ret != MEDIA_CONTENT_ERROR_NONE)
3756                 media_content_error("Fail to media_pvr_get_aspectratio");
3757         media_content_debug("aspectratio [%d]", i_value);
3758
3759         ret = media_pvr_get_highlight(pvr, &b_value);
3760         if (ret != MEDIA_CONTENT_ERROR_NONE)
3761                 media_content_error("Fail to media_pvr_get_highlight");
3762         media_content_debug("highlight [%d]", b_value);
3763
3764
3765         return TRUE;
3766 }
3767
3768 int test_pvr()
3769 {
3770         int ret = MEDIA_CONTENT_ERROR_NONE;
3771         int media_count = 0;
3772
3773         media_content_debug("\n============PVR Test============\n\n");
3774
3775         test_tv_filter_create();
3776
3777         ret = media_pvr_get_media_count_from_db(g_tv_filter, &media_count);
3778         if (ret != MEDIA_CONTENT_ERROR_NONE)
3779                 media_content_error("media_pvr_get_media_count_from_db failed: %d", ret);
3780         else
3781                 media_content_debug("media_count : [%d]", media_count);
3782
3783         ret = media_pvr_foreach_media_from_db(g_tv_filter, pvr_item_cb, NULL);
3784         if (ret != MEDIA_CONTENT_ERROR_NONE)
3785                 media_content_error("media_pvr_foreach_media_from_db is failed");
3786
3787         test_tv_filter_destroy();
3788
3789         return ret;
3790 }
3791
3792 int test_pvr_update_db(void)
3793 {
3794         int ret = MEDIA_CONTENT_ERROR_NONE;
3795         media_pvr_h pvr = NULL;
3796
3797         ret = media_pvr_get_pvr_from_db("ff9b5a9a-a7b4-47f4-8255-84e007e25f13", &pvr);
3798         if (ret != MEDIA_CONTENT_ERROR_NONE)
3799                 media_content_error("media_pvr_get_pvr_from_db failed: %d", ret);
3800
3801         ret = media_pvr_set_content_lock(pvr, TRUE);
3802         if (ret != MEDIA_CONTENT_ERROR_NONE)
3803                 media_content_error("Fail to media_pvr_set_content_lock");
3804
3805         ret = media_pvr_set_content_watch(pvr, TRUE);
3806         if (ret != MEDIA_CONTENT_ERROR_NONE)
3807                 media_content_error("Fail to media_pvr_set_content_watch");
3808
3809         ret = media_pvr_set_program_title(pvr, "TEST TITLE");
3810         if (ret != MEDIA_CONTENT_ERROR_NONE)
3811                 media_content_error("Fail to media_pvr_set_program_title");
3812
3813         ret = media_pvr_set_highlight(pvr, TRUE);
3814         if (ret != MEDIA_CONTENT_ERROR_NONE)
3815                 media_content_error("Fail to media_pvr_set_highlight");
3816
3817         ret = media_pvr_update_to_db(pvr);
3818         if (ret != MEDIA_CONTENT_ERROR_NONE)
3819                 media_content_error("Fail to media_pvr_update_to_db");
3820
3821         if (pvr != NULL)
3822                 media_pvr_destroy(pvr);
3823
3824         return ret;
3825 }
3826 #endif
3827
3828 int main(int argc, char *argv[])
3829 {
3830         int ret = MEDIA_CONTENT_ERROR_NONE;
3831
3832         media_content_debug("--- content manager test start ---\n\n");
3833
3834         ret = test_connect_database();
3835         if (ret != MEDIA_CONTENT_ERROR_NONE)
3836                 return MEDIA_CONTENT_ERROR_NONE;
3837 #ifdef _USE_TV_PROFILE
3838         test_pvr();
3839
3840         test_pvr_update_db();
3841
3842         test_pvr();
3843 #endif
3844
3845 #if 0
3846         ret = test_start_face_detection(FALSE);
3847         if (ret != MEDIA_CONTENT_ERROR_NONE)
3848                 return ret;
3849
3850         ret = test_move();
3851         if (ret != MEDIA_CONTENT_ERROR_NONE)
3852                 return ret;
3853
3854         ret = test_gallery_scenario();
3855         if (ret != MEDIA_CONTENT_ERROR_NONE)
3856                 return ret;
3857
3858         ret = test_get_all_music_files();
3859         if (ret != MEDIA_CONTENT_ERROR_NONE)
3860                 return ret;
3861
3862         ret = test_media_info_operation();
3863         if (ret != MEDIA_CONTENT_ERROR_NONE)
3864                 return ret;
3865
3866         ret = test_folder_operation();
3867         if (ret != MEDIA_CONTENT_ERROR_NONE)
3868                 return ret;
3869
3870         ret = test_folder_update();
3871         if (ret != MEDIA_CONTENT_ERROR_NONE)
3872                 return ret;
3873
3874         ret = test_playlist_operation();
3875         if (ret != MEDIA_CONTENT_ERROR_NONE)
3876                 return ret;
3877
3878         ret = test_tag_operation();
3879         if (ret != MEDIA_CONTENT_ERROR_NONE)
3880                 return ret;
3881
3882         ret = test_bookmark_operation();
3883         if (ret != MEDIA_CONTENT_ERROR_NONE)
3884                 return ret;
3885
3886         ret = test_album_list();
3887         if (ret != MEDIA_CONTENT_ERROR_NONE)
3888                 return ret;
3889
3890         ret = test_group_operation();
3891         if (ret != MEDIA_CONTENT_ERROR_NONE)
3892                 return ret;
3893
3894         ret = test_update_operation();
3895         if (ret != MEDIA_CONTENT_ERROR_NONE)
3896                 return ret;
3897
3898         ret = test_insert();
3899         if (ret != MEDIA_CONTENT_ERROR_NONE)
3900                 return ret;
3901
3902         ret = test_move();
3903         if (ret != MEDIA_CONTENT_ERROR_NONE)
3904                 return ret;
3905
3906         ret = test_create_thumbnail(TRUE);
3907         if (ret != MEDIA_CONTENT_ERROR_NONE)
3908                 return ret;
3909
3910         ret = test_extrace_face(TRUE);
3911         if (ret != MEDIA_CONTENT_ERROR_NONE)
3912                 return ret;
3913
3914         ret = test_request_update_db();
3915         if (ret != MEDIA_CONTENT_ERROR_NONE)
3916                 return ret;
3917
3918         ret = DFT_test();
3919         if (ret != MEDIA_CONTENT_ERROR_NONE)
3920                 return ret;
3921
3922         ret = test_batch_operations();
3923         if (ret != MEDIA_CONTENT_ERROR_NONE)
3924                 return MEDIA_CONTENT_ERROR_NONE;
3925
3926         ret = test_insert_burst_shot_to_db();
3927         if (ret != MEDIA_CONTENT_ERROR_NONE)
3928                 return MEDIA_CONTENT_ERROR_NONE;
3929
3930         ret = test_scan_file();
3931         if (ret != MEDIA_CONTENT_ERROR_NONE)
3932                 return MEDIA_CONTENT_ERROR_NONE;
3933
3934         ret = test_scan_dir(true);
3935         if (ret != MEDIA_CONTENT_ERROR_NONE)
3936                 return MEDIA_CONTENT_ERROR_NONE;
3937
3938         ret = test_noti();
3939         if (ret != MEDIA_CONTENT_ERROR_NONE)
3940                 return MEDIA_CONTENT_ERROR_NONE;
3941
3942         ret = test_create_handle();
3943         if (ret != MEDIA_CONTENT_ERROR_NONE)
3944                 return MEDIA_CONTENT_ERROR_NONE;
3945
3946         ret = test_face();
3947         if (ret != MEDIA_CONTENT_ERROR_NONE)
3948                 return MEDIA_CONTENT_ERROR_NONE;
3949
3950         ret = test_face_add_del();
3951         if (ret != MEDIA_CONTENT_ERROR_NONE)
3952                 return MEDIA_CONTENT_ERROR_NONE;
3953 #endif
3954
3955         ret = test_disconnect_database();
3956         if (ret != MEDIA_CONTENT_ERROR_NONE)
3957                 return ret;
3958
3959         media_content_debug("--- content manager test end ---\n");
3960
3961         return ret;
3962 }