python: override Gst.ValueArray.append_value()
This ensures that self.array is kept up to date. Add append() method that is more natural than the static method. Allow creating empty ValueArray by omitting the constructor parameter. Fixes: #3114 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8952>
This commit is contained in:
parent
20904a1b92
commit
c2a4c3a53a
@ -583,9 +583,23 @@ __all__.append('FractionRange')
|
||||
|
||||
|
||||
class ValueArray(Gst.ValueArray):
|
||||
def __init__(self, array):
|
||||
def __init__(self, array=[]):
|
||||
self.array = list(array)
|
||||
|
||||
def append(self, item):
|
||||
self.array.append(item)
|
||||
|
||||
def prepend(self, item):
|
||||
self.array = [item] + self.array
|
||||
|
||||
@staticmethod
|
||||
def append_value(this, item):
|
||||
this.append(item)
|
||||
|
||||
@staticmethod
|
||||
def prepend_value(this, item):
|
||||
this.prepend(item)
|
||||
|
||||
def __getitem__(self, index):
|
||||
return self.array[index]
|
||||
|
||||
@ -607,9 +621,23 @@ __all__.append('ValueArray')
|
||||
|
||||
|
||||
class ValueList(Gst.ValueList):
|
||||
def __init__(self, array):
|
||||
def __init__(self, array=[]):
|
||||
self.array = list(array)
|
||||
|
||||
def append(self, item):
|
||||
self.array.append(item)
|
||||
|
||||
def prepend(self, item):
|
||||
self.array = [item] + self.array
|
||||
|
||||
@staticmethod
|
||||
def append_value(this, item):
|
||||
this.append(item)
|
||||
|
||||
@staticmethod
|
||||
def prepend_value(this, item):
|
||||
this.prepend(item)
|
||||
|
||||
def __getitem__(self, index):
|
||||
return self.array[index]
|
||||
|
||||
|
@ -262,7 +262,6 @@ class TestValueArray(TestCase):
|
||||
self.assertEqual(a.array, [1, 2, 3])
|
||||
|
||||
self.assertRaises(TypeError, Gst.ValueArray, 1)
|
||||
self.assertRaises(TypeError, Gst.ValueArray)
|
||||
|
||||
def testRepr(self):
|
||||
Gst.init(None)
|
||||
@ -319,6 +318,23 @@ class TestValueArray(TestCase):
|
||||
self.assertEqual(value[1][0], -1)
|
||||
self.assertEqual(value[1][1], 0)
|
||||
|
||||
def testAppendPrepend(self):
|
||||
array = Gst.ValueArray()
|
||||
Gst.ValueArray.append_value(array, 2)
|
||||
Gst.ValueArray.prepend_value(array, 1)
|
||||
array.append(3)
|
||||
array.prepend(0)
|
||||
self.assertEqual(len(array), 4)
|
||||
self.assertEqual(array[0], 0)
|
||||
self.assertEqual(array[1], 1)
|
||||
self.assertEqual(array[2], 2)
|
||||
self.assertEqual(array[3], 3)
|
||||
self.assertEqual(Gst.ValueArray.get_size(array), 4)
|
||||
self.assertEqual(Gst.ValueArray.get_value(array, 0), 0)
|
||||
self.assertEqual(Gst.ValueArray.get_value(array, 1), 1)
|
||||
self.assertEqual(Gst.ValueArray.get_value(array, 2), 2)
|
||||
self.assertEqual(Gst.ValueArray.get_value(array, 3), 3)
|
||||
|
||||
|
||||
class TestValueList(TestCase):
|
||||
def testConstructor(self):
|
||||
@ -328,7 +344,6 @@ class TestValueList(TestCase):
|
||||
self.assertEqual(a.array, [1, 2, 3])
|
||||
|
||||
self.assertRaises(TypeError, Gst.ValueList, 1)
|
||||
self.assertRaises(TypeError, Gst.ValueList)
|
||||
|
||||
def testRepr(self):
|
||||
Gst.init(None)
|
||||
@ -353,6 +368,23 @@ class TestValueList(TestCase):
|
||||
self.assertEqual(value[1][0], -1)
|
||||
self.assertEqual(value[1][1], 0)
|
||||
|
||||
def testAppendPrepend(self):
|
||||
array = Gst.ValueList()
|
||||
Gst.ValueList.append_value(array, 2)
|
||||
Gst.ValueList.prepend_value(array, 1)
|
||||
array.append(3)
|
||||
array.prepend(0)
|
||||
self.assertEqual(len(array), 4)
|
||||
self.assertEqual(array[0], 0)
|
||||
self.assertEqual(array[1], 1)
|
||||
self.assertEqual(array[2], 2)
|
||||
self.assertEqual(array[3], 3)
|
||||
self.assertEqual(Gst.ValueList.get_size(array), 4)
|
||||
self.assertEqual(Gst.ValueList.get_value(array, 0), 0)
|
||||
self.assertEqual(Gst.ValueList.get_value(array, 1), 1)
|
||||
self.assertEqual(Gst.ValueList.get_value(array, 2), 2)
|
||||
self.assertEqual(Gst.ValueList.get_value(array, 3), 3)
|
||||
|
||||
|
||||
class TestIntRange(TestCase):
|
||||
@unittest.skipUnless(sys.version_info >= (3, 0), "requires Python 3")
|
||||
|
Loading…
x
Reference in New Issue
Block a user