]> git.sesse.net Git - vlc/blobdiff - bindings/java/core/src/test/java/org/videolan/jvlc/internal/MediaListPlayerTest.java
jvlc: libvlc state and event type enums aligned with libvlc
[vlc] / bindings / java / core / src / test / java / org / videolan / jvlc / internal / MediaListPlayerTest.java
index e70211aa0460a8b548d073885626449076a7c265..14000484b16bbda6da19778c720c98a912b835f6 100644 (file)
@@ -32,6 +32,7 @@ import org.junit.Before;
 import org.junit.Test;
 import org.videolan.jvlc.internal.LibVlc.LibVlcInstance;
 import org.videolan.jvlc.internal.LibVlc.LibVlcMediaDescriptor;
+import org.videolan.jvlc.internal.LibVlc.LibVlcMediaInstance;
 import org.videolan.jvlc.internal.LibVlc.LibVlcMediaList;
 import org.videolan.jvlc.internal.LibVlc.LibVlcMediaListPlayer;
 import org.videolan.jvlc.internal.LibVlc.libvlc_exception_t;
@@ -39,19 +40,20 @@ import org.videolan.jvlc.internal.LibVlc.libvlc_exception_t;
 
 public class MediaListPlayerTest
 {
-    
+
     private LibVlc libvlc = LibVlc.SYNC_INSTANCE;
 
     private LibVlcInstance libvlcInstance;
-    
-    private String mrl = this.getClass().getResource("/raffa_voice.ogg").getPath();
 
+    private String mrl = this.getClass().getResource("/raffa_voice.ogg").getPath();
 
     @Before
-    public void testSetup()
+    public void testSetup() throws Exception
     {
         libvlc_exception_t exception = new libvlc_exception_t();
-        libvlcInstance = libvlc.libvlc_new(0, new String[]{}, exception);
+        libvlcInstance = libvlc.libvlc_new(0, new String[]{"-I", "dummy", "--aout=dummy", "--vout=dummy" }, exception);
+        // use the following line to use your audio card.
+        // libvlcInstance = libvlc.libvlc_new(0, new String[]{}, exception);
     }
 
     @After
@@ -67,8 +69,9 @@ public class MediaListPlayerTest
         LibVlcMediaListPlayer mediaListPlayer = libvlc.libvlc_media_list_player_new(libvlcInstance, exception);
         Assert.assertNotNull(mediaListPlayer);
         Assert.assertEquals(0, exception.raised);
+        libvlc.libvlc_media_list_player_release(mediaListPlayer);
     }
-    
+
     @Test
     public void mediaListPlayerSetMediaListTest()
     {
@@ -77,28 +80,33 @@ public class MediaListPlayerTest
         LibVlcMediaList mediaList = libvlc.libvlc_media_list_new(libvlcInstance, exception);
         libvlc.libvlc_media_list_player_set_media_list(mediaListPlayer, mediaList, exception);
         Assert.assertEquals(0, exception.raised);
+        libvlc.libvlc_media_list_release(mediaList);
+        libvlc.libvlc_media_list_player_release(mediaListPlayer);
     }
-    
+
     @Test
     public void mediaListPlayerSetMediaListTest2()
     {
         libvlc_exception_t exception = new libvlc_exception_t();
         LibVlcMediaListPlayer mediaListPlayer = libvlc.libvlc_media_list_player_new(libvlcInstance, exception);
         LibVlcMediaList mediaList = libvlc.libvlc_media_list_new(libvlcInstance, exception);
-        LibVlcMediaDescriptor mediaDescriptor = libvlc.libvlc_media_descriptor_new(libvlcInstance, mrl, exception);
-        libvlc.libvlc_media_list_add_media_descriptor(mediaList, mediaDescriptor, exception);
+        LibVlcMediaDescriptor mediaDescriptor = libvlc.libvlc_media_new(libvlcInstance, mrl, exception);
+        libvlc.libvlc_media_list_add_media(mediaList, mediaDescriptor, exception);
         libvlc.libvlc_media_list_player_set_media_list(mediaListPlayer, mediaList, exception);
         Assert.assertEquals(0, exception.raised);
+        libvlc.libvlc_media_list_release(mediaList);
+        libvlc.libvlc_media_list_player_release(mediaListPlayer);
     }
