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