controller: cleanup the tests
authorStefan Sauer <ensonic@users.sf.net>
Sun, 1 Jan 2012 13:55:35 +0000 (14:55 +0100)
committerStefan Sauer <ensonic@users.sf.net>
Sun, 1 Jan 2012 15:08:01 +0000 (16:08 +0100)
tests/check/libs/controller.c

index 3c5297c..a37d8c9 100644 (file)
@@ -281,40 +281,41 @@ GST_START_TEST (controller_controlsource_empty2)
 
 GST_END_TEST;
 
-
 /* test timed value handling without interpolation */
 GST_START_TEST (controller_interpolate_none)
 {
   GstInterpolationControlSource *csource;
-  GstTimedValueControlSource *cs;
+  GstTimedValueControlSource *tvcs;
+  GstControlSource *cs;
   GstElement *elem;
-  gboolean res;
+  gdouble v;
 
   elem = gst_element_factory_make ("testobj", NULL);
 
   /* new interpolation control source */
   csource = gst_interpolation_control_source_new ();
+  tvcs = (GstTimedValueControlSource *) csource;
+  cs = (GstControlSource *) csource;
 
   fail_unless (csource != NULL);
-  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int",
-          GST_CONTROL_SOURCE (csource)));
+  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int", cs));
 
   /* set interpolation mode */
   g_object_set (csource, "mode", GST_INTERPOLATION_MODE_NONE, NULL);
 
-  fail_unless (gst_timed_value_control_source_get_count (
-          (GstTimedValueControlSource *) csource) == 0);
-
   /* set control values */
-  cs = (GstTimedValueControlSource *) csource;
-  res = gst_timed_value_control_source_set (cs, 0 * GST_SECOND, 0.0);
-  fail_unless (res, NULL);
-  fail_unless (gst_timed_value_control_source_get_count (cs) == 1);
-  res = gst_timed_value_control_source_set (cs, 2 * GST_SECOND, 1.0);
-  fail_unless (res, NULL);
-  fail_unless (gst_timed_value_control_source_get_count (cs) == 2);
-
-  gst_object_unref (csource);
+  fail_unless (gst_timed_value_control_source_set (tvcs, 0 * GST_SECOND, 0.0));
+  fail_unless (gst_timed_value_control_source_set (tvcs, 2 * GST_SECOND, 1.0));
+
+  /* check values on control source directly */
+  fail_unless (gst_control_source_get_value (cs, 0 * GST_SECOND, &v));
+  fail_unless_equals_float (v, 0.0);
+  fail_unless (gst_control_source_get_value (cs, 1 * GST_SECOND, &v));
+  fail_unless_equals_float (v, 0.0);
+  fail_unless (gst_control_source_get_value (cs, 2 * GST_SECOND, &v));
+  fail_unless_equals_float (v, 1.0);
+  fail_unless (gst_control_source_get_value (cs, 3 * GST_SECOND, &v));
+  fail_unless_equals_float (v, 1.0);
 
   /* now pull in values for some timestamps */
   gst_object_sync_values (GST_OBJECT (elem), 0 * GST_SECOND);
@@ -323,7 +324,10 @@ GST_START_TEST (controller_interpolate_none)
   fail_unless_equals_int (GST_TEST_OBJ (elem)->val_int, 0);
   gst_object_sync_values (GST_OBJECT (elem), 2 * GST_SECOND);
   fail_unless_equals_int (GST_TEST_OBJ (elem)->val_int, 100);
+  gst_object_sync_values (GST_OBJECT (elem), 3 * GST_SECOND);
+  fail_unless_equals_int (GST_TEST_OBJ (elem)->val_int, 100);
 
+  gst_object_unref (csource);
   gst_object_unref (elem);
 }
 
@@ -333,30 +337,26 @@ GST_END_TEST;
 GST_START_TEST (controller_interpolate_linear)
 {
   GstInterpolationControlSource *csource;
-  GstTimedValueControlSource *cs;
+  GstTimedValueControlSource *tvcs;
+  GstControlSource *cs;
   GstElement *elem;
-  gboolean res;
 
   elem = gst_element_factory_make ("testobj", NULL);
 
   /* new interpolation control source */
   csource = gst_interpolation_control_source_new ();
+  tvcs = (GstTimedValueControlSource *) csource;
+  cs = (GstControlSource *) csource;
 
   fail_unless (csource != NULL);
-  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int",
-          GST_CONTROL_SOURCE (csource)));
+  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int", cs));
 
   /* set interpolation mode */
   g_object_set (csource, "mode", GST_INTERPOLATION_MODE_LINEAR, NULL);
 
   /* set control values */
-  cs = (GstTimedValueControlSource *) csource;
-  res = gst_timed_value_control_source_set (cs, 0 * GST_SECOND, 0);
-  fail_unless (res, NULL);
-  res = gst_timed_value_control_source_set (cs, 2 * GST_SECOND, 1.0);
-  fail_unless (res, NULL);
-
-  gst_object_unref (csource);
+  fail_unless (gst_timed_value_control_source_set (tvcs, 0 * GST_SECOND, 0.0));
+  fail_unless (gst_timed_value_control_source_set (tvcs, 2 * GST_SECOND, 1.0));
 
   /* now pull in values for some timestamps */
   gst_object_sync_values (GST_OBJECT (elem), 0 * GST_SECOND);
@@ -366,6 +366,7 @@ GST_START_TEST (controller_interpolate_linear)
   gst_object_sync_values (GST_OBJECT (elem), 2 * GST_SECOND);
   fail_unless_equals_int (GST_TEST_OBJ (elem)->val_int, 100);
 
+  gst_object_unref (csource);
   gst_object_unref (elem);
 }
 
