]> git.sesse.net Git - vlc/blobdiff - test/src/misc/variables.c
LibVLC core: remove exceptions
[vlc] / test / src / misc / variables.c
index ead7ef9e6e5556153587f3f629e356af3f542ab5..e2524618da8642d59428dd4071a3043f321092d6 100644 (file)
@@ -71,6 +71,12 @@ static void test_booleans( libvlc_int_t *p_libvlc )
     for( i = 0; i < i_var_count; i++ )
         assert( var_GetBool( p_libvlc, psz_var_name[i] ) == var_value[i].b_bool );
 
+    for( i = 0; i < i_var_count; i++ )
+        var_ToggleBool( p_libvlc, psz_var_name[i] );
+
+    for( i = 0; i < i_var_count; i++ )
+        assert( var_GetBool( p_libvlc, psz_var_name[i] ) != var_value[i].b_bool );
+
     for( i = 0; i < i_var_count; i++ )
         var_Destroy( p_libvlc, psz_var_name[i] );
 }
@@ -234,7 +240,6 @@ static void test_limits( libvlc_int_t *p_libvlc )
 
     val.i_int = -1234;
     var_Change( p_libvlc, "bla", VLC_VAR_SETMIN, &val, NULL );
-
     val.i_int = 12345;
     var_Change( p_libvlc, "bla", VLC_VAR_SETMAX, &val, NULL );
 
@@ -290,7 +295,108 @@ static void test_choices( libvlc_int_t *p_libvlc )
             !strcmp( val2.p_list->p_values[0].psz_string, "one" ) );
     var_FreeList( &val, &val2 );
 
