From 0939d0ec10a0a59eabbe9d8666743ce23aad1794 Mon Sep 17 00:00:00 2001 From: Murray Cumming Date: Mon, 10 Sep 2012 12:35:17 +0200 Subject: [PATCH] renderer: Add checks for GstPlayBin2 --- src/librygel-renderer/rygel-playbin-player.vala | 4 ++ src/librygel-renderer/rygel-playbin-renderer.vala | 8 ++++ tests/Makefile.am | 24 +++++++++++ tests/rygel-playbin-renderer-test.vala | 52 +++++++++++++++++++++++ 4 files changed, 88 insertions(+) create mode 100644 tests/rygel-playbin-renderer-test.vala diff --git a/src/librygel-renderer/rygel-playbin-player.vala b/src/librygel-renderer/rygel-playbin-player.vala index 392f21e..65c03ca 100644 --- a/src/librygel-renderer/rygel-playbin-player.vala +++ b/src/librygel-renderer/rygel-playbin-player.vala @@ -253,6 +253,10 @@ public class Rygel.Playbin.Player : GLib.Object, Rygel.MediaPlayer { } public Player.wrap (Gst.Element playbin) { + + return_if_fail (playbin != null); + return_if_fail (playbin.get_type ().name() == "GstPlayBin2"); + this.playbin = playbin; this.setup_playbin (); } diff --git a/src/librygel-renderer/rygel-playbin-renderer.vala b/src/librygel-renderer/rygel-playbin-renderer.vala index dd81780..d85ae6b 100644 --- a/src/librygel-renderer/rygel-playbin-renderer.vala +++ b/src/librygel-renderer/rygel-playbin-renderer.vala @@ -26,6 +26,10 @@ internal class Rygel.Playbin.WrappingPlugin : Rygel.MediaRendererPlugin { public WrappingPlugin (Gst.Element playbin) { base ("LibRygel-Renderer", _("LibRygel Renderer")); + + return_val_if_fail (playbin != null, null); + return_val_if_fail (playbin.get_type ().name() == "GstPlayBin2", null); + this.player = new Player.wrap (playbin); } @@ -67,6 +71,10 @@ public class Rygel.Playbin.Renderer : Rygel.MediaDevice { */ public Renderer.wrap (Gst.Element pipeline, string title) { base (); + + return_val_if_fail (pipeline != null, null); + return_val_if_fail (pipeline.get_type ().name() == "GstPlayBin2", null); + this.plugin = new WrappingPlugin (pipeline); this.prepare_upnp (title); } diff --git a/tests/Makefile.am b/tests/Makefile.am index 6f45dfb..7ee2aa7 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -42,6 +42,7 @@ check_PROGRAMS = rygel-http-item-uri-test \ rygel-http-post-test \ rygel-searchable-container-test \ rygel-item-creator-test \ + rygel-playbin-renderer-test \ rygel-regression TESTS = $(check_PROGRAMS) @@ -93,6 +94,29 @@ rygel_item_creator_test_SOURCES = rygel-item-creator-test.vala \ rygel-relational-expression.vala \ rygel-search-expression.vala + +rygel_playbin_renderer_test_SOURCES = rygel-playbin-renderer-test.vala + +rygel_playbin_renderer_test_VALAFLAGS = \ + $(AM_VALAFLAGS) \ + --pkg rygel-renderer-1.0 \ + --pkg rygel-core-1.0 \ + --vapidir $(top_builddir)/src/librygel-renderer \ + --vapidir $(top_builddir)/src/librygel-core + +rygel_playbin_renderer_test_LDADD = \ + $(LDADD) \ + $(top_builddir)/src/librygel-renderer/librygel-renderer-1.0.la \ + $(top_builddir)/src/librygel-core/librygel-core-1.0.la + +rygel_playbin_renderer_test_CFLAGS = \ + $(AM_CFLAGS) \ + -I$(top_builddir)/src/librygel-renderer \ + -I$(top_srcdir)/src/librygel-renderer \ + -I$(top_builddir)/src/librygel-core \ + -I$(top_srcdir)/src/librygel-core + + rygel_regression_SOURCES = \ rygel-regression.vala diff --git a/tests/rygel-playbin-renderer-test.vala b/tests/rygel-playbin-renderer-test.vala new file mode 100644 index 0000000..94d35ea --- /dev/null +++ b/tests/rygel-playbin-renderer-test.vala @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2012 Openismus GmbH + * + * Author: Murray Cumming + * + * This file is part of Rygel. + * + * Rygel is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Rygel 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/** + * TODO: This currently just tests instantiation. + * We should also test how it works somehow. + */ +private class Rygel.PlaybinRendererTest : GLib.Object { + public static int main (string[] args) { + Gst.init (ref args); + + var test = new PlaybinRendererTest (); + test.test_with_default_gstplaybin2 (); + test.test_with_existing_gstplaybin2 (); + + return 0; + } + + public void test_with_default_gstplaybin2() { + var renderer = new Rygel.Playbin.Renderer ("test playbin renderer"); + assert (renderer != null); + var player = Rygel.Playbin.Player.get_default (); + assert (player.playbin != null); + } + + public void test_with_existing_gstplaybin2() { + var element = Gst.ElementFactory.make ("playbin2", null); + var renderer = new Rygel.Playbin.Renderer.wrap (element, "test playbin renderer"); + assert (renderer != null); + var player = Rygel.Playbin.Player.get_default (); + assert (player.playbin != null); + } +} -- 2.7.4