@@ -375,34 +376,28 @@ GST_END_TEST;
 GST_START_TEST (controller_interpolate_cubic)
 {
   GstInterpolationControlSource *csource;
-  GstTimedValueControlSource *cs;
+  GstTimedValueControlSource *tvcs;
+  GstControlSource *cs;
   GstElement *elem;
-  gboolean res;
 
   elem = gst_element_factory_make ("testobj", NULL);
 
   /* new interpolation control source */
   csource = gst_interpolation_control_source_new ();
+  tvcs = (GstTimedValueControlSource *) csource;
+  cs = (GstControlSource *) csource;
 
   fail_unless (csource != NULL);
-  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "double",
-          GST_CONTROL_SOURCE (csource)));
+  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "double", cs));
 
   /* set interpolation mode */
   g_object_set (csource, "mode", GST_INTERPOLATION_MODE_CUBIC, NULL);
 
   /* set control values */
-  cs = (GstTimedValueControlSource *) csource;
-  res = gst_timed_value_control_source_set (cs, 0 * GST_SECOND, 0.0);
-  fail_unless (res, NULL);
-  res = gst_timed_value_control_source_set (cs, 1 * GST_SECOND, 0.5);
-  fail_unless (res, NULL);
-  res = gst_timed_value_control_source_set (cs, 2 * GST_SECOND, 0.2);
-  fail_unless (res, NULL);
-  res = gst_timed_value_control_source_set (cs, 4 * GST_SECOND, 0.8);
-  fail_unless (res, NULL);
-
-  gst_object_unref (csource);
+  fail_unless (gst_timed_value_control_source_set (tvcs, 0 * GST_SECOND, 0.0));
+  fail_unless (gst_timed_value_control_source_set (tvcs, 1 * GST_SECOND, 0.5));
+  fail_unless (gst_timed_value_control_source_set (tvcs, 2 * GST_SECOND, 0.2));
+  fail_unless (gst_timed_value_control_source_set (tvcs, 4 * GST_SECOND, 0.8));
 
   /* now pull in values for some timestamps */
   gst_object_sync_values (GST_OBJECT (elem), 0 * GST_SECOND);
@@ -419,6 +414,7 @@ GST_START_TEST (controller_interpolate_cubic)
   gst_object_sync_values (GST_OBJECT (elem), 5 * GST_SECOND);
   fail_unless_equals_float (GST_TEST_OBJ (elem)->val_double, 80.0);
 
+  gst_object_unref (csource);
   gst_object_unref (elem);
 }
 
@@ -428,30 +424,26 @@ GST_END_TEST;
 GST_START_TEST (controller_interpolate_cubic_too_few_cp)
 {
   GstInterpolationControlSource *csource;
-  GstTimedValueControlSource *cs;
+  GstTimedValueControlSource *tvcs;
+  GstControlSource *cs;
   GstElement *elem;
-  gboolean res;
 
   elem = gst_element_factory_make ("testobj", NULL);
 
   /* new interpolation control source */
   csource = gst_interpolation_control_source_new ();
+  tvcs = (GstTimedValueControlSource *) csource;
+  cs = (GstControlSource *) csource;
 
   fail_unless (csource != NULL);
-  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "double",
-          GST_CONTROL_SOURCE (csource)));
+  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "double", cs));
 
   /* set interpolation mode */
   g_object_set (csource, "mode", GST_INTERPOLATION_MODE_CUBIC, NULL);
 
   /* set 2 control values */
-  cs = (GstTimedValueControlSource *) csource;
-  res = gst_timed_value_control_source_set (cs, 0 * GST_SECOND, 0.0);
-  fail_unless (res, NULL);
-  res = gst_timed_value_control_source_set (cs, 2 * GST_SECOND, 0.4);
-  fail_unless (res, NULL);
-
-  gst_object_unref (csource);
+  fail_unless (gst_timed_value_control_source_set (tvcs, 0 * GST_SECOND, 0.0));
+  fail_unless (gst_timed_value_control_source_set (tvcs, 2 * GST_SECOND, 0.4));
 
   /* now pull in values for some timestamps and verify that it used linear
    * interpolation as we don't gave enough control points
@@ -463,6 +455,7 @@ GST_START_TEST (controller_interpolate_cubic_too_few_cp)
   gst_object_sync_values (GST_OBJECT (elem), 2 * GST_SECOND);
   fail_unless_equals_float (GST_TEST_OBJ (elem)->val_double, 40.0);
 
+  gst_object_unref (csource);
   gst_object_unref (elem);
 }
 
@@ -472,30 +465,27 @@ GST_END_TEST;
 GST_START_TEST (controller_interpolation_unset)
 {
   GstInterpolationControlSource *csource;
-  GstTimedValueControlSource *cs;
+  GstTimedValueControlSource *tvcs;
+  GstControlSource *cs;
   GstElement *elem;
-  gboolean res;
 
   elem = gst_element_factory_make ("testobj", NULL);
 
   /* new interpolation control source */
   csource = gst_interpolation_control_source_new ();
+  tvcs = (GstTimedValueControlSource *) csource;
+  cs = (GstControlSource *) csource;
 
   fail_unless (csource != NULL);
-  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int",
-          GST_CONTROL_SOURCE (csource)));
+  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int", cs));
 
   /* set interpolation mode */
   g_object_set (csource, "mode", GST_INTERPOLATION_MODE_NONE, NULL);
 
   /* set control values */
-  cs = (GstTimedValueControlSource *) csource;
-  res = gst_timed_value_control_source_set (cs, 0 * GST_SECOND, 0.0);
-  fail_unless (res, NULL);
-  res = gst_timed_value_control_source_set (cs, 1 * GST_SECOND, 1.0);
-  fail_unless (res, NULL);
-  res = gst_timed_value_control_source_set (cs, 2 * GST_SECOND, 0.5);
-  fail_unless (res, NULL);
+  fail_unless (gst_timed_value_control_source_set (tvcs, 0 * GST_SECOND, 0.0));
+  fail_unless (gst_timed_value_control_source_set (tvcs, 1 * GST_SECOND, 1.0));
+  fail_unless (gst_timed_value_control_source_set (tvcs, 2 * GST_SECOND, 0.5));
 
   /* verify values */
   gst_object_sync_values (GST_OBJECT (elem), 0 * GST_SECOND);
