From ed968ea6ac120499b44fc579ed61e3f9d9718cfc Mon Sep 17 00:00:00 2001 From: Filippo Carone Date: Sun, 21 Dec 2008 16:40:48 +0100 Subject: [PATCH] jvlc: more callback related tests --- .../jvlc/internal/AbstractVLCEventTest.java | 41 ++++++ .../jvlc/internal/LibVlcMediaEventsTest.java | 11 +- .../internal/LibVlcMediaListEventsTest.java | 100 +++++++++++++ .../internal/LibVlcMediaPlayerEventsTest.java | 132 ++++++++++++++++++ 4 files changed, 275 insertions(+), 9 deletions(-) create mode 100644 bindings/java/core/src/test/java/org/videolan/jvlc/internal/AbstractVLCEventTest.java create mode 100644 bindings/java/core/src/test/java/org/videolan/jvlc/internal/LibVlcMediaListEventsTest.java create mode 100644 bindings/java/core/src/test/java/org/videolan/jvlc/internal/LibVlcMediaPlayerEventsTest.java diff --git a/bindings/java/core/src/test/java/org/videolan/jvlc/internal/AbstractVLCEventTest.java b/bindings/java/core/src/test/java/org/videolan/jvlc/internal/AbstractVLCEventTest.java new file mode 100644 index 0000000000..edd5bc1eea --- /dev/null +++ b/bindings/java/core/src/test/java/org/videolan/jvlc/internal/AbstractVLCEventTest.java @@ -0,0 +1,41 @@ +/***************************************************************************** + * AbstractVLCEventTest.java: VLC Java Bindings + ***************************************************************************** + * Copyright (C) 1998-2008 the VideoLAN team + * + * Authors: Filippo Carone + * + * + * $Id $ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. + *****************************************************************************/ + +package org.videolan.jvlc.internal; + +import org.junit.After; + + +public class AbstractVLCEventTest extends AbstractVLCInternalTest +{ + protected int eventFired; + + @After + public void cleanupFired() + { + eventFired = 0; + } + +} diff --git a/bindings/java/core/src/test/java/org/videolan/jvlc/internal/LibVlcMediaEventsTest.java b/bindings/java/core/src/test/java/org/videolan/jvlc/internal/LibVlcMediaEventsTest.java index 7eba8d425e..0db6802f0c 100644 --- a/bindings/java/core/src/test/java/org/videolan/jvlc/internal/LibVlcMediaEventsTest.java +++ b/bindings/java/core/src/test/java/org/videolan/jvlc/internal/LibVlcMediaEventsTest.java @@ -37,16 +37,8 @@ import org.videolan.jvlc.internal.LibVlc.libvlc_event_t; import com.sun.jna.Pointer; -public class LibVlcMediaEventsTest extends AbstractVLCInternalTest +public class LibVlcMediaEventsTest extends AbstractVLCEventTest { - - int eventFired = 0; - - @After - public void cleanupFired() - { - eventFired = 0; - } @Test public void mediaFreedTest() @@ -58,6 +50,7 @@ public class LibVlcMediaEventsTest extends AbstractVLCInternalTest public void callback(libvlc_event_t libvlc_event, Pointer userData) { + Assert.assertEquals(LibVlcEventType.libvlc_MediaFreed.ordinal(), libvlc_event.type); eventFired = 1; } diff --git a/bindings/java/core/src/test/java/org/videolan/jvlc/internal/LibVlcMediaListEventsTest.java b/bindings/java/core/src/test/java/org/videolan/jvlc/internal/LibVlcMediaListEventsTest.java new file mode 100644 index 0000000000..7339cfb5d5 --- /dev/null +++ b/bindings/java/core/src/test/java/org/videolan/jvlc/internal/LibVlcMediaListEventsTest.java @@ -0,0 +1,100 @@ +/***************************************************************************** + * LibVlcMediaListEventsTest.java: VLC Java Bindings + ***************************************************************************** + * Copyright (C) 1998-2008 the VideoLAN team + * + * Authors: Filippo Carone + * + * + * $Id $ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. + *****************************************************************************/ + +package org.videolan.jvlc.internal; + +import junit.framework.Assert; + +import org.junit.Test; +import org.videolan.jvlc.internal.LibVlc.LibVlcCallback; +import org.videolan.jvlc.internal.LibVlc.LibVlcEventManager; +import org.videolan.jvlc.internal.LibVlc.LibVlcMedia; +import org.videolan.jvlc.internal.LibVlc.LibVlcMediaList; +import org.videolan.jvlc.internal.LibVlc.libvlc_event_t; + +import com.sun.jna.Pointer; + + +public class LibVlcMediaListEventsTest extends AbstractVLCEventTest +{ + + @Test + public void itemAddedTest() + { + LibVlcMediaList mediaList = libvlc.libvlc_media_list_new(libvlcInstance, exception); + LibVlcMedia media = libvlc.libvlc_media_new(libvlcInstance, mrl, exception); + + LibVlcEventManager eventManager = libvlc.libvlc_media_list_event_manager(mediaList, exception); + LibVlcCallback callback = new LibVlc.LibVlcCallback() + { + + public void callback(libvlc_event_t libvlc_event, Pointer userData) + { + Assert.assertEquals(LibVlcEventType.libvlc_MediaListItemAdded.ordinal(), libvlc_event.type); + eventFired = 1; + } + }; + + libvlc.libvlc_event_attach( + eventManager, + LibVlcEventType.libvlc_MediaListItemAdded.ordinal(), + callback, + null, + exception); + + libvlc.libvlc_media_list_add_media(mediaList, media, exception); + Assert.assertEquals(1, eventFired); + } + + @Test + public void itemDeletedTest() + { + LibVlcMediaList mediaList = libvlc.libvlc_media_list_new(libvlcInstance, exception); + LibVlcMedia media = libvlc.libvlc_media_new(libvlcInstance, mrl, exception); + + LibVlcEventManager eventManager = libvlc.libvlc_media_list_event_manager(mediaList, exception); + LibVlcCallback callback = new LibVlc.LibVlcCallback() + { + + public void callback(libvlc_event_t libvlc_event, Pointer userData) + { + Assert.assertEquals(LibVlcEventType.libvlc_MediaListItemDeleted.ordinal(), libvlc_event.type); + eventFired = 1; + } + }; + + libvlc.libvlc_event_attach( + eventManager, + LibVlcEventType.libvlc_MediaListItemDeleted.ordinal(), + callback, + null, + exception); + + libvlc.libvlc_media_list_add_media(mediaList, media, exception); + libvlc.libvlc_media_list_remove_index(mediaList, 0, exception); + Assert.assertEquals(1, eventFired); + } + +} diff --git a/bindings/java/core/src/test/java/org/videolan/jvlc/internal/LibVlcMediaPlayerEventsTest.java b/bindings/java/core/src/test/java/org/videolan/jvlc/internal/LibVlcMediaPlayerEventsTest.java new file mode 100644 index 0000000000..fa70e9df85 --- /dev/null +++ b/bindings/java/core/src/test/java/org/videolan/jvlc/internal/LibVlcMediaPlayerEventsTest.java @@ -0,0 +1,132 @@ +/***************************************************************************** + * LibVlcMediaPlayerEventsTest.java: VLC Java Bindings + ***************************************************************************** + * Copyright (C) 1998-2008 the VideoLAN team + * + * Authors: Filippo Carone + * + * + * $Id $ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. + *****************************************************************************/ + +package org.videolan.jvlc.internal; + +import junit.framework.Assert; + +import org.junit.After; +import org.junit.Test; +import org.videolan.jvlc.internal.LibVlc.LibVlcCallback; +import org.videolan.jvlc.internal.LibVlc.LibVlcEventManager; +import org.videolan.jvlc.internal.LibVlc.LibVlcMedia; +import org.videolan.jvlc.internal.LibVlc.LibVlcMediaPlayer; +import org.videolan.jvlc.internal.LibVlc.libvlc_event_t; + +import com.sun.jna.Pointer; + + +public class LibVlcMediaPlayerEventsTest extends AbstractVLCEventTest +{ + @Test + public void testPlayingEvent() throws Exception + { + LibVlcMedia media = libvlc.libvlc_media_new(libvlcInstance, mrl, exception); + LibVlcMediaPlayer mediaPlayer = libvlc.libvlc_media_player_new_from_media(media, exception); + LibVlcEventManager eventManager = libvlc.libvlc_media_player_event_manager(mediaPlayer, exception); + LibVlcCallback callback = new LibVlc.LibVlcCallback() + { + + public void callback(libvlc_event_t libvlc_event, Pointer userData) + { + Assert.assertEquals(LibVlcEventType.libvlc_MediaPlayerPlaying.ordinal(), libvlc_event.type); + eventFired = 1; + } + }; + + libvlc.libvlc_event_attach( + eventManager, + LibVlcEventType.libvlc_MediaPlayerPlaying.ordinal(), + callback, + null, + exception); + libvlc.libvlc_media_player_play(mediaPlayer, exception); + Thread.sleep(2000L); + Assert.assertEquals(1, eventFired); + } + + @Test + public void testPausedEvent() throws Exception + { + LibVlcMedia media = libvlc.libvlc_media_new(libvlcInstance, mrl, exception); + LibVlcMediaPlayer mediaPlayer = libvlc.libvlc_media_player_new_from_media(media, exception); + LibVlcEventManager eventManager = libvlc.libvlc_media_player_event_manager(mediaPlayer, exception); + LibVlcCallback callback = new LibVlc.LibVlcCallback() + { + + public void callback(libvlc_event_t libvlc_event, Pointer userData) + { + Assert.assertEquals(LibVlcEventType.libvlc_MediaPlayerPaused.ordinal(), libvlc_event.type); + eventFired = 1; + } + }; + + libvlc.libvlc_event_attach( + eventManager, + LibVlcEventType.libvlc_MediaPlayerPaused.ordinal(), + callback, + null, + exception); + + libvlc.libvlc_media_player_play(mediaPlayer, exception); + Thread.sleep(1000L); + libvlc.libvlc_media_player_pause(mediaPlayer, exception); + Thread.sleep(1000L); + + Assert.assertEquals(1, eventFired); + } + + @Test + public void testStoppedEvent() throws Exception + { + LibVlcMedia media = libvlc.libvlc_media_new(libvlcInstance, mrl, exception); + LibVlcMediaPlayer mediaPlayer = libvlc.libvlc_media_player_new_from_media(media, exception); + LibVlcEventManager eventManager = libvlc.libvlc_media_player_event_manager(mediaPlayer, exception); + LibVlcCallback callback = new LibVlc.LibVlcCallback() + { + + public void callback(libvlc_event_t libvlc_event, Pointer userData) + { + Assert.assertEquals(LibVlcEventType.libvlc_MediaPlayerStopped.ordinal(), libvlc_event.type); + eventFired = 1; + } + }; + + libvlc.libvlc_event_attach( + eventManager, + LibVlcEventType.libvlc_MediaPlayerStopped.ordinal(), + callback, + null, + exception); + + libvlc.libvlc_media_player_play(mediaPlayer, exception); + Thread.sleep(1000L); + libvlc.libvlc_media_player_stop(mediaPlayer, exception); + Thread.sleep(1000L); + + Assert.assertEquals(1, eventFired); + } + +} -- 2.39.5