diff --git a/ChangeLog b/ChangeLog index d86a876977..16c8ba2b06 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-03-17 Johan Dahlin + + * gst/gsttaglist.override (_wrap_gst_tag_list_contains): + * testsuite/test_taglist.py (TestTagList.testKeys): + + Implement sq_contains and add tests for TagList. + 2007-03-02 Edward Hervey * gst/__init__.py: diff --git a/common b/common index 9a56e28fc1..dec151d155 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit 9a56e28fc15440eb6852411321c46312e1d1bb73 +Subproject commit dec151d15512e4cca2dcdd36d9c6c4a2185760ec diff --git a/gst/gsttaglist.override b/gst/gsttaglist.override index 51ddccff42..04d7e2c19a 100644 --- a/gst/gsttaglist.override +++ b/gst/gsttaglist.override @@ -117,3 +117,25 @@ static PyMappingMethods _wrap_gst_tag_list_tp_as_mapping = { (binaryfunc)_wrap_gst_tag_list_subscript, /* mp_subscript */ (objobjargproc)_wrap_gst_tag_list_ass_subscript /* mp_ass_subscript */ }; +%% +override-slot GstTagList.tp_as_sequence +static int +_wrap_gst_tag_list_contains(PyGObject *self, PyObject *py_key) +{ + return gst_structure_has_field((GstStructure*)self->obj, + PyString_AsString(py_key)); +} + +static PySequenceMethods _wrap_gst_tag_list_tp_as_sequence = { + (inquiry)NULL, + (binaryfunc)NULL, + (intargfunc)NULL, + (intargfunc)NULL, + (intintargfunc)NULL, + (intobjargproc)NULL, + (intintobjargproc)NULL, + (objobjproc)_wrap_gst_tag_list_contains, + (binaryfunc)NULL, + (intargfunc)NULL, +}; + diff --git a/testsuite/Makefile.am b/testsuite/Makefile.am index d8fd3f61b3..d313ce9b94 100644 --- a/testsuite/Makefile.am +++ b/testsuite/Makefile.am @@ -32,6 +32,7 @@ tests = \ test_registry.py \ test_struct.py \ test_segment.py \ + test_taglist.py \ test_xml.py check-local: testhelper.la diff --git a/testsuite/test_taglist.py b/testsuite/test_taglist.py new file mode 100644 index 0000000000..c9c0a41045 --- /dev/null +++ b/testsuite/test_taglist.py @@ -0,0 +1,45 @@ +# -*- Mode: Python -*- +# vi:si:et:sw=4:sts=4:ts=4 +# +# gst-python - Python bindings for GStreamer +# Copyright (C) 2007 Johan Dahlin +# +# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +from common import gst, TestCase + + +class TestTagList(TestCase): + def testContains(self): + taglist = gst.TagList() + self.failIf('key' in taglist) + taglist['key'] = 'value' + self.failUnless('key' in taglist) + + def testLength(self): + taglist = gst.TagList() + self.assertEqual(len(taglist), 0) + taglist['key1'] = 'value' + taglist['key2'] = 'value' + self.assertEqual(len(taglist), 2) + + def testKeys(self): + taglist = gst.TagList() + self.assertEqual(taglist.keys(), []) + taglist['key1'] = 'value' + taglist['key2'] = 'value' + keys = taglist.keys() + keys.sort() + self.assertEqual(keys, ['key1', 'key2'])