mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 06:54:49 +00:00
Add some tests
Original commit message from CVS: Add some tests
This commit is contained in:
parent
da7eb714c3
commit
8a810ece62
6 changed files with 168 additions and 54 deletions
12
testsuite/common.py
Normal file
12
testsuite/common.py
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
#
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
sys.path.insert(0, '..')
|
||||||
|
|
||||||
|
# Load GST and make sure we load it from the current build
|
||||||
|
import gst
|
||||||
|
assert sys.modules.has_key('_gst')
|
||||||
|
assert os.path.basename(sys.modules['_gst'].__file__), \
|
||||||
|
os.path.join('..', 'gst', 'libs')
|
|
@ -2,35 +2,54 @@
|
||||||
#
|
#
|
||||||
# testsuite for gstreamer.Element
|
# testsuite for gstreamer.Element
|
||||||
|
|
||||||
import sys
|
from common import gst, unittest
|
||||||
sys.path.insert(0, '..')
|
|
||||||
|
|
||||||
import gst
|
class ElementTest(unittest.TestCase):
|
||||||
|
name = 'fakesink'
|
||||||
|
alias = 'sink'
|
||||||
|
|
||||||
|
def testBadConstruct(self):
|
||||||
|
self.assertRaises(TypeError, gst.Element)
|
||||||
|
self.assertRaises(TypeError, gst.Element, None)
|
||||||
|
|
||||||
def fail(message):
|
def testGoodConstructor(self):
|
||||||
'print reason for failing and leave'
|
element = gst.Element(self.name, self.alias)
|
||||||
print "FAILED: %s" % message
|
assert element
|
||||||
sys.exit(-1)
|
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"
|
||||||
|
|
||||||
# create an element we know exists
|
name = 'fakesink'
|
||||||
src = gst.Element("fakesrc", "source")
|
alias = 'sink'
|
||||||
if not src:
|
def setUp(self):
|
||||||
fail("Can't create fakesrc Element")
|
self.element = gst.Element('fakesink', 'sink')
|
||||||
|
|
||||||
# create an element we know doesn't exist
|
def testStateError(self):
|
||||||
nope = None
|
self.element.set_property('state-error',
|
||||||
result = 0
|
self.FAKESINK_STATE_ERROR_NULL_READY)
|
||||||
try:
|
def error_cb(element, source, pointer, None):
|
||||||
nope = gst.Element("idontexist", "none")
|
assert isinstance(element, gst.Element)
|
||||||
except RuntimeError: result = 1
|
assert element == self.element
|
||||||
if result == 0:
|
assert isinstance(source, gst.Element)
|
||||||
fail("creating an unexistant element didn't generate a RuntimeError")
|
assert source == self.element
|
||||||
|
return False
|
||||||
|
|
||||||
|
self.element.connect('error', error_cb)
|
||||||
|
self.element.set_state(gst.STATE_READY)
|
||||||
|
|
||||||
# create a sink
|
class NonExistentTest(ElementTest):
|
||||||
sink = gst.Element("fakesink", "sink")
|
name = 'this-element-does-not-exist'
|
||||||
|
alias = 'no-alias'
|
||||||
# link
|
|
||||||
if not src.link(sink):
|
def testGoodConstructor(self):
|
||||||
fail("could not link")
|
self.assertRaises(RuntimeError, gst.Element, self.name, self.alias)
|
||||||
|
|
||||||
sys.exit(0)
|
if __name__ == "__main__":
|
||||||
|
unittest.main()
|
||||||
|
|
26
testsuite/pipeline.py
Normal file
26
testsuite/pipeline.py
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
from common import gst, unittest
|
||||||
|
|
||||||
|
class PipelineTest(unittest.TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
self.pipeline = gst.Pipeline('test-pipeline')
|
||||||
|
|
||||||
|
source = gst.Element('fakesrc', 'source')
|
||||||
|
source.set_property('num-buffers', 5)
|
||||||
|
sink = gst.Element('fakesink', 'sink')
|
||||||
|
self.pipeline.add_many(source, sink)
|
||||||
|
gst.element_link_many(source, sink)
|
||||||
|
|
||||||
|
def testRun(self):
|
||||||
|
self.assertEqual(self.pipeline.get_state(), gst.STATE_NULL)
|
||||||
|
self.pipeline.set_state(gst.STATE_PLAYING)
|
||||||
|
self.assertEqual(self.pipeline.get_state(), gst.STATE_PLAYING)
|
||||||
|
|
||||||
|
while self.pipeline.iterate():
|
||||||
|
pass
|
||||||
|
|
||||||
|
self.assertEqual(self.pipeline.get_state(), gst.STATE_PAUSED)
|
||||||
|
self.pipeline.set_state(gst.STATE_NULL)
|
||||||
|
self.assertEqual(self.pipeline.get_state(), gst.STATE_NULL)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
unittest.main()
|
12
testsuite/runtests.py
Normal file
12
testsuite/runtests.py
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
import sys
|
||||||
|
from unittest import TestLoader, TextTestRunner
|
||||||
|
from types import ClassType
|
||||||
|
|
||||||
|
loader = TestLoader()
|
||||||
|
testRunner = TextTestRunner()
|
||||||
|
|
||||||
|
for name in ('element', 'pipeline'):
|
||||||
|
print 'Testing', name
|
||||||
|
tests = loader.loadTestsFromName(name)
|
||||||
|
testRunner.run(tests)
|
|
@ -2,35 +2,54 @@
|
||||||
#
|
#
|
||||||
# testsuite for gstreamer.Element
|
# testsuite for gstreamer.Element
|
||||||
|
|
||||||
import sys
|
from common import gst, unittest
|
||||||
sys.path.insert(0, '..')
|
|
||||||
|
|
||||||
import gst
|
class ElementTest(unittest.TestCase):
|
||||||
|
name = 'fakesink'
|
||||||
|
alias = 'sink'
|
||||||
|
|
||||||
|
def testBadConstruct(self):
|
||||||
|
self.assertRaises(TypeError, gst.Element)
|
||||||
|
self.assertRaises(TypeError, gst.Element, None)
|
||||||
|
|
||||||
def fail(message):
|
def testGoodConstructor(self):
|
||||||
'print reason for failing and leave'
|
element = gst.Element(self.name, self.alias)
|
||||||
print "FAILED: %s" % message
|
assert element
|
||||||
sys.exit(-1)
|
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"
|
||||||
|
|
||||||
# create an element we know exists
|
name = 'fakesink'
|
||||||
src = gst.Element("fakesrc", "source")
|
alias = 'sink'
|
||||||
if not src:
|
def setUp(self):
|
||||||
fail("Can't create fakesrc Element")
|
self.element = gst.Element('fakesink', 'sink')
|
||||||
|
|
||||||
# create an element we know doesn't exist
|
def testStateError(self):
|
||||||
nope = None
|
self.element.set_property('state-error',
|
||||||
result = 0
|
self.FAKESINK_STATE_ERROR_NULL_READY)
|
||||||
try:
|
def error_cb(element, source, pointer, None):
|
||||||
nope = gst.Element("idontexist", "none")
|
assert isinstance(element, gst.Element)
|
||||||
except RuntimeError: result = 1
|
assert element == self.element
|
||||||
if result == 0:
|
assert isinstance(source, gst.Element)
|
||||||
fail("creating an unexistant element didn't generate a RuntimeError")
|
assert source == self.element
|
||||||
|
return False
|
||||||
|
|
||||||
|
self.element.connect('error', error_cb)
|
||||||
|
self.element.set_state(gst.STATE_READY)
|
||||||
|
|
||||||
# create a sink
|
class NonExistentTest(ElementTest):
|
||||||
sink = gst.Element("fakesink", "sink")
|
name = 'this-element-does-not-exist'
|
||||||
|
alias = 'no-alias'
|
||||||
# link
|
|
||||||
if not src.link(sink):
|
def testGoodConstructor(self):
|
||||||
fail("could not link")
|
self.assertRaises(RuntimeError, gst.Element, self.name, self.alias)
|
||||||
|
|
||||||
sys.exit(0)
|
if __name__ == "__main__":
|
||||||
|
unittest.main()
|
||||||
|
|
26
testsuite/test_pipeline.py
Normal file
26
testsuite/test_pipeline.py
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
from common import gst, unittest
|
||||||
|
|
||||||
|
class PipelineTest(unittest.TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
self.pipeline = gst.Pipeline('test-pipeline')
|
||||||
|
|
||||||
|
source = gst.Element('fakesrc', 'source')
|
||||||
|
source.set_property('num-buffers', 5)
|
||||||
|
sink = gst.Element('fakesink', 'sink')
|
||||||
|
self.pipeline.add_many(source, sink)
|
||||||
|
gst.element_link_many(source, sink)
|
||||||
|
|
||||||
|
def testRun(self):
|
||||||
|
self.assertEqual(self.pipeline.get_state(), gst.STATE_NULL)
|
||||||
|
self.pipeline.set_state(gst.STATE_PLAYING)
|
||||||
|
self.assertEqual(self.pipeline.get_state(), gst.STATE_PLAYING)
|
||||||
|
|
||||||
|
while self.pipeline.iterate():
|
||||||
|
pass
|
||||||
|
|
||||||
|
self.assertEqual(self.pipeline.get_state(), gst.STATE_PAUSED)
|
||||||
|
self.pipeline.set_state(gst.STATE_NULL)
|
||||||
|
self.assertEqual(self.pipeline.get_state(), gst.STATE_NULL)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
unittest.main()
|
Loading…
Reference in a new issue