@@ -506,8 +496,7 @@ GST_START_TEST (controller_interpolation_unset)
   fail_unless_equals_int (GST_TEST_OBJ (elem)->val_int, 50);
 
   /* unset second */
-  res = gst_timed_value_control_source_unset (cs, 1 * GST_SECOND);
-  fail_unless (res, NULL);
+  fail_unless (gst_timed_value_control_source_unset (tvcs, 1 * GST_SECOND));
 
   /* verify value again */
   gst_object_sync_values (GST_OBJECT (elem), 1 * GST_SECOND);
@@ -516,13 +505,12 @@ GST_START_TEST (controller_interpolation_unset)
   fail_unless_equals_int (GST_TEST_OBJ (elem)->val_int, 50);
 
   /* unset all values, reset and try to unset again */
-  fail_unless (gst_timed_value_control_source_unset (cs, 0 * GST_SECOND));
-  fail_unless (gst_timed_value_control_source_unset (cs, 2 * GST_SECOND));
-  gst_timed_value_control_source_unset_all (cs);
-  fail_if (gst_timed_value_control_source_unset (cs, 2 * GST_SECOND));
+  fail_unless (gst_timed_value_control_source_unset (tvcs, 0 * GST_SECOND));
+  fail_unless (gst_timed_value_control_source_unset (tvcs, 2 * GST_SECOND));
+  gst_timed_value_control_source_unset_all (tvcs);
+  fail_if (gst_timed_value_control_source_unset (tvcs, 2 * GST_SECOND));
 
   gst_object_unref (csource);
-
   gst_object_unref (elem);
 }
 
@@ -532,28 +520,26 @@ GST_END_TEST;
 GST_START_TEST (controller_interpolation_unset_all)
 {
   GstInterpolationControlSource *csource;
-  GstTimedValueControlSource *cs;
+  GstTimedValueControlSource *tvcs;
+  GstControlSource *cs;
   GstElement *elem;
-  gboolean res;
 
   elem = gst_element_factory_make ("testobj", NULL);
 
   /* new interpolation control source */
   csource = gst_interpolation_control_source_new ();
+  tvcs = (GstTimedValueControlSource *) csource;
+  cs = (GstControlSource *) csource;
 
   fail_unless (csource != NULL);
-  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int",
-          GST_CONTROL_SOURCE (csource)));
+  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int", cs));
 
   /* set interpolation mode */
   g_object_set (csource, "mode", GST_INTERPOLATION_MODE_NONE, NULL);
 
   /* set control values */
-  cs = (GstTimedValueControlSource *) csource;
-  res = gst_timed_value_control_source_set (cs, 0 * GST_SECOND, 0.0);
-  fail_unless (res, NULL);
-  res = gst_timed_value_control_source_set (cs, 1 * GST_SECOND, 1.0);
-  fail_unless (res, NULL);
+  fail_unless (gst_timed_value_control_source_set (tvcs, 0 * GST_SECOND, 0.0));
+  fail_unless (gst_timed_value_control_source_set (tvcs, 1 * GST_SECOND, 1.0));
 
   /* verify values */
   gst_object_sync_values (GST_OBJECT (elem), 0 * GST_SECOND);
@@ -562,15 +548,14 @@ GST_START_TEST (controller_interpolation_unset_all)
   fail_unless_equals_int (GST_TEST_OBJ (elem)->val_int, 100);
 
   /* unset all */
-  gst_timed_value_control_source_unset_all (cs);
+  gst_timed_value_control_source_unset_all (tvcs);
   GST_TEST_OBJ (elem)->val_int = 0;
 
-  gst_object_unref (csource);
-
   /* verify value again */
   gst_object_sync_values (GST_OBJECT (elem), 1 * GST_SECOND);
   fail_unless_equals_int (GST_TEST_OBJ (elem)->val_int, 0);
 
+  gst_object_unref (csource);
   gst_object_unref (elem);
 }
 
@@ -580,9 +565,9 @@ GST_END_TEST;
 GST_START_TEST (controller_interpolation_linear_value_array)
 {
   GstInterpolationControlSource *csource;
-  GstTimedValueControlSource *cs;
+  GstTimedValueControlSource *tvcs;
+  GstControlSource *cs;
   GstElement *elem;
-  gboolean res;
   gdouble *raw_values;
   GValue *g_values;
 
@@ -590,26 +575,24 @@ GST_START_TEST (controller_interpolation_linear_value_array)
 
   /* new interpolation control source */
   csource = gst_interpolation_control_source_new ();
+  tvcs = (GstTimedValueControlSource *) csource;
+  cs = (GstControlSource *) csource;
 
   fail_unless (csource != NULL);
-  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int",
-          GST_CONTROL_SOURCE (csource)));
+  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int", cs));
 
   /* set interpolation mode */
   g_object_set (csource, "mode", GST_INTERPOLATION_MODE_LINEAR, NULL);
 
   /* set control values */
-  cs = (GstTimedValueControlSource *) csource;
-  res = gst_timed_value_control_source_set (cs, 0 * GST_SECOND, 0.0);
-  fail_unless (res, NULL);
-  res = gst_timed_value_control_source_set (cs, 2 * GST_SECOND, 1.0);
-  fail_unless (res, NULL);
+  fail_unless (gst_timed_value_control_source_set (tvcs, 0 * GST_SECOND, 0.0));
+  fail_unless (gst_timed_value_control_source_set (tvcs, 1 * GST_SECOND, 1.0));
 
   /* now pull in raw-values for some timestamps */
   raw_values = g_new (gdouble, 3);
 
