--- /dev/null
+#!/usr/bin/python
+#
+# testsuite for gstreamer.Element
+
+import common
+from common import gst, unittest
+
+class ElementTest(unittest.TestCase):
+ name = 'fakesink'
+ alias = 'sink'
+
+ def testBadConstruct(self):
+ self.assertRaises(TypeError, gst.Element)
+ self.assertRaises(TypeError, gst.Element, None)
+
+ def testGoodConstructor(self):
+ element = gst.Element(self.name, self.alias)
+ assert element is not None, 'element is None'
+ assert isinstance(element, gst.Element)
+ assert element.get_name() == self.alias
+
+ def testGoodConstructor2(self):
+ element = gst.element_factory_make(self.name, self.alias)
+ assert element is not None, 'element is None'
+ assert isinstance(element, gst.Element)
+ assert element.get_name() == self.alias
+
+class FakeSinkTest(ElementTest):
+ FAKESINK_STATE_ERROR_NONE = "0"
+ FAKESINK_STATE_ERROR_NULL_READY, = "1"
+ FAKESINK_STATE_ERROR_READY_PAUSED, = "2"
+ FAKESINK_STATE_ERROR_PAUSED_PLAYING = "3"
+ FAKESINK_STATE_ERROR_PLAYING_PAUSED = "4"
+ FAKESINK_STATE_ERROR_PAUSED_READY = "5"
+ FAKESINK_STATE_ERROR_READY_NULL = "6"
+
+ name = 'fakesink'
+ alias = 'sink'
+ def setUp(self):
+ self.element = gst.Element('fakesink', 'sink')
+
+ def checkError(self, old_state, state, name):
+ assert self.element.get_state() == gst.STATE_NULL
+ assert self.element.set_state(old_state)
+ assert self.element.get_state() == old_state
+
+ self.element.set_property('state-error', name)
+ def error_cb(element, source, error, debug):
+ assert isinstance(element, gst.Element)
+ assert element == self.element
+ assert isinstance(source, gst.Element)
+ assert source == self.element
+ assert isinstance(error, gst.GError)
+
+ self.element.connect('error', error_cb)
+ error_message = common.run_silent(self.element.set_state, state)
+
+ assert error_message.find('ERROR') != -1
+ self.element.get_state() == old_state, 'state changed'
+
+ def testStateErrorNullReady(self):
+ self.checkError(gst.STATE_NULL, gst.STATE_READY,
+ self.FAKESINK_STATE_ERROR_NULL_READY)
+
+ def testStateErrorReadyPaused(self):
+ self.checkError(gst.STATE_READY, gst.STATE_PAUSED,
+ self.FAKESINK_STATE_ERROR_READY_PAUSED)
+
+ def testStateErrorPausedPlaying(self):
+ self.checkError(gst.STATE_PAUSED, gst.STATE_PLAYING,
+ self.FAKESINK_STATE_ERROR_PAUSED_PLAYING)
+
+ def testStateErrorPlayingPaused(self):
+ self.checkError(gst.STATE_PLAYING, gst.STATE_PAUSED,
+ self.FAKESINK_STATE_ERROR_PLAYING_PAUSED)
+
+ def testStateErrorPausedReady(self):
+ self.checkError(gst.STATE_PAUSED, gst.STATE_READY,
+ self.FAKESINK_STATE_ERROR_PAUSED_READY)
+
+ def testStateErrorReadyNull(self):
+ self.checkError(gst.STATE_READY, gst.STATE_NULL,
+ self.FAKESINK_STATE_ERROR_READY_NULL)
+
+ def checkStateChange(self, old, new):
+ def state_change_cb(element, old_s, new_s):
+ assert isinstance(element, gst.Element)
+ assert element == self.element
+ assert old_s == old
+ assert new_s == new
+
+ assert self.element.set_state(old)
+ assert self.element.get_state() == old
+
+ self.element.connect('state-change', state_change_cb)
+
+ assert self.element.set_state(new)
+ assert self.element.get_state() == new
+
+ def testStateChangeNullReady(self):
+ self.checkStateChange(gst.STATE_NULL, gst.STATE_READY)
+
+ def testStateChangeReadyPaused(self):
+ self.checkStateChange(gst.STATE_READY, gst.STATE_PAUSED)
+
+ def testStateChangePausedPlaying(self):
+ self.checkStateChange(gst.STATE_PAUSED, gst.STATE_PLAYING)
+
+ def testStateChangePlayingPaused(self):
+ self.checkStateChange(gst.STATE_PLAYING, gst.STATE_PAUSED)
+
+ def testStateChangePausedReady(self):
+ self.checkStateChange(gst.STATE_PAUSED, gst.STATE_READY)
+
+ def testStateChangeReadyNull(self):
+ self.checkStateChange(gst.STATE_READY, gst.STATE_NULL)
+
+class NonExistentTest(ElementTest):
+ name = 'this-element-does-not-exist'
+ alias = 'no-alias'
+
+ testGoodConstructor = lambda s: None
+ testGoodConstructor2 = lambda s: None
+
+class FileSrcTest(ElementTest):
+ name = 'filesrc'
+ alias = 'source'
+
+class FileSinkTest(ElementTest):
+ name = 'filesink'
+ alias = 'sink'
+
+class ElementName(unittest.TestCase):
+ def testElementStateGetName(self):
+ get_name = gst.element_state_get_name
+ for state in ('NULL',
+ 'READY',
+ 'PLAYING',
+ 'PAUSED'):
+ name = 'STATE_' + state
+ assert hasattr(gst, name)
+ attr = getattr(gst, name)
+ assert get_name(attr) == state
+
+ assert get_name(gst.STATE_VOID_PENDING) == 'NONE_PENDING'
+ assert get_name(-1) == 'UNKNOWN!'
+ self.assertRaises(TypeError, get_name, '')
+
+if __name__ == "__main__":
+ unittest.main()
--- /dev/null
+#!/usr/bin/python
+#
+# testsuite for gstreamer.Element
+
+import common
+from common import gst, unittest
+
+class ElementTest(unittest.TestCase):
+ name = 'fakesink'
+ alias = 'sink'
+
+ def testBadConstruct(self):
+ self.assertRaises(TypeError, gst.Element)
+ self.assertRaises(TypeError, gst.Element, None)
+
+ def testGoodConstructor(self):
+ element = gst.Element(self.name, self.alias)
+ assert element is not None, 'element is None'
+ assert isinstance(element, gst.Element)
+ assert element.get_name() == self.alias
+
+ def testGoodConstructor2(self):
+ element = gst.element_factory_make(self.name, self.alias)
+ assert element is not None, 'element is None'
+ assert isinstance(element, gst.Element)
+ assert element.get_name() == self.alias
+
+class FakeSinkTest(ElementTest):
+ FAKESINK_STATE_ERROR_NONE = "0"
+ FAKESINK_STATE_ERROR_NULL_READY, = "1"
+ FAKESINK_STATE_ERROR_READY_PAUSED, = "2"
+ FAKESINK_STATE_ERROR_PAUSED_PLAYING = "3"
+ FAKESINK_STATE_ERROR_PLAYING_PAUSED = "4"
+ FAKESINK_STATE_ERROR_PAUSED_READY = "5"
+ FAKESINK_STATE_ERROR_READY_NULL = "6"
+
+ name = 'fakesink'
+ alias = 'sink'
+ def setUp(self):
+ self.element = gst.Element('fakesink', 'sink')
+
+ def checkError(self, old_state, state, name):
+ assert self.element.get_state() == gst.STATE_NULL
+ assert self.element.set_state(old_state)
+ assert self.element.get_state() == old_state
+
+ self.element.set_property('state-error', name)
+ def error_cb(element, source, error, debug):
+ assert isinstance(element, gst.Element)
+ assert element == self.element
+ assert isinstance(source, gst.Element)
+ assert source == self.element
+ assert isinstance(error, gst.GError)
+
+ self.element.connect('error', error_cb)
+ error_message = common.run_silent(self.element.set_state, state)
+
+ assert error_message.find('ERROR') != -1
+ self.element.get_state() == old_state, 'state changed'
+
+ def testStateErrorNullReady(self):
+ self.checkError(gst.STATE_NULL, gst.STATE_READY,
+ self.FAKESINK_STATE_ERROR_NULL_READY)
+
+ def testStateErrorReadyPaused(self):
+ self.checkError(gst.STATE_READY, gst.STATE_PAUSED,
+ self.FAKESINK_STATE_ERROR_READY_PAUSED)
+
+ def testStateErrorPausedPlaying(self):
+ self.checkError(gst.STATE_PAUSED, gst.STATE_PLAYING,
+ self.FAKESINK_STATE_ERROR_PAUSED_PLAYING)
+
+ def testStateErrorPlayingPaused(self):
+ self.checkError(gst.STATE_PLAYING, gst.STATE_PAUSED,
+ self.FAKESINK_STATE_ERROR_PLAYING_PAUSED)
+
+ def testStateErrorPausedReady(self):
+ self.checkError(gst.STATE_PAUSED, gst.STATE_READY,
+ self.FAKESINK_STATE_ERROR_PAUSED_READY)
+
+ def testStateErrorReadyNull(self):
+ self.checkError(gst.STATE_READY, gst.STATE_NULL,
+ self.FAKESINK_STATE_ERROR_READY_NULL)
+
+ def checkStateChange(self, old, new):
+ def state_change_cb(element, old_s, new_s):
+ assert isinstance(element, gst.Element)
+ assert element == self.element
+ assert old_s == old
+ assert new_s == new
+
+ assert self.element.set_state(old)
+ assert self.element.get_state() == old
+
+ self.element.connect('state-change', state_change_cb)
+
+ assert self.element.set_state(new)
+ assert self.element.get_state() == new
+
+ def testStateChangeNullReady(self):
+ self.checkStateChange(gst.STATE_NULL, gst.STATE_READY)
+
+ def testStateChangeReadyPaused(self):
+ self.checkStateChange(gst.STATE_READY, gst.STATE_PAUSED)
+
+ def testStateChangePausedPlaying(self):
+ self.checkStateChange(gst.STATE_PAUSED, gst.STATE_PLAYING)
+
+ def testStateChangePlayingPaused(self):
+ self.checkStateChange(gst.STATE_PLAYING, gst.STATE_PAUSED)
+
+ def testStateChangePausedReady(self):
+ self.checkStateChange(gst.STATE_PAUSED, gst.STATE_READY)
+
+ def testStateChangeReadyNull(self):
+ self.checkStateChange(gst.STATE_READY, gst.STATE_NULL)
+
+class NonExistentTest(ElementTest):
+ name = 'this-element-does-not-exist'
+ alias = 'no-alias'
+
+ testGoodConstructor = lambda s: None
+ testGoodConstructor2 = lambda s: None
+
+class FileSrcTest(ElementTest):
+ name = 'filesrc'
+ alias = 'source'
+
+class FileSinkTest(ElementTest):
+ name = 'filesink'
+ alias = 'sink'
+
+class ElementName(unittest.TestCase):
+ def testElementStateGetName(self):
+ get_name = gst.element_state_get_name
+ for state in ('NULL',
+ 'READY',
+ 'PLAYING',
+ 'PAUSED'):
+ name = 'STATE_' + state
+ assert hasattr(gst, name)
+ attr = getattr(gst, name)
+ assert get_name(attr) == state
+
+ assert get_name(gst.STATE_VOID_PENDING) == 'NONE_PENDING'
+ assert get_name(-1) == 'UNKNOWN!'
+ self.assertRaises(TypeError, get_name, '')
+
+if __name__ == "__main__":
+ unittest.main()