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