-  fail_unless (gst_control_source_get_value_array (GST_CONTROL_SOURCE (csource),
-          0, GST_SECOND, 3, raw_values));
+  fail_unless (gst_control_source_get_value_array (cs,
+          0, GST_SECOND / 2, 3, raw_values));
   fail_unless_equals_float ((raw_values)[0], 0.0);
   fail_unless_equals_float ((raw_values)[1], 0.5);
   fail_unless_equals_float ((raw_values)[2], 1.0);
@@ -620,7 +603,7 @@ GST_START_TEST (controller_interpolation_linear_value_array)
   g_values = g_new0 (GValue, 3);
 
   fail_unless (gst_object_get_value_array (GST_OBJECT (elem), "int",
-          0, GST_SECOND, 3, g_values));
+          0, GST_SECOND / 2, 3, g_values));
   fail_unless_equals_int (g_value_get_int (&g_values[0]), 0);
   fail_unless_equals_int (g_value_get_int (&g_values[1]), 50);
   fail_unless_equals_int (g_value_get_int (&g_values[2]), 100);
@@ -628,7 +611,6 @@ GST_START_TEST (controller_interpolation_linear_value_array)
   g_free (g_values);
 
   gst_object_unref (csource);
-
   gst_object_unref (elem);
 }
 
@@ -638,30 +620,26 @@ GST_END_TEST;
 GST_START_TEST (controller_interpolation_linear_invalid_values)
 {
   GstInterpolationControlSource *csource;
-  GstTimedValueControlSource *cs;
+  GstTimedValueControlSource *tvcs;
+  GstControlSource *cs;
   GstElement *elem;
-  gboolean res;
 
   elem = gst_element_factory_make ("testobj", NULL);
 
   /* new interpolation control source */
   csource = gst_interpolation_control_source_new ();
+  tvcs = (GstTimedValueControlSource *) csource;
+  cs = (GstControlSource *) csource;
 
   fail_unless (csource != NULL);
-  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "float",
-          GST_CONTROL_SOURCE (csource)));
+  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "float", cs));
 
   /* set interpolation mode */
   g_object_set (csource, "mode", GST_INTERPOLATION_MODE_LINEAR, NULL);
 
   /* set control values */
-  cs = (GstTimedValueControlSource *) csource;
-  res = gst_timed_value_control_source_set (cs, 0 * GST_SECOND, 2.0);
-  fail_unless (res, NULL);
-  res = gst_timed_value_control_source_set (cs, 4 * GST_SECOND, -2.0);
-  fail_unless (res, NULL);
-
-  gst_object_unref (csource);
+  fail_unless (gst_timed_value_control_source_set (tvcs, 0 * GST_SECOND, 2.0));
+  fail_unless (gst_timed_value_control_source_set (tvcs, 4 * GST_SECOND, -2.0));
 
   /* now pull in values for some timestamps and see if clipping works */
   /* 200.0 */
@@ -684,6 +662,7 @@ GST_START_TEST (controller_interpolation_linear_invalid_values)
   gst_object_sync_values (GST_OBJECT (elem), 4 * GST_SECOND);
   fail_unless_equals_float (GST_TEST_OBJ (elem)->val_float, 0.0);
 
+  gst_object_unref (csource);
   gst_object_unref (elem);
 }
 
@@ -692,18 +671,19 @@ GST_END_TEST;
 GST_START_TEST (controller_interpolation_linear_default_values)
 {
   GstInterpolationControlSource *csource;
-  GstTimedValueControlSource *cs;
+  GstTimedValueControlSource *tvcs;
+  GstControlSource *cs;
   GstElement *elem;
-  gboolean res;
 
   elem = gst_element_factory_make ("testobj", NULL);
 
   /* new interpolation control source */
   csource = gst_interpolation_control_source_new ();
+  tvcs = (GstTimedValueControlSource *) csource;
+  cs = (GstControlSource *) csource;
 
   fail_unless (csource != NULL);
-  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int",
-          GST_CONTROL_SOURCE (csource)));
+  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int", cs));
 
   /* set interpolation mode */
   g_object_set (csource, "mode", GST_INTERPOLATION_MODE_LINEAR, NULL);
@@ -716,11 +696,8 @@ GST_START_TEST (controller_interpolation_linear_default_values)
    */
 
   /* set control values */
-  cs = (GstTimedValueControlSource *) csource;
-  res = gst_timed_value_control_source_set (cs, 1 * GST_SECOND, 0.0);
-  fail_unless (res, NULL);
-  res = gst_timed_value_control_source_set (cs, 3 * GST_SECOND, 1.0);
-  fail_unless (res, NULL);
+  fail_unless (gst_timed_value_control_source_set (tvcs, 1 * GST_SECOND, 0.0));
+  fail_unless (gst_timed_value_control_source_set (tvcs, 3 * GST_SECOND, 1.0));
 
   /* now pull in values for some timestamps */
   /* should give the value of the first control point for timestamps before it */
@@ -734,16 +711,12 @@ GST_START_TEST (controller_interpolation_linear_default_values)
   fail_unless_equals_int (GST_TEST_OBJ (elem)->val_int, 100);
 
   /* set control values */
-  res = gst_timed_value_control_source_set (cs, 0 * GST_SECOND, 0.0);
-  fail_unless (res, NULL);
-  res = gst_timed_value_control_source_set (cs, 2 * GST_SECOND, 1.0);
-  fail_unless (res, NULL);
+  fail_unless (gst_timed_value_control_source_set (tvcs, 0 * GST_SECOND, 0.0));
+  fail_unless (gst_timed_value_control_source_set (tvcs, 2 * GST_SECOND, 1.0));
 
   /* unset the old ones */
-  res = gst_timed_value_control_source_unset (cs, 1 * GST_SECOND);
-  fail_unless (res, NULL);
-  res = gst_timed_value_control_source_unset (cs, 3 * GST_SECOND);
-  fail_unless (res, NULL);
+  fail_unless (gst_timed_value_control_source_unset (tvcs, 1 * GST_SECOND));
+  fail_unless (gst_timed_value_control_source_unset (tvcs, 3 * GST_SECOND));
 
   /* now pull in values for some timestamps */
   /* should now give our value for timestamp 0 */