+    var_Change( p_libvlc, "bla", VLC_VAR_CLEARCHOICES, NULL, NULL );
+    assert( var_CountChoices( p_libvlc, "bla" ) == 0 );
+
+    var_Destroy( p_libvlc, "bla" );
+}
+
+static void test_change( libvlc_int_t *p_libvlc )
+{
+    /* Add min, max and step
+       Yes we can have min > max but we don't really care */
+    vlc_value_t val;
+    int i_min, i_max, i_step;
+
+    var_Create( p_libvlc, "bla", VLC_VAR_INTEGER );
+    val.i_int = i_min = rand();
+    var_Change( p_libvlc, "bla", VLC_VAR_SETMIN, &val, NULL );
+    val.i_int = i_max = rand();
+    var_Change( p_libvlc, "bla", VLC_VAR_SETMAX, &val, NULL );
+    val.i_int = i_step = rand();
+    var_Change( p_libvlc, "bla", VLC_VAR_SETSTEP, &val, NULL );
+
+    /* Do something */
+    var_SetInteger( p_libvlc, "bla", rand() );
+    val.i_int = var_GetInteger( p_libvlc, "bla" ); /* dummy read */
+
+    /* Test everything is right */
+    var_Change( p_libvlc, "bla", VLC_VAR_GETMIN, &val, NULL );
+    assert( val.i_int = i_min );
+    var_Change( p_libvlc, "bla", VLC_VAR_GETMAX, &val, NULL );
+    assert( val.i_int = i_max );
+    var_Change( p_libvlc, "bla", VLC_VAR_GETSTEP, &val, NULL );
+    assert( val.i_int = i_step );
+
+    var_Destroy( p_libvlc, "bla" );
+}
+
+static void test_creation_and_type( libvlc_int_t *p_libvlc )
+{
+    vlc_value_t val;
+    val.i_int = 4212;
+
+    var_Create( p_libvlc, "bla", VLC_VAR_INTEGER );
+    assert( var_Type( p_libvlc, "bla" ) == (VLC_VAR_INTEGER) );
+
+    assert( var_Create( p_libvlc, "bla", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT ) == VLC_SUCCESS );
+    assert( var_Type( p_libvlc, "bla" ) == (VLC_VAR_INTEGER) );
+
+    assert( var_Create( p_libvlc, "bla", VLC_VAR_INTEGER | VLC_VAR_ISCOMMAND ) == VLC_SUCCESS );
+    assert( var_Type( p_libvlc, "bla" ) == (VLC_VAR_INTEGER | VLC_VAR_ISCOMMAND) );
+
+    var_Change( p_libvlc, "bla", VLC_VAR_SETMIN, &val, NULL );
+    assert( var_Type( p_libvlc, "bla" ) == (VLC_VAR_INTEGER | VLC_VAR_ISCOMMAND | VLC_VAR_HASMIN) );
+
+    var_Change( p_libvlc, "bla", VLC_VAR_SETMAX, &val, NULL );
+    assert( var_Type( p_libvlc, "bla" ) == (VLC_VAR_INTEGER | VLC_VAR_ISCOMMAND | VLC_VAR_HASMIN | VLC_VAR_HASMAX) );
+
+    var_Change( p_libvlc, "bla", VLC_VAR_SETSTEP, &val, NULL );
+    assert( var_Type( p_libvlc, "bla" ) == (VLC_VAR_INTEGER | VLC_VAR_ISCOMMAND | VLC_VAR_HASMIN | VLC_VAR_HASMAX | VLC_VAR_HASSTEP) );
+
+    var_Destroy( p_libvlc, "bla" );
+    var_Destroy( p_libvlc, "bla" );
+    var_Destroy( p_libvlc, "bla" );
+    assert( var_Get( p_libvlc, "bla", &val ) == VLC_ENOVAR );
+
+    var_Create( p_libvlc, "bla", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
+    assert( var_Type( p_libvlc, "bla" ) == (VLC_VAR_INTEGER) );
+
+    assert( var_Create( p_libvlc, "bla", VLC_VAR_INTEGER | VLC_VAR_ISCOMMAND ) == VLC_SUCCESS );
+    assert( var_Type( p_libvlc, "bla" ) == (VLC_VAR_INTEGER | VLC_VAR_ISCOMMAND) );
+
+    assert( var_Create( p_libvlc, "bla", VLC_VAR_INTEGER | VLC_VAR_ISCOMMAND | VLC_VAR_HASCHOICE ) == VLC_SUCCESS );
+    assert( var_Type( p_libvlc, "bla" ) == (VLC_VAR_INTEGER | VLC_VAR_ISCOMMAND | VLC_VAR_HASCHOICE) );
+
+    var_Destroy( p_libvlc, "bla" );
+    var_Destroy( p_libvlc, "bla" );
+    var_Destroy( p_libvlc, "bla" );
+    assert( var_Get( p_libvlc, "bla", &val ) == VLC_ENOVAR );
+
+    var_Create( p_libvlc, "bla", VLC_VAR_INTEGER );
+    var_Change( p_libvlc, "bla", VLC_VAR_SETMIN, &val, NULL );
+    assert( var_Create( p_libvlc, "bla", VLC_VAR_INTEGER | VLC_VAR_ISCOMMAND ) == VLC_SUCCESS );
+    assert( var_Type( p_libvlc, "bla" ) == (VLC_VAR_INTEGER | VLC_VAR_ISCOMMAND | VLC_VAR_HASMIN) );
+    assert( var_Create( p_libvlc, "bla", VLC_VAR_INTEGER | VLC_VAR_HASCHOICE ) == VLC_SUCCESS );
+    assert( var_Type( p_libvlc, "bla" ) == (VLC_VAR_INTEGER | VLC_VAR_ISCOMMAND | VLC_VAR_HASMIN | VLC_VAR_HASCHOICE) );
+
+    var_Destroy( p_libvlc, "bla" );
+    var_Destroy( p_libvlc, "bla" );
+    var_Destroy( p_libvlc, "bla" );
+    assert( var_Get( p_libvlc, "bla", &val ) == VLC_ENOVAR );
+
+    var_Create( p_libvlc, "bla", VLC_VAR_INTEGER );
+    var_Change( p_libvlc, "bla", VLC_VAR_SETMAX, &val, NULL );
+    var_Change( p_libvlc, "bla", VLC_VAR_SETSTEP, &val, NULL );
+    assert( var_Create( p_libvlc, "bla", VLC_VAR_INTEGER | VLC_VAR_ISCOMMAND ) == VLC_SUCCESS );
+    assert( var_Type( p_libvlc, "bla" ) == (VLC_VAR_INTEGER | VLC_VAR_ISCOMMAND | VLC_VAR_HASMAX | VLC_VAR_HASSTEP) );
+    assert( var_Create( p_libvlc, "bla", VLC_VAR_INTEGER | VLC_VAR_HASCHOICE ) == VLC_SUCCESS );
+    assert( var_Type( p_libvlc, "bla" ) == (VLC_VAR_INTEGER | VLC_VAR_ISCOMMAND | VLC_VAR_HASMAX | VLC_VAR_HASSTEP | VLC_VAR_HASCHOICE) );
+
     var_Destroy( p_libvlc, "bla" );
+    var_Destroy( p_libvlc, "bla" );
+    var_Destroy( p_libvlc, "bla" );
+    assert( var_Get( p_libvlc, "bla", &val ) == VLC_ENOVAR );
 }
 
 static void test_variables( libvlc_instance_t *p_vlc )
@@ -324,6 +430,12 @@ static void test_variables( libvlc_instance_t *p_vlc )
 
     log( "Testing choices\n" );
     test_choices( p_libvlc );
+
+    log( "Testing var_Change()\n" );
+    test_change( p_libvlc );
+
+    log( "Testing type at creation\n" );
+    test_creation_and_type( p_libvlc );
 }
 
 
@@ -334,9 +446,8 @@ int main( void )
     test_init();
 
     log( "Testing the core variables\n" );
-    libvlc_exception_init( &ex );
-    p_vlc = libvlc_new( test_defaults_nargs, test_defaults_args, &ex );
-    catch();
+    p_vlc = libvlc_new( test_defaults_nargs, test_defaults_args );
+    assert( p_vlc != NULL );
 
     test_variables( p_vlc );