-    
+
     @Test
-    public void mediaListPlayerIsPlayingTest()
+    public void mediaListPlayerIsNotPlayingTest()
     {
         libvlc_exception_t exception = new libvlc_exception_t();
         LibVlcMediaListPlayer mediaListPlayer = libvlc.libvlc_media_list_player_new(libvlcInstance, exception);
         int result = libvlc.libvlc_media_list_player_is_playing(mediaListPlayer, exception);
         Assert.assertEquals(0, result);
         Assert.assertEquals(0, exception.raised);
+        libvlc.libvlc_media_list_player_release(mediaListPlayer);
     }
 
     @Test
@@ -108,6 +116,225 @@ public class MediaListPlayerTest
         LibVlcMediaListPlayer mediaListPlayer = libvlc.libvlc_media_list_player_new(libvlcInstance, exception);
         libvlc.libvlc_media_list_player_play(mediaListPlayer, exception);
         Assert.assertEquals(1, exception.raised);
+        libvlc.libvlc_media_list_player_release(mediaListPlayer);
+    }
+
+    /**
+     * this fails: see https://trac.videolan.org/vlc/ticket/1527
+     */
+    // @Test
+    public void mediaListPlayerPlay()
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        LibVlcMediaListPlayer mediaListPlayer = libvlc.libvlc_media_list_player_new(libvlcInstance, exception);
+        LibVlcMediaList mediaList = libvlc.libvlc_media_list_new(libvlcInstance, exception);
+        LibVlcMediaDescriptor mediaDescriptor = libvlc.libvlc_media_new(libvlcInstance, mrl, exception);
+        libvlc.libvlc_media_list_add_media(mediaList, mediaDescriptor, exception);
+        libvlc.libvlc_media_list_player_set_media_list(mediaListPlayer, mediaList, exception);
+        libvlc.libvlc_media_list_player_play(mediaListPlayer, exception);
+        Assert.assertEquals("Exception message: " + exception.message + ".\n", 0, exception.raised);
+        libvlc.libvlc_media_release(mediaDescriptor);
+        libvlc.libvlc_media_list_release(mediaList);
+        libvlc.libvlc_media_list_player_release(mediaListPlayer);
+    }
+
+    @Test
+    public void mediaListPlayerPlayItemAtIndex() throws Exception
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        LibVlcMediaListPlayer mediaListPlayer = libvlc.libvlc_media_list_player_new(libvlcInstance, exception);
+        LibVlcMediaList mediaList = libvlc.libvlc_media_list_new(libvlcInstance, exception);
+        LibVlcMediaDescriptor mediaDescriptor = libvlc.libvlc_media_new(libvlcInstance, mrl, exception);
+        libvlc.libvlc_media_list_add_media(mediaList, mediaDescriptor, exception);
+        libvlc.libvlc_media_list_player_set_media_list(mediaListPlayer, mediaList, exception);
+        libvlc.libvlc_media_list_player_play_item_at_index(mediaListPlayer, 0, exception);
+        while (true)
+        {
+            int playing = libvlc.libvlc_media_list_player_is_playing(mediaListPlayer, exception);
+            if (exception.raised == 1)
+            {
+                throw new RuntimeException("Native exception thrown");
+            }
+            if (playing == 1)
+            {
+                break;
+            }
+            Thread.sleep(150);
+        }
+        libvlc.libvlc_media_list_player_stop(mediaListPlayer, exception);
+        libvlc.libvlc_media_release(mediaDescriptor);
+        libvlc.libvlc_media_list_release(mediaList);
+        libvlc.libvlc_media_list_player_release(mediaListPlayer);
+    }
+
+    @Test
+    public void mediaListPlayerPlayItem() throws Exception
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        LibVlcMediaListPlayer mediaListPlayer = libvlc.libvlc_media_list_player_new(libvlcInstance, exception);
+        LibVlcMediaList mediaList = libvlc.libvlc_media_list_new(libvlcInstance, exception);
+        LibVlcMediaDescriptor mediaDescriptor = libvlc.libvlc_media_new(libvlcInstance, mrl, exception);
+        libvlc.libvlc_media_list_add_media(mediaList, mediaDescriptor, exception);
+        libvlc.libvlc_media_list_player_set_media_list(mediaListPlayer, mediaList, exception);
+        libvlc.libvlc_media_list_player_play_item(mediaListPlayer, mediaDescriptor, exception);
+        Assert.assertEquals(0, exception.raised);
+        while (true)
+        {
+            int playing = libvlc.libvlc_media_list_player_is_playing(mediaListPlayer, exception);
+            if (exception.raised == 1)
+            {
+                throw new RuntimeException("Native exception thrown");
+            }
+            if (playing == 1)
+            {
+                break;
+            }
+            Thread.sleep(150);
+        }
+        // FIXME give stats the time to run... there's probably a race condition in misc/stats.c:259 that
+        // needs to be fixed
+        // Thread.sleep(400);
+        libvlc.libvlc_media_list_player_stop(mediaListPlayer, exception);
+        libvlc.libvlc_media_list_release(mediaList);
+        libvlc.libvlc_media_list_player_release(mediaListPlayer);
+    }
+
+    @Test
+    public void mediaListPlayerGetStateEnded()
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        LibVlcMediaListPlayer mediaListPlayer = libvlc.libvlc_media_list_player_new(libvlcInstance, exception);
+        int state = libvlc.libvlc_media_list_player_get_state(mediaListPlayer, exception);
+        Assert.assertEquals(LibVlcState.libvlc_Ended.ordinal(), state);
+        libvlc.libvlc_media_list_player_release(mediaListPlayer);
+    }
+
+    @Test
+    public void mediaLtistPlayerPause() throws Exception
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        LibVlcMediaListPlayer mediaListPlayer = libvlc.libvlc_media_list_player_new(libvlcInstance, exception);
+        LibVlcMediaList mediaList = libvlc.libvlc_media_list_new(libvlcInstance, exception);
+        LibVlcMediaDescriptor mediaDescriptor = libvlc.libvlc_media_new(libvlcInstance, mrl, exception);
+        libvlc.libvlc_media_list_add_media(mediaList, mediaDescriptor, exception);
+        libvlc.libvlc_media_list_player_set_media_list(mediaListPlayer, mediaList, exception);
+        libvlc.libvlc_media_list_player_play_item(mediaListPlayer, mediaDescriptor, exception);
+        while (true)
+        {
+            int playing = libvlc.libvlc_media_list_player_is_playing(mediaListPlayer, exception);
+            if (exception.raised == 1)
+            {
+                throw new RuntimeException("Native exception thrown");
+            }
+            if (playing == 1)
+            {
+                break;
+            }
+            Thread.sleep(150);
+        }
+        libvlc.libvlc_media_list_player_pause(mediaListPlayer, exception);
+        Assert.assertEquals(exception.message, 0, exception.raised);
+        while (true)
+        {
+            int playing = libvlc.libvlc_media_list_player_is_playing(mediaListPlayer, exception);
+            if (exception.raised == 1)
+            {
+                throw new RuntimeException("Native exception thrown");
+            }
+            if (playing == 0)
+            {
+                break;
+            }
+            Thread.sleep(150);
+        }
+        int state = libvlc.libvlc_media_list_player_get_state(mediaListPlayer, exception);
+        Assert.assertEquals(exception.message, 0, exception.raised);
+        Assert.assertEquals(
+            "Expected state: " + LibVlcState.libvlc_Paused + ".\n",
+            LibVlcState.libvlc_Paused.ordinal(),
+            state);
+        libvlc.libvlc_media_list_player_stop(mediaListPlayer, exception);
+        libvlc.libvlc_media_list_release(mediaList);
+        libvlc.libvlc_media_list_player_release(mediaListPlayer);
+    }
+
+    @Test
+    public void mediaListPlayerSetMediaInstance()
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        LibVlcMediaListPlayer mediaListPlayer = libvlc.libvlc_media_list_player_new(libvlcInstance, exception);
+        LibVlcMediaDescriptor md = libvlc.libvlc_media_new(libvlcInstance, mrl, exception);
+        LibVlcMediaInstance mi = libvlc.libvlc_media_player_new_from_media(md, exception);
+        libvlc.libvlc_media_list_player_set_media_player(mediaListPlayer, mi, exception);
+        Assert.assertEquals(0, exception.raised);
+    }
+
+    @Test
+    public void mediaListPlayerNextNoItems()
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        LibVlcMediaListPlayer mediaListPlayer = libvlc.libvlc_media_list_player_new(libvlcInstance, exception);
+        libvlc.libvlc_media_list_player_next(mediaListPlayer, exception);
+        Assert.assertEquals(1, exception.raised);
+    }
+
+    /**
+     * fails, see https://trac.videolan.org/vlc/ticket/1535
+     */
+    // @Test
+    public void mediaListPlayerNext() throws Exception
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        LibVlcMediaListPlayer mediaListPlayer = libvlc.libvlc_media_list_player_new(libvlcInstance, exception);
+        LibVlcMediaList mediaList = libvlc.libvlc_media_list_new(libvlcInstance, exception);
+        LibVlcMediaDescriptor mediaDescriptor = libvlc.libvlc_media_new(libvlcInstance, mrl, exception);
+        libvlc.libvlc_media_list_add_media(mediaList, mediaDescriptor, exception);
+        libvlc.libvlc_media_list_add_media(mediaList, mediaDescriptor, exception);
+        libvlc.libvlc_media_list_player_set_media_list(mediaListPlayer, mediaList, exception);
+        libvlc.libvlc_media_list_player_play_item_at_index(mediaListPlayer, 0, exception);
+        Thread.sleep(150);
+        libvlc.libvlc_media_list_player_next(mediaListPlayer, exception);
+        Assert.assertEquals(0, exception.raised);
+        libvlc.libvlc_media_list_release(mediaList);
+    }
+
+    @Test
+    public void mediaListPlayerIsPlaying() throws Exception
+    {
+        libvlc_exception_t exception = new libvlc_exception_t();
+        LibVlcMediaListPlayer mediaListPlayer = libvlc.libvlc_media_list_player_new(libvlcInstance, exception);
+        LibVlcMediaList mediaList = libvlc.libvlc_media_list_new(libvlcInstance, exception);
+        LibVlcMediaDescriptor mediaDescriptor = libvlc.libvlc_media_new(libvlcInstance, mrl, exception);
+        libvlc.libvlc_media_list_add_media(mediaList, mediaDescriptor, exception);
+        libvlc.libvlc_media_list_player_set_media_list(mediaListPlayer, mediaList, exception);
+        libvlc.libvlc_media_list_player_play_item(mediaListPlayer, mediaDescriptor, exception);
+
+        while (true)
+        {
+            int playing = libvlc.libvlc_media_list_player_get_state(mediaListPlayer, exception);
+            Assert.assertEquals(0, exception.raised);
+            if (playing == LibVlcState.libvlc_Playing.ordinal())
+            {
+                break;
+            }
+            Thread.sleep(150);
+        }
+
+        libvlc.libvlc_media_list_player_stop(mediaListPlayer, exception);
+        while (true)
+        {
+            int playing = libvlc.libvlc_media_list_player_is_playing(mediaListPlayer, exception);
+            Assert.assertEquals(0, exception.raised);
+            if (playing == 0)
+            {
+                break;
+            }
+            Thread.sleep(150);
+        }
+        Assert.assertEquals(LibVlcState.libvlc_Ended.ordinal(), libvlc.libvlc_media_list_player_get_state(
+            mediaListPlayer,
+            exception));
+        libvlc.libvlc_media_list_release(mediaList);
     }
 
 }