@@ -755,7 +728,6 @@ GST_START_TEST (controller_interpolation_linear_default_values)
   fail_unless_equals_int (GST_TEST_OBJ (elem)->val_int, 100);
 
   gst_object_unref (csource);
-
   gst_object_unref (elem);
 }
 
@@ -765,44 +737,38 @@ GST_END_TEST;
 GST_START_TEST (controller_interpolate_linear_disabled)
 {
   GstInterpolationControlSource *csource1, *csource2;
-  GstTimedValueControlSource *cs;
+  GstTimedValueControlSource *tvcs1, *tvcs2;
+  GstControlSource *cs1, *cs2;
   GstElement *elem;
-  gboolean res;
 
   elem = gst_element_factory_make ("testobj", NULL);
 
   /* new interpolation control source */
   csource1 = gst_interpolation_control_source_new ();
+  tvcs1 = (GstTimedValueControlSource *) csource1;
+  cs1 = (GstControlSource *) csource1;
+
   csource2 = gst_interpolation_control_source_new ();
+  tvcs2 = (GstTimedValueControlSource *) csource2;
+  cs2 = (GstControlSource *) csource2;
 
   fail_unless (csource1 != NULL);
-  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int",
-          GST_CONTROL_SOURCE (csource1)));
+  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int", cs1));
   fail_unless (csource2 != NULL);
   fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "double",
-          GST_CONTROL_SOURCE (csource2)));
+          cs2));
 
   /* set interpolation mode */
   g_object_set (csource1, "mode", GST_INTERPOLATION_MODE_LINEAR, NULL);
   g_object_set (csource2, "mode", GST_INTERPOLATION_MODE_LINEAR, NULL);
 
   /* set control values */
-  cs = (GstTimedValueControlSource *) csource1;
-  res = gst_timed_value_control_source_set (cs, 0 * GST_SECOND, 0.0);
-  fail_unless (res, NULL);
-  res = gst_timed_value_control_source_set (cs, 2 * GST_SECOND, 1.0);
-  fail_unless (res, NULL);
-
-  gst_object_unref (csource1);
+  fail_unless (gst_timed_value_control_source_set (tvcs1, 0 * GST_SECOND, 0.0));
+  fail_unless (gst_timed_value_control_source_set (tvcs1, 2 * GST_SECOND, 1.0));
 
   /* set control values */
-  cs = (GstTimedValueControlSource *) csource2;
-  res = gst_timed_value_control_source_set (cs, 0 * GST_SECOND, 0.2);
-  fail_unless (res, NULL);
-  res = gst_timed_value_control_source_set (cs, 2 * GST_SECOND, 0.4);
-  fail_unless (res, NULL);
-
-  gst_object_unref (csource2);
+  fail_unless (gst_timed_value_control_source_set (tvcs2, 0 * GST_SECOND, 0.2));
+  fail_unless (gst_timed_value_control_source_set (tvcs2, 2 * GST_SECOND, 0.4));
 
   /* now pull in values for some timestamps */
   gst_object_sync_values (GST_OBJECT (elem), 0 * GST_SECOND);
@@ -885,6 +851,8 @@ GST_START_TEST (controller_interpolate_linear_disabled)
   fail_unless_equals_int (GST_TEST_OBJ (elem)->val_int, 100);
   fail_unless_equals_float (GST_TEST_OBJ (elem)->val_double, 40.0);
 
+  gst_object_unref (csource1);
+  gst_object_unref (csource2);
   gst_object_unref (elem);
 }
 
@@ -894,6 +862,8 @@ GST_END_TEST;
 GST_START_TEST (controller_interpolation_set_from_list)
 {
   GstInterpolationControlSource *csource;
+  GstTimedValueControlSource *tvcs;
+  GstControlSource *cs;
   GstTimedValue *tval;
   GstElement *elem;
   GSList *list = NULL;
@@ -903,10 +873,11 @@ GST_START_TEST (controller_interpolation_set_from_list)
 
   /* new interpolation control source */
   csource = gst_interpolation_control_source_new ();
+  tvcs = (GstTimedValueControlSource *) csource;
+  cs = (GstControlSource *) csource;
 
   fail_unless (csource != NULL);
-  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int",
-          GST_CONTROL_SOURCE (csource)));
+  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int", cs));
 
   /* set interpolation mode */
   g_object_set (csource, "mode", GST_INTERPOLATION_MODE_LINEAR, NULL);
@@ -918,19 +889,16 @@ GST_START_TEST (controller_interpolation_set_from_list)
 
   list = g_slist_append (list, tval);
 
-  fail_if (gst_timed_value_control_source_set_from_list (
-          (GstTimedValueControlSource *) csource, list));
+  fail_if (gst_timed_value_control_source_set_from_list (tvcs, list));
 
   /* try again with a valid stamp, should work now */
   tval->timestamp = 0;
-  fail_unless (gst_timed_value_control_source_set_from_list (
-          (GstTimedValueControlSource *) csource, list));
-
-  gst_object_unref (csource);
+  fail_unless (gst_timed_value_control_source_set_from_list (tvcs, list));
 
   /* allocated GstTimedValue now belongs to the controller, but list not */
   g_free (tval);
   g_slist_free (list);
+  gst_object_unref (csource);
   gst_object_unref (elem);
 }
 
