]> git.sesse.net Git - vlc/blobdiff - test/native/libvlc.c
Use var_InheritString for --decklink-video-connection.
[vlc] / test / native / libvlc.c
index bab51c708db670427e15055b49cf6d5f34d80d22..35564a344d7b7e85add0cc6274dd733e37c19ea1 100644 (file)
@@ -1,51 +1,81 @@
 #include "../pyunit.h"
 #include <vlc/libvlc.h>
 
-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;
+}