media_list.c
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:4k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*
  2.  * media_list.c - libvlc smoke test
  3.  *
  4.  * $Id: fb176972f346f5132040e3101742d18e22300d97 $
  5.  */
  6. /**********************************************************************
  7.  *  Copyright (C) 2007 Rémi Denis-Courmont.                           *
  8.  *  This program is free software; you can redistribute and/or modify *
  9.  *  it under the terms of the GNU General Public License as published *
  10.  *  by the Free Software Foundation; version 2 of the license, or (at *
  11.  *  your option) any later version.                                   *
  12.  *                                                                    *
  13.  *  This program is distributed in the hope that it will be useful,   *
  14.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of    *
  15.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.              *
  16.  *  See the GNU General Public License for more details.              *
  17.  *                                                                    *
  18.  *  You should have received a copy of the GNU General Public License *
  19.  *  along with this program; if not, you can get it from:             *
  20.  *  http://www.gnu.org/copyleft/gpl.html                              *
  21.  **********************************************************************/
  22. #include "test.h"
  23. static void test_media_list (const char ** argv, int argc)
  24. {
  25.     libvlc_instance_t *vlc;
  26.     libvlc_media_t *md1, *md2, *md3, *md4;
  27.     libvlc_media_list_t *ml;
  28.     log ("Testing media_listn");
  29.     libvlc_exception_init (&ex);
  30.     vlc = libvlc_new (argc, argv, &ex);
  31.     catch ();
  32.     ml = libvlc_media_list_new (vlc, &ex);
  33.     catch ();
  34.     md1 = libvlc_media_new (vlc, "/dev/null", &ex);
  35.     catch ();
  36.     md2 = libvlc_media_new (vlc, "/dev/null", &ex);
  37.     catch ();
  38.     md3 = libvlc_media_new (vlc, "/dev/null", &ex);
  39.     catch ();
  40.     libvlc_media_list_add_media (ml, md1, &ex);
  41.     catch ();
  42.     libvlc_media_list_add_media (ml, md2, &ex);
  43.     catch ();
  44.     assert( libvlc_media_list_count (ml, &ex) == 2 );
  45.     catch ();
  46.     assert( libvlc_media_list_index_of_item (ml, md1, &ex) == 0 );
  47.     catch ();
  48.     assert( libvlc_media_list_index_of_item (ml, md2, &ex) == 1 );
  49.     catch ();
  50.     libvlc_media_list_remove_index (ml, 0, &ex);  /* removing first item */
  51.     catch ();
  52.     /* test if second item was moved on first place */
  53.     assert( libvlc_media_list_index_of_item (ml, md2, &ex) == 0 );
  54.     catch ();
  55.     libvlc_media_list_add_media (ml, md1, &ex); /* add 2 items */
  56.     catch ();
  57.     libvlc_media_list_add_media (ml, md1, &ex);
  58.     catch ();
  59.     /* there should be 3 pieces */
  60.     assert( libvlc_media_list_count (ml, &ex) == 3 );
  61.     catch ();
  62.     libvlc_media_list_insert_media (ml, md3, 2, &ex);
  63.     catch ();
  64.     /* there should be 4 pieces */
  65.     assert( libvlc_media_list_count (ml, &ex) == 4 );
  66.     catch ();
  67.     /* test inserting on right place */
  68.     assert( libvlc_media_list_index_of_item (ml, md3, &ex) == 2 );
  69.     catch ();
  70.     /* test right returning descriptor*/
  71.     assert ( libvlc_media_list_item_at_index (ml, 0, &ex) == md2 );
  72.     catch ();
  73.     assert ( libvlc_media_list_item_at_index (ml, 2, &ex) == md3 );
  74.     catch ();
  75.     /* test if give exceptions, when it should */
  76.     /* have 4 items, so index 4 should give exception */
  77.     libvlc_media_list_remove_index (ml, 4, &ex);
  78.     assert (have_exception ());
  79.     libvlc_media_list_remove_index (ml, 100, &ex);
  80.     assert (have_exception ());
  81.     libvlc_media_list_remove_index (ml, -1, &ex);
  82.     assert (have_exception ());
  83.     /* getting non valid items */
  84.     libvlc_media_t * p_non_exist =
  85.         libvlc_media_list_item_at_index (ml, 4, &ex);
  86.     assert (have_exception ());
  87.     p_non_exist = libvlc_media_list_item_at_index (ml, 100, &ex);
  88.     assert (have_exception ());
  89.     p_non_exist = libvlc_media_list_item_at_index (ml, -1, &ex);
  90.     assert (have_exception ());
  91.     md4 = libvlc_media_new (vlc, "/dev/null", &ex);
  92.     catch ();
  93.     /* try to find non inserted item */
  94.     int i_non_exist = 0;
  95.     i_non_exist = libvlc_media_list_index_of_item (ml, md4, &ex);
  96.     assert ( i_non_exist == -1 );
  97.     libvlc_media_release (md1);
  98.     libvlc_media_release (md2);
  99.     libvlc_media_release (md3);
  100.     libvlc_media_release (md4);
  101.     libvlc_media_list_release (ml);
  102.     libvlc_release (vlc);
  103.     catch ();
  104. }
  105. int main (void)
  106. {
  107.     test_init();
  108.     test_media_list (test_defaults_args, test_defaults_nargs);
  109.     return 0;
  110. }