# -*- Mode: Python -*- # vi:si:et:sw=4:sts=4:ts=4 # # gst-python - Python bindings for GStreamer # Copyright (C) 2002 David I. Lehn # Copyright (C) 2004 Johan Dahlin # Copyright (C) 2005 Edward Hervey # # This library 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.1 of the License, or (at your option) any later version. # # This library 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 library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA from common import gst, unittest, TestCase import gobject def find_mixer_element(): """ Searches for an element implementing the mixer interface """ allmix = [x for x in gst.registry_get_default().get_feature_list(gst.ElementFactory) if x.has_interface("GstMixer") and x.has_interface("GstPropertyProbe")] if allmix == []: return None return allmix[0] class Availability(TestCase): def testXOverlay(self): assert hasattr(gst.interfaces, 'XOverlay') assert issubclass(gst.interfaces.XOverlay, gobject.GInterface) def testMixer(self): assert hasattr(gst.interfaces, 'Mixer') assert issubclass(gst.interfaces.Mixer, gobject.GInterface) class FunctionCall(TestCase): def FIXME_testXOverlay(self): # obviously a testsuite is not allowed to instantiate this # since it needs a running X or will fail. find some way to # deal with that. element = gst.element_factory_make('xvimagesink') assert isinstance(element, gst.Element) assert isinstance(element, gst.interfaces.XOverlay) element.set_xwindow_id(0L) class MixerTest(TestCase): def setUp(self): TestCase.setUp(self) amix = find_mixer_element() if amix: self.mixer = amix.create() else: self.mixer = None def tearDown(self): del self.mixer TestCase.tearDown(self) def testGetProperty(self): if self.mixer == None: return self.failUnless(self.mixer.probe_get_property('device')) self.assertRaises(ValueError, self.mixer.probe_get_property, 'non-existent') def testGetProperties(self): if self.mixer == None: return properties = self.mixer.probe_get_properties() self.failUnless(properties) self.assertEqual(type(properties), list) prop = properties[0] self.assertEqual(prop.name, 'device') self.assertEqual(prop.value_type, gobject.TYPE_STRING) def testGetValuesName(self): if self.mixer == None: return values = self.mixer.probe_get_values_name('device') self.assertEqual(type(values), list) if __name__ == "__main__": unittest.main()