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