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