@@ -941,30 +909,26 @@ GST_END_TEST;
 GST_START_TEST (controller_interpolate_linear_before_ts0)
 {
   GstInterpolationControlSource *csource;
-  GstTimedValueControlSource *cs;
+  GstTimedValueControlSource *tvcs;
+  GstControlSource *cs;
   GstElement *elem;
-  gboolean res;
 
   elem = gst_element_factory_make ("testobj", NULL);
 
   /* new interpolation control source */
   csource = gst_interpolation_control_source_new ();
+  tvcs = (GstTimedValueControlSource *) csource;
+  cs = (GstControlSource *) csource;
 
   fail_unless (csource != NULL);
-  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int",
-          GST_CONTROL_SOURCE (csource)));
+  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int", cs));
 
   /* set interpolation mode */
   g_object_set (csource, "mode", GST_INTERPOLATION_MODE_LINEAR, NULL);
 
   /* set control values */
-  cs = (GstTimedValueControlSource *) csource;
-  res = gst_timed_value_control_source_set (cs, 2 * GST_SECOND, 1.0);
-  fail_unless (res, NULL);
-  res = gst_timed_value_control_source_set (cs, 4 * GST_SECOND, 0.0);
-  fail_unless (res, NULL);
-
-  gst_object_unref (csource);
+  fail_unless (gst_timed_value_control_source_set (tvcs, 2 * GST_SECOND, 1.0));
+  fail_unless (gst_timed_value_control_source_set (tvcs, 4 * GST_SECOND, 0.0));
 
   /* now pull in values for some timestamps after first control point */
   gst_object_sync_values (GST_OBJECT (elem), 2 * GST_SECOND);
@@ -981,81 +945,75 @@ GST_START_TEST (controller_interpolate_linear_before_ts0)
   gst_object_sync_values (GST_OBJECT (elem), 0 * GST_SECOND);
   fail_unless_equals_int (GST_TEST_OBJ (elem)->val_int, 25);
 
+  gst_object_unref (csource);
   gst_object_unref (elem);
 }
 
 GST_END_TEST;
 
-/* test control-point handling in interpolation control source */
-GST_START_TEST (controller_interpolation_cp_count)
+/* test timed value counts */
+GST_START_TEST (controller_timed_value_count)
 {
   GstInterpolationControlSource *csource;
-  GstTimedValueControlSource *cs;
+  GstTimedValueControlSource *tvcs;
+  GstControlSource *cs;
   GstElement *elem;
-  gboolean res;
 
   elem = gst_element_factory_make ("testobj", NULL);
 
   /* new interpolation control source */
   csource = gst_interpolation_control_source_new ();
+  tvcs = (GstTimedValueControlSource *) csource;
+  cs = (GstControlSource *) csource;
 
   fail_unless (csource != NULL);
-  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int",
-          GST_CONTROL_SOURCE (csource)));
+  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int", cs));
 
   /* set interpolation mode */
   g_object_set (csource, "mode", GST_INTERPOLATION_MODE_NONE, NULL);
 
-  fail_unless (gst_timed_value_control_source_get_count (
-          (GstTimedValueControlSource *) csource) == 0);
+  fail_unless (gst_timed_value_control_source_get_count (tvcs) == 0);
 
   /* set control values */
-  cs = (GstTimedValueControlSource *) csource;
-  res = gst_timed_value_control_source_set (cs, 0 * GST_SECOND, 0.0);
-  fail_unless (res, NULL);
-  fail_unless (gst_timed_value_control_source_get_count (cs) == 1);
-  res = gst_timed_value_control_source_set (cs, 2 * GST_SECOND, 1.0);
-  fail_unless (res, NULL);
-  fail_unless (gst_timed_value_control_source_get_count (cs) == 2);
-
-  /* now unset control values */
-  res = gst_timed_value_control_source_unset (cs, 2 * GST_SECOND);
-  fail_unless (res, NULL);
-  fail_unless (gst_timed_value_control_source_get_count (cs) == 1);
-
-  res = gst_timed_value_control_source_unset (cs, 0 * GST_SECOND);
-  fail_unless (res, NULL);
-  fail_unless (gst_timed_value_control_source_get_count (cs) == 0);
+  fail_unless (gst_timed_value_control_source_set (tvcs, 0 * GST_SECOND, 0.0));
+  fail_unless (gst_timed_value_control_source_get_count (tvcs) == 1);
+  fail_unless (gst_timed_value_control_source_set (tvcs, 2 * GST_SECOND, 1.0));
+  fail_unless (gst_timed_value_control_source_get_count (tvcs) == 2);
 
-  gst_object_unref (csource);
+  /* unset control values */
+  fail_unless (gst_timed_value_control_source_unset (tvcs, 2 * GST_SECOND));
+  fail_unless (gst_timed_value_control_source_get_count (tvcs) == 1);
+  fail_unless (gst_timed_value_control_source_unset (tvcs, 0 * GST_SECOND));
+  fail_unless (gst_timed_value_control_source_get_count (tvcs) == 0);
 
+  gst_object_unref (csource);
   gst_object_unref (elem);
 }
 
 GST_END_TEST;
 
+
 /* test lfo control source with sine waveform */
 GST_START_TEST (controller_lfo_sine)
 {
   GstLFOControlSource *csource;
+  GstControlSource *cs;
   GstElement *elem;
 
   elem = gst_element_factory_make ("testobj", NULL);
 
   /* new lfo control source */
   csource = gst_lfo_control_source_new ();
+  cs = (GstControlSource *) csource;
 
   fail_unless (csource != NULL);
-  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int",
-          GST_CONTROL_SOURCE (csource)));
+  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int", cs));
 
   /* configure lfo */
   g_object_set (csource, "waveform", GST_LFO_WAVEFORM_SINE,
       "frequency", 1.0, "timeshift", (GstClockTime) 0,
       "amplitude", 0.5, "offset", 0.5, NULL);
 
-  gst_object_unref (csource);
-
   /* now pull in values for some timestamps */
   gst_object_sync_values (GST_OBJECT (elem), 0 * GST_MSECOND);
   fail_unless_equals_int (GST_TEST_OBJ (elem)->val_int, 50);
