a0f9e5004c3105f6491817ba5ab6ad23e3b66245
[framework/api/media-content.git] / TC / testcase / utc_media_playlist.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
18 #include <tet_api.h>
19 #include <stdlib.h>
20 #include <media_content.h>
21
22 static void startup(void);
23 static void cleanup(void);
24
25 void (*tet_startup)(void) = startup;
26 void (*tet_cleanup)(void) = cleanup;
27
28
29 static void utc_media_playlist_insert_to_db_n(void);
30 static void utc_media_playlist_insert_to_db_p(void);
31 static void utc_media_playlist_delete_from_db_n(void);
32 static void utc_media_playlist_delete_from_db_p(void);
33 static void utc_media_playlist_get_playlist_count_from_db_n(void);
34 static void utc_media_playlist_get_playlist_count_from_db_p(void);
35 static void utc_media_playlist_foreach_playlist_from_db_n(void);
36 static void utc_media_playlist_foreach_playlist_from_db_p(void);
37 static void utc_media_playlist_get_media_count_from_db_n(void);
38 static void utc_media_playlist_get_media_count_from_db_p(void);
39 static void utc_media_playlist_foreach_media_from_db_n(void);
40 static void utc_media_playlist_foreach_media_from_db_p(void);
41 static void utc_media_playlist_destroy_n(void);
42 static void utc_media_playlist_destroy_p(void);
43 static void utc_media_playlist_clone_n(void);
44 static void utc_media_playlist_clone_p(void);
45 static void utc_media_playlist_get_playlist_from_db_n(void);
46 static void utc_media_playlist_get_playlist_from_db_p(void);
47 static void utc_media_playlist_get_playlist_id_n(void);
48 static void utc_media_playlist_get_playlist_id_p(void);
49 static void utc_media_playlist_get_name_n(void);
50 static void utc_media_playlist_get_name_p(void);
51 static void utc_media_playlist_get_play_order_n(void);
52 static void utc_media_playlist_get_play_order_p(void);
53 static void utc_media_playlist_update_to_db_n(void);
54 static void utc_media_playlist_update_to_db_p(void);
55 static void utc_media_playlist_set_name_n(void);
56 static void utc_media_playlist_set_name_p(void);
57 static void utc_media_playlist_set_play_order_n(void);
58 static void utc_media_playlist_set_play_order_p(void);
59
60 static void utc_media_playlist_add_media_n(void);
61 static void utc_media_playlist_add_media_p(void);
62 static void utc_media_playlist_remove_media_n(void);
63 static void utc_media_playlist_remove_media_p(void);
64
65
66 struct tet_testlist tet_testlist[] = {
67         { utc_media_playlist_insert_to_db_n, 1 },
68         { utc_media_playlist_insert_to_db_p, 1 },
69         { utc_media_playlist_get_playlist_count_from_db_n, 4 },
70         { utc_media_playlist_get_playlist_count_from_db_p, 4 },
71         { utc_media_playlist_foreach_playlist_from_db_n, 4 },
72         { utc_media_playlist_foreach_playlist_from_db_p, 4 },
73         { utc_media_playlist_get_media_count_from_db_n, 4 },
74         { utc_media_playlist_get_media_count_from_db_p, 4 },
75         { utc_media_playlist_foreach_media_from_db_n, 4 },
76         { utc_media_playlist_foreach_media_from_db_p, 4 },
77         { utc_media_playlist_get_playlist_from_db_n, 4 },
78         { utc_media_playlist_get_playlist_from_db_p, 4 },
79         { utc_media_playlist_get_playlist_id_n, 4 },
80         { utc_media_playlist_get_playlist_id_p, 4 },
81         { utc_media_playlist_get_name_n, 4 },
82         { utc_media_playlist_get_name_p, 4 },
83         { utc_media_playlist_get_play_order_n, 5 },
84         { utc_media_playlist_get_play_order_p, 5 },
85         { utc_media_playlist_update_to_db_n, 3 },
86         { utc_media_playlist_update_to_db_p, 3 },
87         { utc_media_playlist_set_name_n, 2 },
88         { utc_media_playlist_set_name_p, 2 },
89         { utc_media_playlist_set_play_order_n, 5 },
90         { utc_media_playlist_set_play_order_p, 5 },
91         { utc_media_playlist_add_media_n, 2 },
92         { utc_media_playlist_add_media_p, 2 },
93         { utc_media_playlist_remove_media_n, 6 },
94         { utc_media_playlist_remove_media_p, 6 },
95         { utc_media_playlist_clone_n, 7 },
96         { utc_media_playlist_clone_p, 7 },
97         { utc_media_playlist_delete_from_db_n, 8 },
98         { utc_media_playlist_delete_from_db_p, 8 },
99         { utc_media_playlist_destroy_n, 8 },
100         { utc_media_playlist_destroy_p, 8 },
101         { NULL, 0 },
102 };
103
104 static media_playlist_h g_playlist;
105 static media_playlist_h g_playlist_dst;
106
107 static filter_h g_filter;
108 static char *g_media_id = NULL;
109 static int g_playlist_id = 0;
110 static int g_playlist_member_id = 0;
111
112 bool media_item_cb(media_info_h media, void *user_data)
113 {
114         int ret = MEDIA_CONTENT_ERROR_NONE;
115
116         ret = media_info_get_media_id(media, &g_media_id);
117         if((ret != MEDIA_CONTENT_ERROR_NONE) || (g_media_id == NULL))
118         {
119                 tet_printf("\n get media_id failed");
120                 return false;
121         }
122
123         return true;
124 }
125
126 bool playlist_item_cb(int playlist_member_id, media_info_h media, void *user_data)
127 {
128         g_playlist_member_id = playlist_member_id;
129
130         tet_printf("cb - member id : %d", g_playlist_member_id);
131         return true;
132 }
133
134 bool playlist_cb(media_playlist_h playlist, void *user_data)
135 {
136         return true;
137 }
138
139 static void startup(void)
140 {
141         /* start of TC */
142         tet_printf("\n TC start");
143
144         int ret = media_content_connect();
145         if(ret != MEDIA_CONTENT_ERROR_NONE)
146         {
147                 tet_printf("\n database connection is failed");
148                 return;
149         }
150         else
151         {
152                 tet_printf("\n database connection is success");
153         }
154
155         char *condition = "MEDIA_TYPE=3";       //Music
156
157         media_filter_create(&g_filter);
158         media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
159         //media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, "MEDIA_TITLE", MEDIA_CONTENT_COLLATE_DEFAULT);
160
161         if(g_filter == NULL)
162         {
163                 tet_printf("\n filter create failed");
164                 return;
165         }
166
167         ret = media_info_foreach_media_from_db(g_filter, media_item_cb, NULL);
168         if(ret != MEDIA_CONTENT_ERROR_NONE)
169         {
170                 tet_printf("\n get media_info failed");
171                 return;
172         }
173
174         tet_printf("\n TC start END");
175 }
176
177
178 static void cleanup(void)
179 {
180         /* end of TC */
181         tet_printf("\n TC end");
182
183         if(g_media_id != NULL)
184                 free(g_media_id);
185
186         if(g_filter != NULL)
187                 media_filter_destroy(g_filter);
188
189         if(g_playlist != NULL)
190                 media_playlist_destroy(g_playlist);
191
192         int ret = media_content_disconnect();
193
194         if(ret != MEDIA_CONTENT_ERROR_NONE)
195                 tet_printf("\n database disconnection is failed");
196         else
197                 tet_printf("\n database disconnection is success");
198
199 }
200
201 static void utc_media_playlist_insert_to_db_n(void)
202 {
203         int ret = MEDIA_CONTENT_ERROR_NONE;
204
205         ret = media_playlist_insert_to_db(NULL, &g_playlist);
206
207         dts_check_eq("utc_media_playlist_insert_to_db_n", ret, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Must return MEDIA_CONTENT_ERROR_INVALID_PARAMETER in case of invalid parameter");
208 }
209
210 static void utc_media_playlist_insert_to_db_p(void)
211 {
212         int ret = MEDIA_CONTENT_ERROR_NONE;
213
214         ret = media_playlist_insert_to_db("test_playlist_1", &g_playlist);
215
216         ret = media_playlist_get_playlist_id(g_playlist, &g_playlist_id);
217
218         dts_check_eq("utc_media_playlist_insert_to_db_p", ret, MEDIA_CONTENT_ERROR_NONE, "Failed to insert the playlist");
219 }
220
221 static void utc_media_playlist_delete_from_db_n(void)
222 {
223         int ret = MEDIA_CONTENT_ERROR_NONE;
224
225         ret = media_playlist_delete_from_db(-1);
226
227         dts_check_eq("utc_media_playlist_delete_from_db_n", ret, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Must return MEDIA_CONTENT_ERROR_INVALID_PARAMETER in case of invalid parameter");
228 }
229
230 static void utc_media_playlist_delete_from_db_p(void)
231 {
232         int ret = MEDIA_CONTENT_ERROR_NONE;
233
234         ret = media_playlist_delete_from_db(g_playlist_id);
235
236         dts_check_eq("utc_media_playlist_delete_from_db_p", ret, MEDIA_CONTENT_ERROR_NONE, "Failed to delete the playlist");
237 }
238
239 static void utc_media_playlist_get_playlist_count_from_db_n(void)
240 {
241         int ret = MEDIA_CONTENT_ERROR_NONE;
242
243         ret = media_playlist_get_playlist_count_from_db(g_filter, NULL);
244
245         dts_check_eq("utc_media_playlist_get_playlist_count_from_db_n", ret, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Must return MEDIA_CONTENT_ERROR_INVALID_PARAMETER in case of invalid parameter");
246 }
247
248 static void utc_media_playlist_get_playlist_count_from_db_p(void)
249 {
250         int ret = MEDIA_CONTENT_ERROR_NONE;
251         int playlist_count = 0;
252
253         ret = media_playlist_get_playlist_count_from_db(g_filter, &playlist_count);
254
255         dts_check_eq("utc_media_playlist_get_playlist_count_from_db_p", ret, MEDIA_CONTENT_ERROR_NONE, "Failed to get playlist count");
256 }
257
258 static void utc_media_playlist_foreach_playlist_from_db_n(void)
259 {
260         int ret = MEDIA_CONTENT_ERROR_NONE;
261
262         ret = media_playlist_foreach_playlist_from_db(g_filter, NULL, NULL);
263
264         dts_check_eq("utc_media_playlist_foreach_from_db_n", ret, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Must return MEDIA_CONTENT_ERROR_INVALID_PARAMETER in case of invalid parameter");
265 }
266
267 static void utc_media_playlist_foreach_playlist_from_db_p(void)
268 {
269         int ret = MEDIA_CONTENT_ERROR_NONE;
270
271         ret = media_playlist_foreach_playlist_from_db(g_filter, playlist_cb, NULL);
272
273         dts_check_eq("utc_media_playlist_foreach_from_db_p", ret, MEDIA_CONTENT_ERROR_NONE, "Failed to get list of playlist");
274 }
275
276 static void utc_media_playlist_get_media_count_from_db_n(void)
277 {
278         int ret = MEDIA_CONTENT_ERROR_NONE;
279
280         ret = media_playlist_get_media_count_from_db(0, g_filter, NULL);
281
282         dts_check_eq("utc_media_playlist_get_media_count_from_db_n", ret, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Must return MEDIA_CONTENT_ERROR_INVALID_PARAMETER in case of invalid parameter");
283 }
284
285 static void utc_media_playlist_get_media_count_from_db_p(void)
286 {
287         int ret = MEDIA_CONTENT_ERROR_NONE;
288         int media_count = 0;
289
290         ret = media_playlist_get_media_count_from_db(g_playlist_id, g_filter, &media_count);
291
292         dts_check_eq("utc_media_playlist_get_media_count_from_db_p", ret, MEDIA_CONTENT_ERROR_NONE, "Failed to get the item count");
293 }
294
295 static void utc_media_playlist_foreach_media_from_db_n(void)
296 {
297         int ret = MEDIA_CONTENT_ERROR_NONE;
298
299         ret = media_playlist_foreach_media_from_db(0, g_filter, playlist_item_cb, NULL);
300
301         dts_check_eq("utc_media_playlist_foreach_media_from_db_n", ret, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Must return MEDIA_CONTENT_ERROR_INVALID_PARAMETER in case of invalid parameter");
302 }
303
304 static void utc_media_playlist_foreach_media_from_db_p(void)
305 {
306         int ret = MEDIA_CONTENT_ERROR_NONE;
307
308         ret = media_playlist_foreach_media_from_db(g_playlist_id, g_filter, playlist_item_cb, NULL);
309
310         dts_check_eq("utc_media_playlist_foreach_media_from_db_p", ret, MEDIA_CONTENT_ERROR_NONE, "Failed to get the list of item");
311 }
312
313 static void utc_media_playlist_destroy_n(void)
314 {
315         int ret = MEDIA_CONTENT_ERROR_NONE;
316
317         ret = media_playlist_destroy(NULL);
318
319         dts_check_eq("utc_media_playlist_destroy_n", ret, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Must return MEDIA_CONTENT_ERROR_INVALID_PARAMETER in case of invalid parameter");
320 }
321
322 static void utc_media_playlist_destroy_p(void)
323 {
324         int ret = MEDIA_CONTENT_ERROR_NONE;
325
326         ret = media_playlist_destroy(g_playlist_dst);
327
328         dts_check_eq("utc_media_playlist_destroy_p", ret, MEDIA_CONTENT_ERROR_NONE, "Failed to destory the playlist");
329 }
330
331 static void utc_media_playlist_clone_n(void)
332 {
333         int ret = MEDIA_CONTENT_ERROR_NONE;
334
335         ret = media_playlist_clone(&g_playlist_dst, NULL);
336
337         dts_check_eq("utc_media_playlist_clone_n", ret, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Must return MEDIA_CONTENT_ERROR_INVALID_PARAMETER in case of invalid parameter");
338 }
339
340 static void utc_media_playlist_clone_p(void)
341 {
342         int ret = MEDIA_CONTENT_ERROR_NONE;
343
344         ret = media_playlist_clone(&g_playlist_dst, g_playlist);
345
346         dts_check_eq("utc_media_playlist_clone_p", ret, MEDIA_CONTENT_ERROR_NONE, "Failed to clone the playlist");
347 }
348
349 static void utc_media_playlist_get_playlist_from_db_n(void)
350 {
351         int ret = MEDIA_CONTENT_ERROR_NONE;
352         media_playlist_h playlist;
353
354         ret = media_playlist_get_playlist_from_db(0, g_filter, &playlist);
355
356         dts_check_eq("utc_media_playlist_get_playlist_from_db_n", ret, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Must return MEDIA_CONTENT_ERROR_INVALID_PARAMETER in case of invalid parameter");
357 }
358
359 static void utc_media_playlist_get_playlist_from_db_p(void)
360 {
361         int ret = MEDIA_CONTENT_ERROR_NONE;
362         media_playlist_h playlist;
363
364         ret = media_playlist_get_playlist_from_db(g_playlist_id, g_filter, &playlist);
365
366         dts_check_eq("utc_media_playlist_get_playlist_from_db_p", ret, MEDIA_CONTENT_ERROR_NONE, "Failed to get playlist");
367 }
368
369 static void utc_media_playlist_get_playlist_id_n(void)
370 {
371         int ret = MEDIA_CONTENT_ERROR_NONE;
372
373         ret = media_playlist_get_playlist_id(NULL, NULL);
374
375         dts_check_eq("utc_media_playlist_get_id_n", ret, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Must return MEDIA_CONTENT_ERROR_INVALID_PARAMETER in case of invalid parameter");
376 }
377
378 static void utc_media_playlist_get_playlist_id_p(void)
379 {
380         int ret = MEDIA_CONTENT_ERROR_NONE;
381         int playlist_id = 0;
382
383         ret = media_playlist_get_playlist_id(g_playlist, &playlist_id);
384
385         dts_check_eq("utc_media_playlist_get_id_p", ret, MEDIA_CONTENT_ERROR_NONE, "Failed to get the name of playlist");
386 }
387
388 static void utc_media_playlist_get_name_n(void)
389 {
390         int ret = MEDIA_CONTENT_ERROR_NONE;
391         char *name = NULL;
392
393         ret = media_playlist_get_name(NULL, &name);
394
395         dts_check_eq("utc_media_playlist_get_name_n", ret, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Must return MEDIA_CONTENT_ERROR_INVALID_PARAMETER in case of invalid parameter");
396 }
397
398 static void utc_media_playlist_get_name_p(void)
399 {
400         int ret = MEDIA_CONTENT_ERROR_NONE;
401         char *name = NULL;
402
403         ret = media_playlist_get_name(g_playlist, &name);
404
405         if(name != NULL)
406                 free(name);
407
408         dts_check_eq("utc_media_playlist_get_name_p", ret, MEDIA_CONTENT_ERROR_NONE, "Failed to get the name of playlist");
409 }
410
411 static void utc_media_playlist_get_play_order_n(void)
412 {
413         int ret = MEDIA_CONTENT_ERROR_NONE;
414
415         ret = media_playlist_get_play_order(NULL, g_playlist_member_id, NULL);
416
417         dts_check_eq("utc_media_playlist_get_play_order_n", ret, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Must return MEDIA_CONTENT_ERROR_INVALID_PARAMETER in case of invalid parameter");
418 }
419
420 static void utc_media_playlist_get_play_order_p(void)
421 {
422         int ret = MEDIA_CONTENT_ERROR_NONE;
423         int playlist_order = 0;
424
425         ret = media_playlist_get_play_order(g_playlist, g_playlist_member_id, &playlist_order);
426
427         dts_check_eq("utc_media_playlist_get_play_order_p", ret, MEDIA_CONTENT_ERROR_NONE, "Failed to get the name of playlist");
428 }
429
430 static void utc_media_playlist_update_to_db_n(void)
431 {
432         int ret = MEDIA_CONTENT_ERROR_NONE;
433
434         ret = media_playlist_update_to_db(NULL);
435
436         dts_check_eq("media_playlist_update_to_db", ret, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Must return MEDIA_CONTENT_ERROR_INVALID_PARAMETER in case of invalid parameter");
437 }
438
439 static void utc_media_playlist_update_to_db_p(void)
440 {
441         int ret = MEDIA_CONTENT_ERROR_NONE;
442
443         ret = media_playlist_update_to_db(g_playlist);
444
445         dts_check_eq("utc_media_playlist_update_to_db_p", ret, MEDIA_CONTENT_ERROR_NONE, "Failed to update name of playlist");
446 }
447
448 static void utc_media_playlist_set_name_n(void)
449 {
450         int ret = MEDIA_CONTENT_ERROR_NONE;
451
452         ret = media_playlist_set_name(NULL, NULL);
453
454         dts_check_eq("utc_media_playlist_set_name_n", ret, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Must return MEDIA_CONTENT_ERROR_INVALID_PARAMETER in case of invalid parameter");
455 }
456
457 static void utc_media_playlist_set_name_p(void)
458 {
459         int ret = MEDIA_CONTENT_ERROR_NONE;
460
461         ret = media_playlist_set_name(g_playlist, "myPlaylist");
462
463         dts_check_eq("utc_media_playlist_set_name_p", ret, MEDIA_CONTENT_ERROR_NONE, "Failed to set name of playlist");
464 }
465
466 static void utc_media_playlist_set_play_order_n(void)
467 {
468         int ret = MEDIA_CONTENT_ERROR_NONE;
469
470         ret = media_playlist_set_play_order(NULL, g_playlist_member_id, 3);
471
472         dts_check_eq("utc_media_playlist_set_name_n", ret, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Must return MEDIA_CONTENT_ERROR_INVALID_PARAMETER in case of invalid parameter");
473 }
474
475 static void utc_media_playlist_set_play_order_p(void)
476 {
477         int ret = MEDIA_CONTENT_ERROR_NONE;
478
479         ret = media_playlist_set_play_order(g_playlist, g_playlist_member_id, 3);
480
481         dts_check_eq("utc_media_playlist_set_play_order_p", ret, MEDIA_CONTENT_ERROR_NONE, "Failed to set name of playlist");
482 }
483
484 static void utc_media_playlist_add_media_n(void)
485 {
486         int ret = MEDIA_CONTENT_ERROR_NONE;
487
488         ret = media_playlist_add_media(NULL, g_media_id);
489
490         dts_check_eq("utc_media_playlist_add_media_n", ret, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Must return MEDIA_CONTENT_ERROR_INVALID_PARAMETER in case of invalid parameter");
491 }
492
493 static void utc_media_playlist_add_media_p(void)
494 {
495         int ret = MEDIA_CONTENT_ERROR_NONE;
496
497         ret = media_playlist_add_media(g_playlist, g_media_id);
498
499         dts_check_eq("utc_media_playlist_add_media_p", ret, MEDIA_CONTENT_ERROR_NONE, "Failed to add the item to playlist");
500 }
501
502 static void utc_media_playlist_remove_media_n(void)
503 {
504         int ret = MEDIA_CONTENT_ERROR_NONE;
505
506         tet_printf("member id : %d", g_playlist_member_id);
507         ret = media_playlist_remove_media(NULL, g_playlist_member_id);
508
509         dts_check_eq("utc_media_playlist_remove_media_from_db_n", ret, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Must return MEDIA_CONTENT_ERROR_INVALID_PARAMETER in case of invalid parameter");
510 }
511
512 static void utc_media_playlist_remove_media_p(void)
513 {
514         int ret = MEDIA_CONTENT_ERROR_NONE;
515
516         ret = media_playlist_remove_media(g_playlist, g_playlist_member_id);
517
518         dts_check_eq("utc_media_playlist_remove_media_p", ret, MEDIA_CONTENT_ERROR_NONE, "Failed to remove the item in playlist");
519 }