]> git.sesse.net Git - vlc/blobdiff - src/control/testapi.c
fix testapi test: libvlc_instance_(play|pause|stop) are asynchronous, so wait for...
[vlc] / src / control / testapi.c
index 26a22efd20cc30b7c58ba12157087fc13b972147..8149f5b1c6159b19919e61fc99e868264df51e26 100644 (file)
@@ -50,9 +50,13 @@ static void catch (void)
     libvlc_exception_clear (&ex);
 }
 
+/* Test we have */
 static void test_core (const char ** argv, int argc);
 static void test_media_list (const char ** argv, int argc);
+static void test_events (const char ** argv, int argc);
+static void test_media_player_play_stop(const char** argv, int argc);
 
+/* Tests implementations */
 static void test_core (const char ** argv, int argc)
 {
     libvlc_instance_t *vlc;
@@ -113,45 +117,6 @@ static void test_media_list (const char ** argv, int argc)
     catch ();
 }
 
-static void test_file_playback (const char ** argv, int argc, const char * file)
-{
-    libvlc_instance_t *vlc;
-    libvlc_media_descriptor_t *md;
-    libvlc_media_instance_t *mi;
-
-    log ("Testing playback of %s\n", file);
-
-    libvlc_exception_init (&ex);
-    vlc = libvlc_new (argc, argv, &ex);
-    catch ();
-
-    md = libvlc_media_descriptor_new (vlc, file, &ex);
-    catch ();
-
-    mi = libvlc_media_instance_new_from_media_descriptor (md, &ex);
-    catch ();
-    
-    libvlc_media_descriptor_release (md);
-
-    libvlc_media_instance_play (mi, &ex);
-    catch ();
-
-    /* FIXME: Do something clever */
-    sleep(1);
-
-    assert( libvlc_media_instance_get_state (mi, &ex) != libvlc_Error );
-    catch ();
-
-    libvlc_media_instance_stop (mi, &ex);
-    catch ();
-
-    libvlc_media_instance_release (mi);
-    catch ();
-
-    libvlc_release (vlc);
-    catch ();
-}
-
 /* This one is an internal API. We use it here to run tests that
  * don't depends on playback, and only test the event framework */
 extern void libvlc_event_send( libvlc_event_manager_t *, libvlc_event_t *);
@@ -211,19 +176,19 @@ static void test_events (const char ** argv, int argc)
 
     em = libvlc_media_instance_event_manager (mi, &ex);
 
-    log ("Testing attaching to Media Instance\n");
+    log ("Testing attaching to Media Instance\n");
 
     for (i = 0; i < mi_events_len; i++) {
         libvlc_event_attach (em, mi_events[i], test_events_dummy_callback, &callback_was_called, &ex);
         catch ();
     }
 
-    log ("Testing event reception\n");
+    log ("Testing event reception\n");
 
     for (i = 0; i < mi_events_len; i++)
         test_event_type_reception (em, mi_events[i], &callback_was_called);
 
-    log ("Testing event detaching while in the event callback\n");
+    log ("Testing event detaching while in the event callback\n");
 
     libvlc_event_t event;
     event.type = mi_events[mi_events_len-1];
@@ -242,10 +207,11 @@ static void test_events (const char ** argv, int argc)
     libvlc_event_send (em, &event);
     assert( !callback_was_called );
 
-    libvlc_event_detach (em, mi_events[i], test_events_callback_and_detach, &callback_was_called, &ex);
+    libvlc_event_detach (em, mi_events[mi_events_len-1], test_events_callback_and_detach, &callback_was_called, &ex);
     catch ();
 
-    /* Detach the other events */
+    log ("+ Testing regular detach()\n");
+
     for (i = 0; i < mi_events_len - 1; i++) {
         libvlc_event_detach (em, mi_events[i], test_events_dummy_callback, &callback_was_called, &ex);
         catch ();
@@ -258,16 +224,57 @@ static void test_events (const char ** argv, int argc)
     catch ();
 }
 
+static void test_media_player_play_stop(const char** argv, int argc)
+{
+    libvlc_instance_t *vlc;
+    libvlc_media_descriptor_t *md;
+    libvlc_media_instance_t *mi;
+    const char * file = "file://../bindings/java/core/src/test/resources/raffa_voice.ogg";
+
+    log ("Testing play and pause of %s\n", file);
+
+    libvlc_exception_init (&ex);
+    vlc = libvlc_new (argc, argv, &ex);
+    catch ();
+
+    md = libvlc_media_descriptor_new (vlc, file, &ex);
+    catch ();
+
+    mi = libvlc_media_instance_new_from_media_descriptor (md, &ex);
+    catch ();
+    
+    libvlc_media_descriptor_release (md);
+
+    libvlc_media_instance_play (mi, &ex);
+    catch ();
+
+    /* FIXME: Do something clever */
+    sleep(1);
+
+    assert( libvlc_media_instance_get_state (mi, &ex) != libvlc_Error );
+    catch ();
+
+    libvlc_media_instance_stop (mi, &ex);
+    catch ();
+    sleep(1);
+
+    libvlc_media_instance_release (mi);
+    catch ();
+
+    libvlc_release (vlc);
+    catch ();
+}
+
 int main (int argc, char *argv[])
 {
     const char *args[argc + 5];
     int nlibvlc_args = sizeof (args) / sizeof (args[0]);
 
-    alarm (30); /* Make sure "make check" does not get stuck */
+    alarm (50); /* Make sure "make check" does not get stuck */
 
     args[0] = "-vvv";
     args[1] = "-I";
-    args[2] = "-dummy";
+    args[2] = "dummy";
     args[3] = "--plugin-path=../modules";
     args[4] = "--vout=dummy";
     args[5] = "--aout=dummy";
@@ -280,5 +287,7 @@ int main (int argc, char *argv[])
 
     test_media_list (args, nlibvlc_args);
 
+    test_media_player_play_stop(args, nlibvlc_args);
+
     return 0;
 }