@@ -1082,6 +1040,7 @@ GST_START_TEST (controller_lfo_sine)
   gst_object_sync_values (GST_OBJECT (elem), 1750 * GST_MSECOND);
   fail_unless_equals_int (GST_TEST_OBJ (elem)->val_int, 0);
 
+  gst_object_unref (csource);
   gst_object_unref (elem);
 }
 
@@ -1091,25 +1050,24 @@ GST_END_TEST;
 GST_START_TEST (controller_lfo_sine_timeshift)
 {
   GstLFOControlSource *csource;
+  GstControlSource *cs;
   GstElement *elem;
 
   elem = gst_element_factory_make ("testobj", NULL);
 
   /* new lfo control source */
   csource = gst_lfo_control_source_new ();
+  cs = (GstControlSource *) csource;
 
   fail_unless (csource != NULL);
-  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int",
-          GST_CONTROL_SOURCE (csource)));
+  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int", cs));
 
   /* configure lfo */
   g_object_set (csource, "waveform", GST_LFO_WAVEFORM_SINE,
       "frequency", 1.0, "timeshift", 250 * GST_MSECOND,
       "amplitude", 0.5, "offset", 0.5, NULL);
 
-  gst_object_unref (csource);
-
-/* now pull in values for some timestamps */
+  /* now pull in values for some timestamps */
   gst_object_sync_values (GST_OBJECT (elem), 0 * GST_MSECOND);
   fail_unless_equals_int (GST_TEST_OBJ (elem)->val_int, 0);
   gst_object_sync_values (GST_OBJECT (elem), 250 * GST_MSECOND);
@@ -1135,6 +1093,7 @@ GST_START_TEST (controller_lfo_sine_timeshift)
   gst_object_sync_values (GST_OBJECT (elem), 1750 * GST_MSECOND);
   fail_unless_equals_int (GST_TEST_OBJ (elem)->val_int, 50);
 
+  gst_object_unref (csource);
   gst_object_unref (elem);
 }
 
@@ -1144,24 +1103,23 @@ GST_END_TEST;
 GST_START_TEST (controller_lfo_square)
 {
   GstLFOControlSource *csource;
+  GstControlSource *cs;
   GstElement *elem;
 
   elem = gst_element_factory_make ("testobj", NULL);
 
   /* new lfo control source */
   csource = gst_lfo_control_source_new ();
+  cs = (GstControlSource *) csource;
 
   fail_unless (csource != NULL);
-  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int",
-          GST_CONTROL_SOURCE (csource)));
+  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int", cs));
 
   /* configure lfo */
   g_object_set (csource, "waveform", GST_LFO_WAVEFORM_SQUARE,
       "frequency", 1.0, "timeshift", (GstClockTime) 0,
       "amplitude", 0.5, "offset", 0.5, NULL);
 
-  gst_object_unref (csource);
-
   /* now pull in values for some timestamps */
   gst_object_sync_values (GST_OBJECT (elem), 0 * GST_MSECOND);
   fail_unless_equals_int (GST_TEST_OBJ (elem)->val_int, 0);
@@ -1188,6 +1146,7 @@ GST_START_TEST (controller_lfo_square)
   gst_object_sync_values (GST_OBJECT (elem), 1750 * GST_MSECOND);
   fail_unless_equals_int (GST_TEST_OBJ (elem)->val_int, 100);
 
+  gst_object_unref (csource);
   gst_object_unref (elem);
 }
 
@@ -1197,24 +1156,23 @@ GST_END_TEST;
 GST_START_TEST (controller_lfo_saw)
 {
   GstLFOControlSource *csource;
+  GstControlSource *cs;
   GstElement *elem;
 
   elem = gst_element_factory_make ("testobj", NULL);
 
   /* new lfo control source */
   csource = gst_lfo_control_source_new ();
+  cs = (GstControlSource *) csource;
 
   fail_unless (csource != NULL);
-  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int",
-          GST_CONTROL_SOURCE (csource)));
+  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int", cs));
 
   /* configure lfo */
   g_object_set (csource, "waveform", GST_LFO_WAVEFORM_SAW,
       "frequency", 1.0, "timeshift", (GstClockTime) 0,
       "amplitude", 0.5, "offset", 0.5, NULL);
 
-  gst_object_unref (csource);
-
   /* now pull in values for some timestamps */
   gst_object_sync_values (GST_OBJECT (elem), 0 * GST_MSECOND);
   fail_unless_equals_int (GST_TEST_OBJ (elem)->val_int, 100);
@@ -1241,6 +1199,7 @@ GST_START_TEST (controller_lfo_saw)
   gst_object_sync_values (GST_OBJECT (elem), 1750 * GST_MSECOND);
   fail_unless_equals_int (GST_TEST_OBJ (elem)->val_int, 25);
 
+  gst_object_unref (csource);
   gst_object_unref (elem);
 }
 
@@ -1250,24 +1209,23 @@ GST_END_TEST;
 GST_START_TEST (controller_lfo_rsaw)
 {
   GstLFOControlSource *csource;
+  GstControlSource *cs;
   GstElement *elem;
 
   elem = gst_element_factory_make ("testobj", NULL);
 
   /* new lfo control source */
   csource = gst_lfo_control_source_new ();
+  cs = (GstControlSource *) csource;
 
   fail_unless (csource != NULL);
-  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int",
-          GST_CONTROL_SOURCE (csource)));
+  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int", cs));
 
   /* configure lfo */
   g_object_set (csource, "waveform", GST_LFO_WAVEFORM_REVERSE_SAW,
       "frequency", 1.0, "timeshift", (GstClockTime) 0,
       "amplitude", 0.5, "offset", 0.5, NULL);
 
-  gst_object_unref (csource);
-
   /* now pull in values for some timestamps */
   gst_object_sync_values (GST_OBJECT (elem), 0 * GST_MSECOND);
   fail_unless_equals_int (GST_TEST_OBJ (elem)->val_int, 0);
