| # -*- 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 | |
| import sys | |
| from common import gst, unittest, TestCase | |
| class StructureTest(TestCase): | |
| def setUp(self): | |
| TestCase.setUp(self) | |
| self.struct = gst.structure_from_string('video/x-raw-yuv,width=10,foo="bar",pixel-aspect-ratio=1/2,framerate=5/1,boolean=(boolean)true') | |
| def testName(self): | |
| assert self.struct.get_name() == 'video/x-raw-yuv' | |
| self.struct.set_name('foobar') | |
| assert self.struct.get_name() == 'foobar' | |
| def testInt(self): | |
| assert self.struct.has_key('width') | |
| assert isinstance(self.struct['width'], int) | |
| assert self.struct['width'] == 10, self.struct['width'] | |
| self.struct['width'] = 5 | |
| assert self.struct.has_key('width') | |
| assert isinstance(self.struct['width'], int) | |
| assert self.struct['width'] == 5, self.struct['width'] | |
| def testString(self): | |
| assert self.struct.has_key('foo') | |
| assert isinstance(self.struct['foo'], unicode) | |
| assert self.struct['foo'] == 'bar', self.struct['foo'] | |
| self.struct['foo'] = 'baz' | |
| assert self.struct.has_key('foo') | |
| assert isinstance(self.struct['foo'], unicode) | |
| assert self.struct['foo'] == 'baz', self.struct['foo'] | |
| def testBoolean(self): | |
| assert self.struct.has_key('boolean') | |
| assert isinstance(self.struct['boolean'], bool) | |
| assert self.struct['boolean'] == True, self.struct['boolean'] | |
| self.struct['boolean'] = False | |
| assert self.struct.has_key('boolean') | |
| assert isinstance(self.struct['boolean'], bool) | |
| assert self.struct['boolean'] == False, self.struct['boolean'] | |
| def testCreateInt(self): | |
| self.struct['integer'] = 5 | |
| assert self.struct.has_key('integer') | |
| assert isinstance(self.struct['integer'], int) | |
| assert self.struct['integer'] == 5, self.struct['integer'] | |
| def testGstValue(self): | |
| s = self.struct | |
| s['fourcc'] = gst.Fourcc('XVID') | |
| assert s['fourcc'].fourcc == 'XVID' | |
| s['frac'] = gst.Fraction(3,4) | |
| assert s['frac'].num == 3 | |
| assert s['frac'].denom == 4 | |
| s['fracrange'] = gst.FractionRange(gst.Fraction(0,1), | |
| gst.Fraction(25,3)) | |
| assert s['fracrange'].low.num == 0 | |
| assert s['fracrange'].low.denom == 1 | |
| assert s['fracrange'].high.num == 25 | |
| assert s['fracrange'].high.denom == 3 | |
| s['intrange'] = gst.IntRange(5,21) | |
| assert s['intrange'].low == 5 | |
| assert s['intrange'].high == 21 | |
| s['doublerange'] = gst.DoubleRange(6.,21.) | |
| assert s['doublerange'].low == 6. | |
| assert s['doublerange'].high == 21. | |
| s['fixedlist'] = (4, 5, 6) | |
| assert isinstance(s['fixedlist'], tuple) | |
| assert s['fixedlist'] == (4, 5, 6) | |
| s['list'] = [4, 5, 6] | |
| assert isinstance(s['list'], list) | |
| assert s['list'] == [4, 5, 6] | |
| s['boolean'] = True | |
| assert isinstance(s['boolean'], bool) | |
| assert s['boolean'] == True | |
| # finally, some recursive tests | |
| s['rflist'] = ([(['a', 'b'], ['c', 'd']),'e'], ['f', 'g']) | |
| assert s['rflist'] == ([(['a', 'b'], ['c', 'd']),'e'], ['f', 'g']) | |
| s['rlist'] = [([(['a', 'b'], ['c', 'd']),'e'], ['f', 'g']), 'h'] | |
| assert s['rlist'] == [([(['a', 'b'], ['c', 'd']),'e'], ['f', 'g']), 'h'] | |
| def testStructureChange(self): | |
| assert self.struct['framerate'] == gst.Fraction(5, 1) | |
| self.struct['framerate'] = gst.Fraction(10, 1) | |
| assert self.struct['framerate'] == gst.Fraction(10, 1) | |
| self.struct['pixel-aspect-ratio'] = gst.Fraction(4, 2) | |
| assert self.struct['pixel-aspect-ratio'].num == 2 | |
| assert self.struct['pixel-aspect-ratio'].denom == 1 | |
| def testKeys(self): | |
| k = self.struct.keys() | |
| self.failUnless(k) | |
| self.assertEquals(len(k), 5) | |
| self.failUnless("width" in k) | |
| self.failUnless("foo" in k) | |
| self.failUnless("framerate" in k) | |
| self.failUnless("pixel-aspect-ratio" in k) | |
| self.failUnless("boolean" in k) | |
| if __name__ == "__main__": | |
| unittest.main() |