testsuite/event.py, testsuite/buffer.py: New tests.
authorJohan Dahlin <johan@gnome.org>
Mon, 3 May 2004 16:17:38 +0000 (16:17 +0000)
committerJohan Dahlin <johan@gnome.org>
Mon, 3 May 2004 16:17:38 +0000 (16:17 +0000)
Original commit message from CVS:
* testsuite/event.py, testsuite/buffer.py: New tests.

* testsuite/common.py (run_silent): New function to enable stderr
even if an exception is raised.

* testsuite/element.py (FakeSinkTest.checkError): Better
state-error checking.

ChangeLog
common
testsuite/buffer.py [new file with mode: 0644]
testsuite/common.py
testsuite/element.py
testsuite/event.py [new file with mode: 0644]
testsuite/test_buffer.py [new file with mode: 0644]
testsuite/test_element.py

index 2aa00bf..061e0ba 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2004-05-03  Johan Dahlin  <johan@gnome.org>
 
+       * testsuite/event.py, testsuite/buffer.py: New tests.
+
+       * testsuite/common.py (run_silent): New function to enable stderr
+       even if an exception is raised.
+
+       * testsuite/element.py (FakeSinkTest.checkError): Better
+       state-error checking.
+
        * gst/common.h: Add some parenthesises
 
        * gst/play.override: Include common.h
diff --git a/common b/common
index 63d93f0..95ba883 160000 (submodule)
--- a/common
+++ b/common
@@ -1 +1 @@
-Subproject commit 63d93f01177745ba864263f0b6f976212684cb87
+Subproject commit 95ba8839c03a7f8939a2ae4b0586b012e929fc84
diff --git a/testsuite/buffer.py b/testsuite/buffer.py
new file mode 100644 (file)
index 0000000..affda9a
--- /dev/null
@@ -0,0 +1,10 @@
+import sys
+from common import gst, unittest
+
+class BufferTest(unittest.TestCase):
+    def testBuffer(self):
+        self.buffer = gst.Buffer('test')
+        assert str(buffer(self.buffer)) == 'test'
+        
+if __name__ == "__main__":
+    unittest.main()
index a657c8c..16cc644 100644 (file)
@@ -47,3 +47,16 @@ def enable_stderr():
     _stderr.close()
     os.remove('/tmp/stderr')
     return data
+
+def run_silent(function, *args, **kwargs):
+   disable_stderr()
+
+   try:
+      function(*args, **kwargs)
+   except Exception, exc:
+      enable_stderr()
+      raise exc
+   
+   output = enable_stderr()
+
+   return output
index e504371..4e2bbf4 100644 (file)
@@ -33,20 +33,48 @@ class FakeSinkTest(ElementTest):
     def setUp(self):
         self.element = gst.Element('fakesink', 'sink')
 
-    def testStateError(self):
-        self.element.set_property('state-error',
-                                  self.FAKESINK_STATE_ERROR_NULL_READY)
+    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)
-        common.disable_stderr()
-        self.element.set_state(gst.STATE_READY)
-        common.enable_stderr()
+        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)
         
 class NonExistentTest(ElementTest):
     name = 'this-element-does-not-exist'
diff --git a/testsuite/event.py b/testsuite/event.py
new file mode 100644 (file)
index 0000000..92577f2
--- /dev/null
@@ -0,0 +1,18 @@
+import sys
+from common import gst, unittest
+
+class EventTest(unittest.TestCase):
+    def setUp(self):
+        pipeline = gst.parse_launch('fakesrc ! fakesink name=sink')
+        self.sink = pipeline.get_by_name('sink')
+        
+    def testEventEmpty(self):
+        event = gst.Event(gst.EVENT_EMPTY)
+        self.sink.send_event(event)
+        
+    def testEventSeek(self):
+        event = gst.event_new_seek(gst.SEEK_METHOD_CUR, 0)
+        self.sink.send_event(event)
+
+if __name__ == "__main__":
+    unittest.main()
diff --git a/testsuite/test_buffer.py b/testsuite/test_buffer.py
new file mode 100644 (file)
index 0000000..affda9a
--- /dev/null
@@ -0,0 +1,10 @@
+import sys
+from common import gst, unittest
+
+class BufferTest(unittest.TestCase):
+    def testBuffer(self):
+        self.buffer = gst.Buffer('test')
+        assert str(buffer(self.buffer)) == 'test'
+        
+if __name__ == "__main__":
+    unittest.main()
index e504371..4e2bbf4 100644 (file)
@@ -33,20 +33,48 @@ class FakeSinkTest(ElementTest):
     def setUp(self):
         self.element = gst.Element('fakesink', 'sink')
 
-    def testStateError(self):
-        self.element.set_property('state-error',
-                                  self.FAKESINK_STATE_ERROR_NULL_READY)
+    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)
-        common.disable_stderr()
-        self.element.set_state(gst.STATE_READY)
-        common.enable_stderr()
+        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)
         
 class NonExistentTest(ElementTest):
     name = 'this-element-does-not-exist'