@@ -1294,6 +1252,7 @@ GST_START_TEST (controller_lfo_rsaw)
   gst_object_sync_values (GST_OBJECT (elem), 1750 * GST_MSECOND);
   fail_unless_equals_int (GST_TEST_OBJ (elem)->val_int, 75);
 
+  gst_object_unref (csource);
   gst_object_unref (elem);
 }
 
@@ -1303,24 +1262,23 @@ GST_END_TEST;
 GST_START_TEST (controller_lfo_triangle)
 {
   GstLFOControlSource *csource;
+  GstControlSource *cs;
   GstElement *elem;
 
   elem = gst_element_factory_make ("testobj", NULL);
 
   /* new lfo control source */
   csource = gst_lfo_control_source_new ();
+  cs = (GstControlSource *) csource;
 
   fail_unless (csource != NULL);
-  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int",
-          GST_CONTROL_SOURCE (csource)));
+  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int", cs));
 
   /* configure lfo */
   g_object_set (csource, "waveform", GST_LFO_WAVEFORM_TRIANGLE,
       "frequency", 1.0, "timeshift", (GstClockTime) 0,
       "amplitude", 0.5, "offset", 0.5, NULL);
 
-  gst_object_unref (csource);
-
   /* now pull in values for some timestamps */
   gst_object_sync_values (GST_OBJECT (elem), 0 * GST_MSECOND);
   fail_unless_equals_int (GST_TEST_OBJ (elem)->val_int, 50);
@@ -1347,6 +1305,7 @@ GST_START_TEST (controller_lfo_triangle)
   gst_object_sync_values (GST_OBJECT (elem), 1750 * GST_MSECOND);
   fail_unless_equals_int (GST_TEST_OBJ (elem)->val_int, 0);
 
+  gst_object_unref (csource);
   gst_object_unref (elem);
 }
 
@@ -1356,18 +1315,17 @@ GST_END_TEST;
 GST_START_TEST (controller_lfo_none)
 {
   GstLFOControlSource *csource;
+  GstControlSource *cs;
   GstElement *elem;
 
   elem = gst_element_factory_make ("testobj", NULL);
 
   /* new lfo control source */
   csource = gst_lfo_control_source_new ();
+  cs = (GstControlSource *) csource;
 
   fail_unless (csource != NULL);
-  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int",
-          GST_CONTROL_SOURCE (csource)));
-
-  gst_object_unref (csource);
+  fail_unless (gst_object_set_control_source (GST_OBJECT (elem), "int", cs));
 
   /* now pull in values for some timestamps */
   gst_object_sync_values (GST_OBJECT (elem), 0 * GST_MSECOND);
@@ -1395,6 +1353,7 @@ GST_START_TEST (controller_lfo_none)
   gst_object_sync_values (GST_OBJECT (elem), 1750 * GST_MSECOND);
   fail_unless_equals_int (GST_TEST_OBJ (elem)->val_int, 0);
 
+  gst_object_unref (csource);
   gst_object_unref (elem);
 }
 
@@ -1407,7 +1366,6 @@ GST_START_TEST (controller_trigger_exact)
   GstControlSource *cs;
   GstTimedValueControlSource *tvcs;
   GstElement *elem;
-  gboolean res;
   gdouble raw_val;
 
   elem = gst_element_factory_make ("testobj", NULL);
@@ -1423,11 +1381,8 @@ GST_START_TEST (controller_trigger_exact)
   fail_if (gst_control_source_get_value (cs, 0 * GST_SECOND, &raw_val));
 
   /* set control values */
-  res = gst_timed_value_control_source_set (tvcs, 0 * GST_SECOND, 0.5);
-  fail_unless (res, NULL);
-  res = gst_timed_value_control_source_set (tvcs, 2 * GST_SECOND, 1.0);
-  fail_unless (res, NULL);
-
+  fail_unless (gst_timed_value_control_source_set (tvcs, 0 * GST_SECOND, 0.5));
+  fail_unless (gst_timed_value_control_source_set (tvcs, 2 * GST_SECOND, 1.0));
 
   /* now pull in values for some timestamps */
   fail_unless (gst_control_source_get_value (cs, 0 * GST_SECOND, &raw_val));
@@ -1456,7 +1411,6 @@ GST_START_TEST (controller_trigger_tolerance)
   GstControlSource *cs;
   GstTimedValueControlSource *tvcs;
   GstElement *elem;
-  gboolean res;
   gdouble raw_val;
 
   elem = gst_element_factory_make ("testobj", NULL);
@@ -1475,11 +1429,8 @@ GST_START_TEST (controller_trigger_tolerance)
   fail_if (gst_control_source_get_value (cs, 0 * GST_SECOND, &raw_val));
 
   /* set control values */
-  res = gst_timed_value_control_source_set (tvcs, 0 * GST_SECOND, 0.5);
-  fail_unless (res, NULL);
-  res = gst_timed_value_control_source_set (tvcs, 2 * GST_SECOND, 1.0);
-  fail_unless (res, NULL);
-
+  fail_unless (gst_timed_value_control_source_set (tvcs, 0 * GST_SECOND, 0.5));
+  fail_unless (gst_timed_value_control_source_set (tvcs, 2 * GST_SECOND, 1.0));
 
   /* now pull in values for some timestamps */
   gst_object_sync_values (GST_OBJECT (elem), 0 * GST_SECOND);
@@ -1525,7 +1476,7 @@ gst_controller_suite (void)
   tcase_add_test (tc, controller_interpolate_linear_disabled);
   tcase_add_test (tc, controller_interpolation_set_from_list);
   tcase_add_test (tc, controller_interpolate_linear_before_ts0);
-  tcase_add_test (tc, controller_interpolation_cp_count);
+  tcase_add_test (tc, controller_timed_value_count);
   tcase_add_test (tc, controller_lfo_sine);
   tcase_add_test (tc, controller_lfo_sine_timeshift);
   tcase_add_test (tc, controller_lfo_square);