gst/parse/grammar.y: Remove unneeded value unset.
authorWim Taymans <wim.taymans@gmail.com>
Wed, 14 May 2008 10:22:17 +0000 (10:22 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Wed, 14 May 2008 10:22:17 +0000 (10:22 +0000)
Original commit message from CVS:
* gst/parse/grammar.y:
Remove unneeded value unset.
* tests/check/gst/gstvalue.c: (GST_START_TEST), (gst_value_suite):
Add unit test for de/serialization of caps.

ChangeLog
gst/parse/grammar.y
tests/check/gst/gstvalue.c

index 3b81af4..8cdc4be 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-05-14  Wim Taymans  <wim.taymans@collabora.co.uk>
+
+       * gst/parse/grammar.y:
+       Remove unneeded value unset.
+
+       * tests/check/gst/gstvalue.c: (GST_START_TEST), (gst_value_suite):
+       Add unit test for de/serialization of caps.
+
 2008-05-13  Sebastian Dröge  <slomo@circular-chaos.org>
 
        * plugins/elements/gstfakesink.c:
index b3bf388..b99cde8 100644 (file)
@@ -339,7 +339,6 @@ gst_parse_element_set (gchar *value, GstElement *element, graph_t *graph)
     if (!gst_value_deserialize (&v, pos))
       goto error;
     g_object_set_property (G_OBJECT (target), pspec->name, &v);
-    g_value_unset (&v);
   } else { 
     /* do a delayed set */
     if (GST_IS_CHILD_PROXY (element)) {
index cec60bf..aead0b3 100644 (file)
@@ -1657,6 +1657,48 @@ GST_START_TEST (test_serialize_deserialize_format_enum)
 
 GST_END_TEST;
 
+GST_START_TEST (test_serialize_deserialize_caps)
+{
+  GValue value = { 0 }, value2 = {
+  0};
+  GstCaps *caps, *caps2;
+  gchar *serialized;
+
+  caps = gst_caps_new_simple ("test/caps",
+      "foo", G_TYPE_INT, 10, "bar", G_TYPE_STRING, "test", NULL);
+  fail_if (GST_CAPS_REFCOUNT_VALUE (caps) != 1);
+
+  /* and assign caps to gvalue */
+  g_value_init (&value, GST_TYPE_CAPS);
+  g_value_take_boxed (&value, caps);
+  fail_if (GST_CAPS_REFCOUNT_VALUE (caps) != 1);
+
+  /* now serialize it */
+  serialized = gst_value_serialize (&value);
+  GST_DEBUG ("serialized caps to %s", serialized);
+  fail_unless (serialized != NULL);
+
+  /* refcount should not change */
+  fail_if (GST_CAPS_REFCOUNT_VALUE (caps) != 1);
+
+  /* now deserialize again */
+  g_value_init (&value2, GST_TYPE_CAPS);
+  gst_value_deserialize (&value2, serialized);
+
+  caps2 = g_value_get_boxed (&value2);
+  fail_if (GST_CAPS_REFCOUNT_VALUE (caps2) != 1);
+
+  /* they should be equal */
+  fail_unless (gst_caps_is_equal (caps, caps2));
+
+  /* cleanup */
+  g_value_unset (&value);
+  g_value_unset (&value2);
+  g_free (serialized);
+}
+
+GST_END_TEST;
+
 static Suite *
 gst_value_suite (void)
 {
@@ -1686,6 +1728,7 @@ gst_value_suite (void)
   tcase_add_test (tc_chain, test_value_subtract_fraction_range);
   tcase_add_test (tc_chain, test_date);
   tcase_add_test (tc_chain, test_fraction_range);
+  tcase_add_test (tc_chain, test_serialize_deserialize_caps);
 
   return s;
 }