tests: gstbuffer: extend buffer copy test
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Fri, 29 Jun 2012 14:37:05 +0000 (16:37 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Thu, 5 Jul 2012 09:19:15 +0000 (11:19 +0200)
... to check for independence of copied buffer.

tests/check/gst/gstbuffer.c

index 1344e13..404d3cd 100644 (file)
@@ -335,6 +335,33 @@ GST_START_TEST (test_copy)
 
   gst_buffer_unref (copy);
   gst_buffer_unref (buffer);
+
+  /* check if copy is an independent copy when written to */
+  buffer = gst_buffer_new_and_alloc (4);
+  gst_buffer_memset (buffer, 0, 0, 4);
+  copy = gst_buffer_copy (buffer);
+  fail_unless (gst_buffer_is_writable (copy));
+  gst_buffer_memset (copy, 0, 0x80, 4);
+  gst_buffer_map (buffer, &info, GST_MAP_READ);
+  fail_if (gst_buffer_memcmp (copy, 0, info.data, info.size) == 0);
+  gst_buffer_unmap (buffer, &info);
+
+  gst_buffer_unref (copy);
+  gst_buffer_unref (buffer);
+
+  /* check if a writable clone of a buffer is independent when written to */
+  buffer = gst_buffer_new_and_alloc (4);
+  gst_buffer_memset (buffer, 0, 0, 4);
+  copy = gst_buffer_ref (buffer);
+  copy = gst_buffer_make_writable (copy);
+  fail_unless (gst_buffer_is_writable (copy));
+  gst_buffer_memset (copy, 0, 0x80, 4);
+  gst_buffer_map (buffer, &info, GST_MAP_READ);
+  fail_if (gst_buffer_memcmp (copy, 0, info.data, info.size) == 0);
+  gst_buffer_unmap (buffer, &info);
+
+  gst_buffer_unref (copy);
+  gst_buffer_unref (buffer);
 }
 
 GST_END_TEST;