X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=test%2Fnative%2Flibvlc.c;h=35564a344d7b7e85add0cc6274dd733e37c19ea1;hb=c60652e38ac6afd74bd8225e9dae5406f13aaa4f;hp=bab51c708db670427e15055b49cf6d5f34d80d22;hpb=d0802e7d82be036108a7b91a01a091df0092b61d;p=vlc diff --git a/test/native/libvlc.c b/test/native/libvlc.c index bab51c708d..35564a344d 100644 --- a/test/native/libvlc.c +++ b/test/native/libvlc.c @@ -1,51 +1,81 @@ #include "../pyunit.h" #include -static PyObject *exception_test( PyObject *self, PyObject *args ) +PyObject *exception_test( PyObject *self, PyObject *args ) { - libvlc_exception_t exception; + libvlc_exception_t exception; - libvlc_exception_init( &exception ); - ASSERT( !libvlc_exception_raised( &exception) , "Exception raised" ); - ASSERT( !libvlc_exception_get_message( &exception) , "Exception raised" ); + libvlc_exception_init( &exception ); + ASSERT( !libvlc_exception_raised( &exception) , "Exception raised" ); + ASSERT( !libvlc_exception_get_message( &exception) , "Exception raised" ); - libvlc_exception_raise( &exception, NULL ); - ASSERT( !libvlc_exception_get_message( &exception), "Unexpected message" ); - ASSERT( libvlc_exception_raised( &exception), "Exception not raised" ); + libvlc_exception_raise( &exception, NULL ); + ASSERT( !libvlc_exception_get_message( &exception), "Unexpected message" ); + ASSERT( libvlc_exception_raised( &exception), "Exception not raised" ); - libvlc_exception_raise( &exception, "test" ); - ASSERT( libvlc_exception_get_message( &exception), "No Message" ); - ASSERT( libvlc_exception_raised( &exception), "Exception not raised" ); + libvlc_exception_raise( &exception, "test" ); + ASSERT( libvlc_exception_get_message( &exception), "No Message" ); + ASSERT( libvlc_exception_raised( &exception), "Exception not raised" ); - libvlc_exception_clear( &exception ); - ASSERT( !libvlc_exception_raised( &exception ), "Exception not cleared" ); + libvlc_exception_clear( &exception ); + ASSERT( !libvlc_exception_raised( &exception ), "Exception not cleared" ); - Py_INCREF( Py_None ); - return Py_None; + Py_INCREF( Py_None ); + return Py_None; } -static PyObject *create_destroy( PyObject *self, PyObject *args ) +PyObject *create_destroy( PyObject *self, PyObject *args ) { - libvlc_instance_t *p_instance; - char *argv[] = { "vlc", "--quiet" }; + libvlc_instance_t *p_i1, *p_i2; + char *argv1[] = { "vlc", "--quiet" }; + char *argv2[]= { "vlc", "-vvv" }; + int id1,id2; + + printf( "\n" ); libvlc_exception_t exception; libvlc_exception_init( &exception ); - p_instance = libvlc_new( 2, argv, &exception ); - - ASSERT( p_instance != NULL, "Instance creation failed" ); - - ASSERT( !libvlc_exception_raised( &exception ), - "Exception raised while creating instance" ); + /* Create and destroy a single instance */ + fprintf( stderr, "Create 1\n" ); + p_i1 = libvlc_new( 2, argv1, &exception ); + ASSERT( p_i1 != NULL, "Instance creation failed" ); + ASSERT_NOEXCEPTION; + id1 = libvlc_get_vlc_id( p_i1 ); + libvlc_release( p_i1, &exception ); + ASSERT_NOEXCEPTION; + + /* Create and destroy two instances */ + fprintf( stderr, "Create 2\n" ); + p_i1 = libvlc_new( 2, argv1, &exception ); + ASSERT( p_i1 != NULL, "Instance creation failed" ); + ASSERT_NOEXCEPTION; + + fprintf( stderr, "Create 3\n" ); + p_i2 = libvlc_new( 2, argv2, &exception ); + ASSERT( p_i2 != NULL, "Instance creation failed" ); + ASSERT_NOEXCEPTION; + + fprintf( stderr, "Destroy 1\n" ); + libvlc_release( p_i1, &exception ); + ASSERT_NOEXCEPTION; + fprintf( stderr, "Destroy 2\n" ); + libvlc_release( p_i2, &exception ); + ASSERT_NOEXCEPTION; + + /* Deinit */ + fprintf( stderr, "Create 4\n" ); + p_i1 = libvlc_new( 2, argv1, &exception ); + ASSERT_NOEXCEPTION; + id2 = libvlc_get_vlc_id( p_i1 ); + + ASSERT( id1 == id2, "libvlc object ids do not match after deinit" ); - libvlc_destroy( p_instance ); - Py_INCREF( Py_None ); return Py_None; } -static PyObject *playlist_test( PyObject *self, PyObject *args ) + PyObject *playlist_test( PyObject *self, PyObject *args ) { libvlc_instance_t *p_instance; char *argv[] = { "vlc", "--quiet" }; @@ -55,45 +85,94 @@ static PyObject *playlist_test( PyObject *self, PyObject *args ) libvlc_exception_init( &exception ); p_instance = libvlc_new( 2, argv, &exception ); - ASSERT_EXCEPTION; + ASSERT_NOEXCEPTION; /* Initial status */ libvlc_playlist_play( p_instance, 0, 0, argv, &exception ); - ASSERT( libvlc_exception_raised( &exception ), + ASSERT( libvlc_exception_raised( &exception ), "Playlist empty and exception not raised" ); libvlc_exception_clear( &exception ); i_playing = libvlc_playlist_isplaying( p_instance, &exception ); - ASSERT_EXCEPTION; + ASSERT_NOEXCEPTION; ASSERT( i_playing == 0, "Playlist shouldn't be running" ); i_items = libvlc_playlist_items_count( p_instance, &exception ); - ASSERT_EXCEPTION; + ASSERT_NOEXCEPTION; ASSERT( i_items == 0, "Playlist should be empty" ); /* Add 1 item */ libvlc_exception_clear( &exception ); i_id = libvlc_playlist_add( p_instance, "test" , NULL , &exception ); - ASSERT_EXCEPTION; + ASSERT_NOEXCEPTION; ASSERT( i_id > 0 , "Returned identifier is <= 0" ); i_items = libvlc_playlist_items_count( p_instance, &exception ); - ASSERT_EXCEPTION; + ASSERT_NOEXCEPTION; ASSERT( i_items == 1, "Playlist should have 1 item" ); i_playing = libvlc_playlist_isplaying( p_instance, &exception ); - ASSERT_EXCEPTION; + ASSERT_NOEXCEPTION; ASSERT( i_playing == 0, "Playlist shouldn't be running" ); - /* */ - + /* */ + Py_INCREF( Py_None ); return Py_None; } -static PyMethodDef native_libvlc_test_methods[] = { - DEF_METHOD( create_destroy, "Create and destroy" ) - DEF_METHOD( exception_test, "Test Exception handling" ) - DEF_METHOD( playlist_test, "Test Playlist interaction" ) - { NULL, NULL, 0, NULL } -}; + PyObject *vlm_test( PyObject *self, PyObject *args ) +{ + libvlc_instance_t *p_instance; + char *argv[] = { "vlc", "--quiet" }; + char *ppsz_empty[] = {}; + libvlc_exception_t exception; + libvlc_exception_init( &exception ); + + p_instance = libvlc_new( 2, argv, &exception ); + ASSERT_NOEXCEPTION; + + /* Test that working on unexisting streams fail */ + libvlc_vlm_set_enabled( p_instance, "test", 1, &exception ); + ASSERT_EXCEPTION; + libvlc_exception_clear( &exception ); + libvlc_vlm_set_input( p_instance, "test", "input", &exception ); + ASSERT_EXCEPTION; + libvlc_exception_clear( &exception ); + libvlc_vlm_del_media( p_instance, "test", &exception ); + ASSERT_EXCEPTION; + libvlc_exception_clear( &exception ); + + /******* Broadcast *******/ + /* Now create a media */ + libvlc_vlm_add_broadcast( p_instance, "test", "input_test", "output_test", + 0, ppsz_empty, 1, 1, &exception ); + ASSERT_NOEXCEPTION; + libvlc_exception_clear( &exception ); + + /* Change its parameters */ + libvlc_vlm_set_enabled( p_instance, "test", 0, &exception ); + ASSERT_NOEXCEPTION; + libvlc_exception_clear( &exception ); + libvlc_vlm_set_output( p_instance, "test", "output_test2", &exception ); + ASSERT_NOEXCEPTION; + libvlc_exception_clear( &exception ); -DECLARE_MODULE( native_libvlc_test ) + /* Check the parameters */ + fprintf( stderr, "The code for this is not written yet\n"); + + /* Control it a bit */ + fprintf( stderr, "The code for this is not written yet\n"); + + /* Try to delete it */ + libvlc_vlm_del_media( p_instance, "test", &exception ); + ASSERT_NOEXCEPTION; + libvlc_exception_clear( &exception ); + + libvlc_vlm_del_media( p_instance, "test", &exception ); + ASSERT_EXCEPTION; + libvlc_exception_clear( &exception ); + + /******* VOD *******/ + + Py_INCREF( Py_None ); + return Py_None; +}