Add some tests

Original commit message from CVS:
Add some tests
This commit is contained in:
Johan Dahlin 2004-03-08 19:22:15 +00:00
parent da7eb714c3
commit 8a810ece62
6 changed files with 168 additions and 54 deletions

12
testsuite/common.py Normal file
View 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')

View file

@ -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
View 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
View 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)

View file

@ -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()

View 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()