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

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * dictionary.c: Tests for vlc_dictionary_t
  3.  *****************************************************************************
  4.  * Copyright (C) 2007 Pierre d'Herbemont
  5.  * $Id: 7c823749b1add2c414614d1cbba2b216d15b3653 $
  6.  *
  7.  * This program is free software; you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License as published by
  9.  * the Free Software Foundation; either version 2 of the License, or
  10.  * (at your option) any later version.
  11.  *
  12.  * This program is distributed in the hope that it will be useful,
  13.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.  * GNU General Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU General Public License
  18.  * along with this program; if not, write to the Free Software
  19.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  20.  *****************************************************************************/
  21. #ifdef HAVE_CONFIG_H
  22. # include "config.h"
  23. #endif
  24. #undef NDEBUG
  25. #include <assert.h>
  26. #include <vlc_common.h>
  27. #include "vlc_arrays.h"
  28. #include <stdio.h>
  29. #include <stdlib.h>
  30. static void test_dictionary_validity (vlc_dictionary_t * p_dict, const char ** our_keys, int size )
  31. {
  32.     /* Test values and keys now */
  33.     char ** keys = vlc_dictionary_all_keys( p_dict );
  34.     int i, j;
  35.     assert( keys );
  36.     for( j = 0; keys[j]; j++ )
  37.     {
  38.         bool found = false;
  39.         for( i = 0; i < size; i++ )
  40.         {
  41.             if(!strcmp( keys[j], our_keys[i] ))
  42.             {
  43.                 found = true;
  44.                 break;
  45.             }
  46.         }
  47.         free( keys[j] );
  48.         assert( found );
  49.     }
  50.     free( keys );
  51.     for( i = 0; i < size; i++ )
  52.         assert( vlc_dictionary_value_for_key( p_dict, our_keys[i] ) == (void*)i );
  53. }
  54. int main (void)
  55. {
  56.     static const char * our_keys[] = {
  57.         "Hello", "Hella", "flowmeter", "Frostnipped", "frostnipped", "remiform", "quadrifoliolate", "singularity", "unafflicted"
  58.     };
  59.     const int size = sizeof(our_keys)/sizeof(our_keys[0]);
  60.     char ** keys;
  61.     int i = 0;
  62.     vlc_dictionary_t dict;
  63.     vlc_dictionary_init( &dict, 0 );
  64.     assert( vlc_dictionary_keys_count( &dict ) == 0 );
  65.     keys = vlc_dictionary_all_keys( &dict );
  66.     assert( keys && !keys[0] );
  67.     free(keys);
  68.     /* Insert some values */
  69.     for( i = 0; i < size; i++ )
  70.         vlc_dictionary_insert( &dict, our_keys[i], (void*)i );
  71.     test_dictionary_validity( &dict, our_keys, size );
  72.     vlc_dictionary_remove_value_for_key( &dict, our_keys[size-1], NULL, NULL );
  73.     test_dictionary_validity( &dict, our_keys, size-1 );
  74.     vlc_dictionary_clear( &dict, NULL, NULL );
  75.     assert( vlc_dictionary_keys_count( &dict ) == 0 );
  76.     return 0;
  77. }