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