Source tree moved to mafw-gst-subtitles-renderer directory.
[mafwsubrenderer] / tests / check-mafw-gst-renderer.c
diff --git a/tests/check-mafw-gst-renderer.c b/tests/check-mafw-gst-renderer.c
deleted file mode 100644 (file)
index ae4982b..0000000
+++ /dev/null
@@ -1,4174 +0,0 @@
-/*
- * This file is a part of MAFW
- *
- * Copyright (C) 2007, 2008, 2009 Nokia Corporation, all rights reserved.
- *
- * Contact: Visa Smolander <visa.smolander@nokia.com>
- *
- * 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; 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., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
- *
- */
-
-/*
- * check-gst-renderer.c
- *
- * Gst Renderer unit tests
- *
- * Copyright (C) 2007 Nokia Corporation
- *
- */
-
-#include <glib.h>
-
-#include <check.h>
-#include <string.h>
-#include <stdlib.h>
-#include <sqlite3.h>
-#include <gst/tag/tag.h>
-
-#include <libmafw/mafw.h>
-#include <checkmore.h>
-
-#include "config.h"
-
-#include "mafw-gst-renderer.h"
-#include "mafw-mock-playlist.h"
-#include "mafw-mock-pulseaudio.h"
-
-#undef  G_LOG_DOMAIN
-#define G_LOG_DOMAIN "check-mafw-gstreamer-renderer"
-
-#define SAMPLE_AUDIO_CLIP "test.wav"
-#define SAMPLE_VIDEO_CLIP "test.avi"
-#define SAMPLE_IMAGE "testframe.png"
-
-/* Base timeout used when waiting for state transitions or execution of
-   user function callbacks associated to each mafw-renderer function */
-#define DEFAULT_WAIT_TOUT 2000
-
-/* EOS timeout must be longer than the clip duration */
-#define EOS_TIMEOUT 7000
-
-SRunner *configure_tests(void);
-
-typedef struct {
-       gint index;
-       MafwPlayState state;
-} RendererInfo;
-
-typedef struct {
-       gboolean called;
-       gboolean error;
-       gint err_code;
-       gchar *err_msg;
-       gint seek_position;
-       gboolean error_signal_expected;
-       GError *error_signal_received;
-       const gchar *property_expected;
-       GValue *property_received;
-} CallbackInfo;                
-
-typedef struct {
-       const gchar *expected_key;
-       GValue *value;
-} MetadataChangedInfo;
-
-typedef struct {
-       const gchar *expected;
-       GValue *received;
-} PropertyChangedInfo;
-
-typedef struct {
-       gboolean requested;
-       gboolean received;
-       gfloat value;
-} BufferingInfo;
-
-static gint wait_tout_val;
-
-/* Globals. */
-
-static MafwRenderer *g_gst_renderer = NULL;
-
-/* Error messages. */
-
-static const gchar *callback_err_msg = "Error received when %s: (%d) %s";
-static const gchar *callback_no_err_msg = "No error received when %s: (%d) %s";
-static const gchar *no_callback_msg = "We forgot to call the user callback";
-static const gchar *state_err_msg = "Call %s didn't change state to %s. " \
-"Current state is: %d";
-static const gchar *index_err_msg = "Actual index is (%d) instead of the " \
-"expected index (%d)";
-
-
-/*----------------------------------------------------------------------------
-  Signal handlers
-  ----------------------------------------------------------------------------*/
-
-static void error_cb(MafwRenderer *s, GQuark domain, gint code, gchar *msg, 
-                    gpointer user_data)
-{
-       CallbackInfo* c = (CallbackInfo*) user_data;
-
-       /* "MafwExtension::error" signal handler */     
-       if (user_data == NULL || !c->error_signal_expected) {
-               fail("Signal error received: (%d) %s", code, msg);
-       } else {
-               if (c->error_signal_received != NULL) {
-                       fail("Error received already initialized");
-               } else {
-                       c->error_signal_received =
-                               g_error_new_literal(domain, code, msg);
-               }
-       }
-}
-
-static void state_changed_cb(MafwRenderer *s,  MafwPlayState state,
-                            gpointer user_data)
-{
-       /* "MafwRenderer::state-changed" signal handler */
-       RendererInfo *si = (RendererInfo *) user_data;
-       gchar *states[] = {"Stopped","Playing","Paused","Transitioning"};
-
-       si->state = state;
-       g_debug("state changed (%s) ---", states[state]);
-}
-
-static gboolean media_changed_called;
-
-static void media_changed_cb(MafwRenderer *s, gint index, gchar *objectid,
-                            gpointer user_data)
-{
-       /* "MafwRenderer::media-changed" signal handler */
-       RendererInfo *si = (RendererInfo *) user_data;
-
-       si->index = index;
-       g_debug("media changed (%d) ---", index);
-       media_changed_called = TRUE;
-}
-static void playlist_changed_cb (MafwRenderer *self,
-                                                        GObject       *playlist,
-                                                        gpointer       user_data)
-{
-       g_debug("playlist changed");
-       fail_if(media_changed_called, "At first playlist-changed should be called");
-}
-
-static void metadata_changed_cb(MafwRenderer *self, const gchar *key,
-                               GValueArray *value, gpointer user_data)
-{
-       MetadataChangedInfo *m = user_data;
-
-       if (m->expected_key != NULL && strcmp(key, m->expected_key) == 0)
-       {
-               GValue *original;
-
-               original = g_value_array_get_nth(value, 0);
-
-               m->value = g_new0(GValue, 1);
-               g_value_init(m->value, G_VALUE_TYPE(original));
-               g_value_copy(original, m->value);
-       }
-}
-
-static void property_changed_cb(MafwExtension *extension, const gchar *name,
-                               const GValue *value, gpointer user_data)
-{
-       PropertyChangedInfo* p = (PropertyChangedInfo*) user_data;
-       gchar *value_string;
-
-       value_string = g_strdup_value_contents(value);
-
-       g_debug("property_changed_cb: %s (%s)", name, value_string);
-       g_free(value_string);
-
-       if (p->expected != NULL &&
-           strcmp(p->expected, name) == 0) {
-               p->received = g_new0(GValue, 1);
-               g_value_init(p->received, G_VALUE_TYPE(value));
-               g_value_copy(value, p->received);
-       }
-}
-
-static void buffering_info_cb(MafwRenderer *self, gfloat status,
-                             gpointer user_data)
-{
-       BufferingInfo *b = user_data;
-
-       if (b->requested) {
-               b->received = TRUE;
-               b->value = status;
-       }
-}
-
-/*----------------------------------------------------------------------------
-  Function callbacks
-  ----------------------------------------------------------------------------*/
-
-
-static void status_cb(MafwRenderer* renderer, MafwPlaylist* playlist, guint index,
-                     MafwPlayState state,
-                     const gchar* object_id, 
-                     gpointer user_data,
-                     const GError *error)
-{
-       /* MafwRendererStatusCB */
-       RendererInfo* s = (RendererInfo*) user_data;
-       g_assert(s != NULL);
-
-       if (error != NULL) {
-               fail("Error received while trying to get renderer status: (%d) %s",
-                    error->code, error->message);
-       } 
-       s->state = state;
-
-}
-
-static void playback_cb(MafwRenderer* renderer, gpointer user_data, const GError* error)
-{
-       /* MafwRendererPlaybackCB:
-          
-       Called after mafw_renderer_play(), mafw_renderer_play_uri(),
-       mafw_renderer_play_object(), mafw_renderer_stop(), mafw_renderer_pause(),
-       mafw_renderer_resume(), mafw_renderer_next(),   mafw_renderer_previous() or 
-       mafw_renderer_goto_index() has been called. */
-       CallbackInfo* c = (CallbackInfo*) user_data;
-       g_assert(c != NULL);
-
-       c->called = TRUE;
-       if (error != NULL) {
-               c->error = TRUE;
-               c->err_code = error->code;
-               c->err_msg = g_strdup(error->message);
-       }
-}
-
-static void seek_cb (MafwRenderer *self, gint position, gpointer user_data,
-                    const GError *error)
-{
-       /* Called when seeking */
-
-       CallbackInfo* c = (CallbackInfo*) user_data;
-       g_assert(c != NULL);
-
-       c->called = TRUE;
-       c->seek_position = position;
-       if (error != NULL) {
-               c->error = TRUE;
-               c->err_code = error->code;
-               c->err_msg = g_strdup(error->message);
-       }
-}
-
-static void  get_position_cb(MafwRenderer *self, gint position,
-                            gpointer user_data, const GError *error)
-{
-       CallbackInfo* c = (CallbackInfo*) user_data;
-
-       g_debug("get position cb: %d", position);
-
-       if (error != NULL) {
-               c->error = TRUE;
-               c->err_code = error->code;
-               c->err_msg = g_strdup(error->message);
-       }
-       c->called = TRUE;
-}
-
-static void get_property_cb(MafwExtension *self,
-                           const gchar *name,
-                           GValue *value,
-                           gpointer user_data,
-                           const GError *error)
-{
-       CallbackInfo* c = (CallbackInfo*) user_data;
-       gchar *value_string;
-
-       value_string = g_strdup_value_contents(value);
-
-       g_debug("get property cb: %s (%s)", name, value_string);
-       g_free(value_string);
-
-       if (error != NULL) {
-               c->error = TRUE;
-               c->err_code = error->code;
-               c->err_msg = g_strdup(error->message);
-       }
-
-       if (c->property_expected != NULL &&
-           strcmp(c->property_expected, name) == 0) {
-               c->property_received = g_new0(GValue, 1);
-               g_value_init(c->property_received, G_VALUE_TYPE(value));
-               g_value_copy(value, c->property_received);
-
-               c->called = TRUE;
-       }
-}
-
-/*----------------------------------------------------------------------------
-  Helpers
-  ----------------------------------------------------------------------------*/
-
-static gchar *get_sample_clip_path(const gchar *clip)
-{
-       gchar *my_dir, *media;
-
-       /* Makefile.am sets TESTS_DIR, required for VPATH builds (like make
-        * distcheck).  Otherwise assume we are running in-place. */
-       my_dir = g_strdup(g_getenv("TESTS_DIR"));
-       if (!my_dir)
-               my_dir = g_get_current_dir();
-       media = g_strconcat("file://", my_dir, G_DIR_SEPARATOR_S,
-                           "media" G_DIR_SEPARATOR_S, clip,
-                           NULL);
-       g_free(my_dir);
-       return media;
-}
-
-static gchar *get_sample_clip_objectid(const gchar *clip)
-{
-       gchar *path = NULL;
-       gchar *objectid = NULL;
-
-       path = get_sample_clip_path(clip);
-        objectid = mafw_source_create_objectid(path);
-       g_free(path);
-
-       return objectid;
-}
-
-static gboolean stop_wait_timeout(gpointer user_data) 
-{
-       gboolean *do_stop = (gboolean *) user_data;
-       g_debug("stop wait timeout");
-       *do_stop = TRUE;
-
-       return FALSE;
-}
-
-static gboolean wait_until_timeout_finishes(guint millis)
-{
-       guint timeout = 0;
-       gboolean stop_wait = FALSE;
-       gboolean result = FALSE;
-
-       g_debug("Init wait_");
-       /* We'll wait a limitted ammount of time */
-       timeout = g_timeout_add(millis, stop_wait_timeout, &stop_wait);
-       while(!stop_wait) {
-               result= g_main_context_iteration(NULL, TRUE);
-       }
-
-       g_debug("End wait_");
-       return TRUE;
-}
-
-static gboolean wait_for_state(RendererInfo *renderer_info,
-                              MafwPlayState expected_state, guint millis)
-{
-       guint timeout = 0;
-       gboolean stop_wait = FALSE;
-       
-       g_debug("Init wait for state");
-       /* We'll wait a limitted ammount of time */
-       timeout = g_timeout_add(millis, stop_wait_timeout, &stop_wait);
-
-       while(renderer_info->state != expected_state  && !stop_wait) {
-                       g_main_context_iteration(NULL, TRUE);
-       }
-       
-       if (!stop_wait) {
-               g_source_remove(timeout);
-       }
-
-       g_debug("End wait for state");
-       return (renderer_info->state == expected_state);
-}
-
-static gboolean wait_for_callback(CallbackInfo *callback, guint millis)
-{
-       guint timeout = 0;
-       gboolean stop_wait = FALSE;
-
-       g_debug("Init wait for callback");
-       /* We'll wait a limitted ammount of time */
-       timeout = g_timeout_add(millis, stop_wait_timeout, &stop_wait);
-
-       while (callback->called == FALSE && !stop_wait) {
-               g_main_context_iteration(NULL, TRUE);
-       }
-       if (!stop_wait) {
-               g_source_remove(timeout);
-       }
-       g_debug("End wait for callback");
-       return callback->called;
-}
-
-static gboolean wait_for_metadata(MetadataChangedInfo *callback, guint millis)
-{
-       guint timeout = 0;
-       gboolean stop_wait = FALSE;
-
-       g_debug("Init wait for metadata");
-       /* We'll wait a limitted ammount of time */
-       timeout = g_timeout_add(millis, stop_wait_timeout, &stop_wait);
-
-       while (callback->value == NULL && !stop_wait) {
-               g_main_context_iteration(NULL, TRUE);
-       }
-       if (!stop_wait) {
-               g_source_remove(timeout);
-       }
-       g_debug("End wait for metadata");
-       return callback->value != NULL;
-}
-
-static gboolean wait_for_property(PropertyChangedInfo *callback, guint millis)
-{
-       guint timeout = 0;
-       gboolean stop_wait = FALSE;
-
-       g_debug("Init wait for property changed");
-       /* We'll wait a limitted ammount of time */
-       timeout = g_timeout_add(millis, stop_wait_timeout, &stop_wait);
-
-       while (callback->received == NULL && !stop_wait) {
-               g_main_context_iteration(NULL, TRUE);
-       }
-       if (!stop_wait) {
-               g_source_remove(timeout);
-       }
-       g_debug("End wait for callback");
-       return callback->received != NULL;
-}
-
-static gboolean wait_for_buffering(BufferingInfo *callback, guint millis)
-{
-       guint timeout = 0;
-       gboolean stop_wait = FALSE;
-
-       g_debug("Init wait for buffering info");
-       /* We'll wait a limitted ammount of time */
-       timeout = g_timeout_add(millis, stop_wait_timeout, &stop_wait);
-
-       while (!callback->received && !stop_wait) {
-               g_main_context_iteration(NULL, TRUE);
-       }
-       if (!stop_wait) {
-               g_source_remove(timeout);
-       }
-       g_debug("End wait for buffering info");
-       return callback->received;
-}
-
-static void reset_callback_info(CallbackInfo *callback_info)
-{
-       if (callback_info->err_msg != NULL) 
-               g_free(callback_info->err_msg);
-
-       callback_info->err_msg = NULL;
-       callback_info->called = FALSE;
-       callback_info->error = FALSE;
-       callback_info->seek_position = 0;
-       callback_info->error_signal_expected = FALSE;
-       if (callback_info->error_signal_received != NULL) {
-               g_error_free(callback_info->error_signal_received);
-               callback_info->error_signal_received = NULL;
-       }
-       callback_info->property_expected = NULL;
-       if (callback_info->property_received != NULL) {
-               g_value_unset(callback_info->property_received);
-               callback_info->property_received = NULL;
-       }
-}
-
-/*----------------------------------------------------------------------------
-  Fixtures
-  ----------------------------------------------------------------------------*/
-
-static void fx_setup_dummy_gst_renderer(void)
-{
-       MafwRegistry *registry;
-
-       /* Setup GLib */
-       g_type_init();
-
-       /* Create a gst renderer instance */
-       registry = MAFW_REGISTRY(mafw_registry_get_instance());
-       fail_if(registry == NULL,
-               "Error: cannot get MAFW registry");
-               
-       g_gst_renderer = MAFW_RENDERER(mafw_gst_renderer_new(registry));
-       fail_if(!MAFW_IS_GST_RENDERER(g_gst_renderer),
-               "Could not create gst renderer instance");
-}
-
-static void fx_teardown_dummy_gst_renderer(void)
-{
-       g_object_unref(g_gst_renderer);
-}
-
-/*----------------------------------------------------------------------------
-  Mockups
-  ----------------------------------------------------------------------------*/
-
-/* GStreamer mock */
-
-GstElement * gst_element_factory_make(const gchar * factoryname,
-                                     const gchar * name)
-{
-       GstElementFactory *factory;
-       GstElement *element;
-        const gchar *use_factoryname;
-       
-       g_return_val_if_fail(factoryname != NULL, NULL);
-       
-        /* For testing, use playbin instead of playbin2 */
-        if (g_ascii_strcasecmp(factoryname, "playbin2") == 0)
-                use_factoryname = "playbin";
-        else
-                use_factoryname = factoryname;
-
-       GST_LOG("gstelementfactory: make \"%s\" \"%s\"",
-               use_factoryname, GST_STR_NULL (name));
-
-       factory = gst_element_factory_find(use_factoryname);
-       if (factory == NULL) {
-               /* No factory */
-               GST_INFO("no such element factory \"%s\"!", use_factoryname);
-               return NULL;    
-       }
-
-       GST_LOG_OBJECT(factory, "found factory %p", factory);
-       if (g_ascii_strcasecmp(use_factoryname, "pulsesink") == 0) {
-               element = gst_element_factory_make("fakesink", "pulsesink");
-               g_object_set(G_OBJECT(element), "sync", TRUE, NULL);
-       } else if (g_ascii_strcasecmp(use_factoryname, "xvimagesink") == 0) {
-               element = gst_element_factory_make("fakesink", "xvimagesink");
-               g_object_set(G_OBJECT(element), "sync", TRUE, NULL);
-       } else {
-               element = gst_element_factory_create(factory, name);
-       }
-       gst_object_unref(factory);
-
-       if (element == NULL) {
-               /* Create failed */
-               GST_INFO_OBJECT(factory, "couldn't create instance!");
-               return NULL;
-       }
-
-       GST_LOG("gstelementfactory: make \"%s\" \"%s\"",use_factoryname,
-               GST_STR_NULL(name));
-
-       /* Playbin will use fake renderer */
-       if (g_ascii_strcasecmp(use_factoryname, "playbin") == 0) {
-               GstElement *audiorenderer = gst_element_factory_make("fakesink",
-                                                                "audiorenderer");
-               
-               g_object_set(G_OBJECT(audiorenderer), "sync", TRUE, NULL);
-               g_object_set(G_OBJECT(element),
-                            "audio-sink",
-                            audiorenderer,
-                            NULL);
-               g_object_set(G_OBJECT(element),
-                            "video-sink",
-                            audiorenderer,
-                            NULL);
-       }
-       return element;
-}
-
-
-/*----------------------------------------------------------------------------
-  Test cases
-  ----------------------------------------------------------------------------*/
-
-START_TEST(test_basic_playback)
-{
-       RendererInfo s;
-       CallbackInfo c;     
-       MetadataChangedInfo m;
-       GstBus *bus = NULL;
-       GstMessage *message = NULL;
-
-       /* Initialize callback info */
-       c.err_msg = NULL;
-       c.error_signal_expected = FALSE;
-       c.error_signal_received = NULL;
-       m.expected_key = NULL;
-       m.value = NULL;
-       c.property_expected = NULL;
-       c.property_received = NULL;
-
-       /* Connect to renderer signals */
-       g_signal_connect(g_gst_renderer, "error",
-                        G_CALLBACK(error_cb),
-                        &c);
-       g_signal_connect(g_gst_renderer, "state-changed",
-                        G_CALLBACK(state_changed_cb),
-                        &s);
-       g_signal_connect(g_gst_renderer, "media-changed",
-                        G_CALLBACK(media_changed_cb),
-                        &s);
-       g_signal_connect(g_gst_renderer, "metadata-changed",
-                        G_CALLBACK(metadata_changed_cb),
-                        &m);
-
-       /* --- Get initial status --- */
-
-       reset_callback_info(&c);
-
-       g_debug("get status...");
-       mafw_renderer_get_status(g_gst_renderer, status_cb, &s);
-
-       /* --- Play --- */
-
-       reset_callback_info(&c);
-
-       g_debug("play...");
-       mafw_renderer_play(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               /* No media item has been set so, we should get an error */
-               if (c.error == FALSE)
-                       fail("Play of unset media did not return an error");
-       } else {
-               fail(no_callback_msg);
-       }
-       
-       /* --- Play object --- */
-
-       reset_callback_info(&c);
-
-       gchar *objectid = get_sample_clip_objectid(SAMPLE_AUDIO_CLIP);
-       g_debug("play_object... %s", objectid);
-       mafw_renderer_play_object(g_gst_renderer, objectid, playback_cb, &c);
-
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "playing an object", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object", "Transitioning",
-                    s.state);
-       }
-               
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object", "Playing",
-                    s.state);
-       }
-
-       g_free(objectid);
-
-       /* --- Get position --- */
-
-       reset_callback_info(&c);
-
-       mafw_renderer_get_position(g_gst_renderer, get_position_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "get_position", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       /* --- Duration emission --- */
-
-       m.expected_key = MAFW_METADATA_KEY_DURATION;
-
-       bus = MAFW_GST_RENDERER(g_gst_renderer)->worker->bus;
-       fail_if(bus == NULL, "No GstBus");
-
-       message = gst_message_new_duration(NULL, GST_FORMAT_TIME,
-                                          5 * GST_SECOND);
-       gst_bus_post(bus, message);
-
-       if (wait_for_metadata(&m, wait_tout_val) == FALSE) {
-               fail("Expected " MAFW_METADATA_KEY_DURATION
-                    ", but not received");
-       }
-
-       fail_if(m.value == NULL, "Metadata " MAFW_METADATA_KEY_DURATION
-               " not received");
-
-       g_value_unset(m.value);
-       g_free(m.value);
-       m.value = NULL;
-       m.expected_key = NULL;
-
-       /* --- Pause --- */
-
-       reset_callback_info(&c);
-
-       g_debug("pause...");
-       mafw_renderer_pause(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "pausing", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Paused, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_pause", "Paused", s.state);
-       }
-
-       /* --- Resume --- */
-
-       reset_callback_info(&c);
-
-       g_debug("resume...");
-       mafw_renderer_resume(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "resuming", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_resume", "Playing", s.state);
-       }
-
-       /* --- Stop --- */
-
-       reset_callback_info(&c);
-
-       g_debug("stop...");
-       mafw_renderer_stop(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "stopping", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Stopped, wait_tout_val) == FALSE) {
-               fail(state_err_msg,"mafw_renderer_stop", "Stopped", s.state);
-       }
-       
-}
-END_TEST
-
-START_TEST(test_playlist_playback)
-{
-       MafwPlaylist *playlist = NULL;
-       gint i = 0;
-       RendererInfo s = {0, };
-       CallbackInfo c = {0, };
-       gchar *cur_item_oid = NULL;
-       
-       /* Initialize callback info */
-       c.err_msg = NULL;
-       c.error_signal_expected = FALSE;
-       c.error_signal_received = NULL;
-       c.property_expected = NULL;
-       c.property_received = NULL;
-
-       /* Connect to renderer signals */
-       g_signal_connect(g_gst_renderer, "error",
-                        G_CALLBACK(error_cb),
-                        &c);
-
-       g_signal_connect(g_gst_renderer, "state-changed",
-                        G_CALLBACK(state_changed_cb),
-                        &s);
-       g_signal_connect(g_gst_renderer, "media-changed",
-                        G_CALLBACK(media_changed_cb),
-                        &s);
-       g_signal_connect(g_gst_renderer, "playlist-changed",
-                        G_CALLBACK(playlist_changed_cb),
-                        NULL);
-
-       /* --- Create and assign a playlist --- */
-
-       g_debug("assign playlist...");
-       playlist = MAFW_PLAYLIST(mafw_mock_playlist_new());
-       cur_item_oid =
-               get_sample_clip_objectid(SAMPLE_AUDIO_CLIP);
-       for (i=0; i<10; i++) {
-               mafw_playlist_insert_item(
-                       playlist, i, cur_item_oid, NULL);
-       }
-       g_free(cur_item_oid);
-       cur_item_oid =  get_sample_clip_objectid("unexisting.wav");
-       mafw_playlist_insert_item(playlist, 9, cur_item_oid, NULL);
-       g_free(cur_item_oid);
-
-       media_changed_called = FALSE;
-       if (!mafw_renderer_assign_playlist(g_gst_renderer, playlist, NULL))
-       {
-               fail("Assign playlist failed");
-       }
-
-       wait_for_state(&s, Stopped, wait_tout_val);
-
-       /* --- Play --- */
-
-       reset_callback_info(&c);
-
-       g_debug("play...");
-       mafw_renderer_play(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "playing", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play", "Playing", s.state);
-       }
-
-       /* --- Stop --- */
-
-       reset_callback_info(&c);
-
-       g_debug("stop...");
-       mafw_renderer_stop(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "stopping", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Stopped, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_stop", "Stopped", s.state);
-       }
-
-       /* --- Next --- */
-
-       /* Get actual index */
-
-       gint initial_index = s.index;
-
-       for (i=0; i<3; i++) {
-
-               reset_callback_info(&c);
-
-               g_debug("move to next...");
-               mafw_renderer_next(g_gst_renderer, playback_cb, &c);
-
-               if (wait_for_callback(&c, wait_tout_val)) {
-                       if (c.error)
-                               fail(callback_err_msg, "moving to next", c.err_code,
-                                    c.err_msg);
-               } else {
-                       fail(no_callback_msg);
-               }
-       
-               /* Check if the playlist index is correct */
-               fail_if(s.index != initial_index + (i+1), index_err_msg, s.index,
-                       initial_index + (i+1));                 
-       }
-
-
-       /* --- Prev --- */
-
-       /* Get actual index */
-       initial_index = s.index;
-
-       for (i=0; i<3; i++) {
-
-               reset_callback_info(&c);
-
-               g_debug("move to prev...");
-               mafw_renderer_previous(g_gst_renderer, playback_cb, &c);
-
-               if (wait_for_callback(&c, wait_tout_val)) {
-                       if (c.error)
-                               fail(callback_err_msg, "moving to prev", c.err_code,
-                                    c.err_msg);
-               } else {
-                       fail(no_callback_msg);
-               }               
-
-               /* Check if the playlist index is correct */
-               fail_if(s.index != initial_index - (i+1), index_err_msg, s.index,
-                       initial_index - (i+1));                 
-       }
-
-       /* Check if renderer remains in Stopped state after some Prev operations */
-       fail_if(s.state != Stopped, "Gst renderer didn't remain in Stopped state "
-               "after doing prev. The actual state is %s and must be %s",
-               s.state, "Stopped");
-
-       /* --- Stop --- */
-
-       reset_callback_info(&c);
-
-       g_debug("stop...");
-       mafw_renderer_stop(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "stopping playback",
-                            c.err_code, c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-       
-       if (wait_for_state(&s, Stopped, wait_tout_val) == FALSE) {
-               fail(state_err_msg,"mafw_renderer_stop","Stopped", s.state);
-       }
-
-       /* --- Go to index in Stopped state --- */
-
-       reset_callback_info(&c);
-
-       g_debug("goto index 3...");
-       mafw_renderer_goto_index(g_gst_renderer, 3, playback_cb, &c);
-               
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "going to index 3", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-       
-       /* Check if the playlist index is correct */
-       fail_if(s.index != 3, index_err_msg, s.index, 3);
-
-       /* Check if renderer remains in Stopped state after running go to index */
-       fail_if(s.state != Stopped, "Gst renderer didn't remain in Stopped state "
-               "after running go to index. The actual state is %s and must be"
-               " %s", s.state, "Stopped");
-
-       /* --- Play (playlist index is 3) --- */
-
-       reset_callback_info(&c);
-
-       g_debug("play...");
-       mafw_renderer_play(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "playing", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play", "Transitioning", s.state);
-       }
-
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play", "Playing", s.state);
-       }
-       
-       /* --- Goto index in Playing state --- */
-
-       reset_callback_info(&c);
-
-       g_debug("goto index 5...");
-       mafw_renderer_goto_index(g_gst_renderer, 5, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "going to index", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_goto_index", "Playing", s.state);
-       }
-
-       /* Check if the index if correct */
-       fail_if(s.index != 5, index_err_msg, s.index, 5);
-
-       /* Check if renderer remains in Playing state after running go to index */
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail("Gst renderer didn't remain in Playing state after running "
-                    "go to index. The actual state is %s and must be %s",
-                    s.state, "Playing");
-       }
-
-       /* --- Goto an invalid index --- */
-
-       reset_callback_info(&c);
-
-       g_debug("goto the invalid index 20...");
-       mafw_renderer_goto_index(g_gst_renderer, 20, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error == FALSE)
-                       fail("Error not received when we go to an incorrect" 
-                            "index");
-       } else {
-               fail(no_callback_msg);
-       }
-
-       /* Check if the previous index (5) remains after an incorrect go to
-          index request */
-       fail_if(s.index != 5, index_err_msg, 5, s.index);
-       
-       reset_callback_info(&c);
-
-       /* --- Reassigning playlist --- */
-
-       media_changed_called = FALSE;
-       if (!mafw_renderer_assign_playlist(g_gst_renderer,
-                                          g_object_ref(playlist), NULL))
-       {
-               fail("Assign playlist failed");
-       }
-
-       wait_for_state(&s, Stopped, wait_tout_val);
-
-       /* --- Go to index with invalid media --- */
-
-       reset_callback_info(&c);
-
-       g_debug("goto index 9...");
-       mafw_renderer_goto_index(g_gst_renderer, 9, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "going to index 9", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       /* Check if the playlist index is correct */
-       fail_if(s.index != 9, index_err_msg, s.index, 9);
-
-       /* Check if renderer remains in Stopped state after running go
-        * to index */
-       fail_if(s.state != Stopped, "Gst renderer didn't remain in Stopped "
-               "state after running go to index. The actual state is %d and "
-               "must be %s", s.state, "Stopped");
-
-       /* --- Play (playlist index is 9) --- */
-
-       reset_callback_info(&c);
-
-       c.error_signal_expected = TRUE;
-
-       g_debug("play...");
-       mafw_renderer_play(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "playing", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play", "Transitioning",
-                    s.state);
-       }
-
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play", "Playing", s.state);
-       }
-
-       fail_if(c.error_signal_received == NULL ||
-               !g_error_matches(c.error_signal_received, MAFW_RENDERER_ERROR,
-                                MAFW_RENDERER_ERROR_INVALID_URI),
-               "No error received or incorrect one");
-
-       if (c.error_signal_received != NULL) {
-               g_error_free(c.error_signal_received);
-               c.error_signal_received = NULL;
-       }
-       c.error_signal_expected = FALSE;
-
-       /* --- Stop --- */
-
-       reset_callback_info(&c);
-
-       g_debug("stop...");
-       mafw_renderer_stop(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "stopping playback",
-                            c.err_code, c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Stopped, wait_tout_val) == FALSE) {
-               fail(state_err_msg,"mafw_renderer_stop","Stopped", s.state);
-       }
-
-       /* --- Remove last media --- */
-
-       mafw_playlist_remove_item(playlist, 10, NULL);
-
-       /* --- Go to index with invalid media --- */
-
-       reset_callback_info(&c);
-
-       g_debug("goto index 9...");
-       mafw_renderer_goto_index(g_gst_renderer, 9, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "going to index 9", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       /* Check if the playlist index is correct */
-       fail_if(s.index != 9, index_err_msg, s.index, 9);
-
-       /* Check if renderer remains in Stopped state after running go
-        * to index */
-       fail_if(s.state != Stopped, "Gst renderer didn't remain in Stopped "
-               "state after running go to index. The actual state is %d and "
-               "must be %s", s.state, "Stopped");
-
-       /* --- Play (playlist index is 9) --- */
-
-       reset_callback_info(&c);
-
-       c.error_signal_expected = TRUE;
-
-       g_debug("play...");
-       mafw_renderer_play(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "playing", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play", "Transitioning",
-                    s.state);
-       }
-
-       if (wait_for_state(&s, Stopped, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play", "Stopped", s.state);
-       }
-
-       fail_if(c.error_signal_received == NULL ||
-               !g_error_matches(c.error_signal_received, MAFW_RENDERER_ERROR,
-                                MAFW_RENDERER_ERROR_INVALID_URI),
-               "No error received or incorrect one");
-
-       if (c.error_signal_received != NULL) {
-               g_error_free(c.error_signal_received);
-               c.error_signal_received = NULL;
-       }
-       c.error_signal_expected = FALSE;
-
-       /* --- Play incorrect object --- */
-
-       reset_callback_info(&c);
-
-       c.error_signal_expected = TRUE;
-
-       gchar *objectid = get_sample_clip_objectid("unexisting.wav");
-       g_debug("play_object... %s", objectid);
-       mafw_renderer_play_object(g_gst_renderer, objectid, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "playing an object", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object",
-                    "Transitioning",
-                    s.state);
-       }
-
-       if (wait_for_state(&s, Stopped, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object", "Stopped",
-                    s.state);
-       }
-
-       fail_if(c.error_signal_received == NULL ||
-               !g_error_matches(c.error_signal_received, MAFW_RENDERER_ERROR,
-                                MAFW_RENDERER_ERROR_INVALID_URI),
-               "No error received or incorrect one");
-
-       if (c.error_signal_received != NULL) {
-               g_error_free(c.error_signal_received);
-               c.error_signal_received = NULL;
-       }
-       c.error_signal_expected = FALSE;
-
-       g_free(objectid);
-
-}
-END_TEST
-
-
-START_TEST(test_repeat_mode_playback)
-{
-       MafwPlaylist *playlist = NULL;
-       gint i = 0;
-       RendererInfo s = {0, };;
-       CallbackInfo c = {0, };;
-
-       /* Initialize callback info */
-       c.err_msg = NULL;
-       c.error_signal_expected = FALSE;
-       c.error_signal_received = NULL;
-       c.property_expected = NULL;
-       c.property_received = NULL;
-
-       /* Connect to renderer signals */
-
-       g_signal_connect(g_gst_renderer, "error",
-                        G_CALLBACK(error_cb),
-                        &c);
-       g_signal_connect(g_gst_renderer, "state-changed",
-                        G_CALLBACK(state_changed_cb),
-                        &s);
-       g_signal_connect(g_gst_renderer, "media-changed",
-                        G_CALLBACK(media_changed_cb),
-                        &s);
-       g_signal_connect(g_gst_renderer, "playlist-changed",
-                        G_CALLBACK(playlist_changed_cb),
-                        NULL);
-
-       /* --- Create playlist --- */
-
-       playlist = MAFW_PLAYLIST(mafw_mock_playlist_new());
-       for (i=0; i<10; i++) {
-               gchar *cur_item_oid =
-                       get_sample_clip_objectid(SAMPLE_AUDIO_CLIP);
-               mafw_playlist_insert_item(
-                       playlist, i, cur_item_oid, NULL);
-               g_free(cur_item_oid);
-       }
-        
-        /* Set repeat mode */
-       mafw_playlist_set_repeat(playlist, TRUE);
-
-       /* --- Assign playlist --- */   
-
-       g_debug("assign playlist...");
-       media_changed_called = FALSE;
-       if (!mafw_renderer_assign_playlist(g_gst_renderer, playlist, NULL))
-       {
-               fail("Assign playlist failed");
-       }
-
-       wait_for_state(&s, Stopped, wait_tout_val);
-
-       /* --- Play --- */
-
-       reset_callback_info(&c);
-
-       g_debug("play...");
-       mafw_renderer_play(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "playing", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play", "Transitioning", s.state);
-       }
-
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play", "Playing", s.state);
-       }
-
-       /* --- Go to index --- */
-
-       reset_callback_info(&c);
-
-       g_debug("goto index 9...");
-       /* go to the end of the playlist */
-       mafw_renderer_goto_index(g_gst_renderer, 9, playback_cb, &c);
-       
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "going to index 9", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-       
-       /* check if the movement was successful */
-       fail_if(s.index != 9, index_err_msg, 9, s.index);
-       
-       /* ---  Stop --- */
-
-       reset_callback_info(&c);
-
-       g_debug("stop...");
-       mafw_renderer_stop(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "stopping playback", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Stopped, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_stop", "Stopped", s.state);
-       }
-       /* --- Next --- */
-
-       reset_callback_info(&c);
-
-       g_debug("next...");
-       /* The actual index is 9 */
-       mafw_renderer_next(g_gst_renderer, playback_cb, &c);
-
-               if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "moving to next", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       /* check if the movement was successful */
-       fail_if(s.index != 0, index_err_msg, s.index, 0);
-
-       /* Check if renderer remains in Stopped state after moving to next */
-       fail_if(s.state != Stopped, "Gst renderer didn't remain in Stopped state "
-               "after doing next. The actual state is %s and must be %s",
-               s.state, "Stopped");
-
-       /* --- Prev --- */
-
-       reset_callback_info(&c);
-
-       g_debug("prev...");
-       /* The actual index is 0 */
-       mafw_renderer_previous(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "moving to prev", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       /* check if the movement was successful */
-       fail_if(s.index != 9, index_err_msg, s.index, 9);
-
-       /* Check if renderer remains in Stopped state after moving to next */
-       fail_if(s.state != Stopped, "Gst renderer didn't remain in Stopped state "
-               "after doing next. The actual state is %s and must be %s",
-               s.state, "Stopped");
-}
-END_TEST
-
-
-START_TEST(test_gst_renderer_mode)
-{
-       MafwPlaylist *playlist = NULL;
-       MafwGstRenderer *renderer = NULL;
-       MafwGstRendererPlaybackMode play_mode;
-       gchar *objectid = NULL;
-       gint i = 0;
-       RendererInfo s = {0, };;
-       CallbackInfo c = {0, };;
-       gchar *modes[] = {"MAFW_GST_RENDERER_MODE_PLAYLIST",
-                         "MAFW_GST_RENDERER_MODE_STANDALONE"};
-
-       renderer = MAFW_GST_RENDERER(g_gst_renderer);
-
-       /* Initiliaze callback info */
-       c.err_msg = NULL;
-       c.error_signal_expected = FALSE;
-       c.error_signal_received = NULL;
-       c.property_expected = NULL;
-       c.property_received = NULL;
-
-       /* Connect to renderer signals */
-
-       g_signal_connect(g_gst_renderer, "error",
-                        G_CALLBACK(error_cb),
-                        &c);
-       g_signal_connect(g_gst_renderer, "state-changed",
-                        G_CALLBACK(state_changed_cb),
-                        &s);
-       g_signal_connect(g_gst_renderer, "media-changed",
-                        G_CALLBACK(media_changed_cb),
-                        &s);
-       g_signal_connect(g_gst_renderer, "playlist-changed",
-                        G_CALLBACK(playlist_changed_cb),
-                        NULL);
-
-       /* --- Create playlist --- */
-
-       playlist = MAFW_PLAYLIST(mafw_mock_playlist_new());
-       for (i=0; i<10; i++) {
-               gchar *cur_item_oid =
-                       get_sample_clip_objectid(SAMPLE_AUDIO_CLIP);
-               mafw_playlist_insert_item(
-                       playlist, i, cur_item_oid, NULL);
-               g_free(cur_item_oid);
-       }
-
-       /* --- Assign playlist --- */   
-
-       g_debug("assign playlist...");
-       media_changed_called = FALSE;
-       if (!mafw_renderer_assign_playlist(g_gst_renderer, playlist, NULL))
-       {
-               fail("Assign playlist failed");
-       }
-
-       wait_for_state(&s, Stopped, wait_tout_val);
-
-       /* --- Play --- */
-
-       reset_callback_info(&c);
-
-       g_debug("play...");
-
-       mafw_renderer_play(g_gst_renderer, playback_cb, &c);
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "playing", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play", "Transitioning", s.state);
-       }
-
-       /* Check that renderer is playing a playlist */
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play", "Playing", s.state);
-       }
-       play_mode =  mafw_gst_renderer_get_playback_mode(renderer);
-       fail_if(play_mode != MAFW_GST_RENDERER_MODE_PLAYLIST,
-               "Incorrect value of playback_mode: %s", modes[play_mode]);
-
-       /* --- Play object --- */
-
-       reset_callback_info(&c);
-
-       objectid = get_sample_clip_objectid(SAMPLE_AUDIO_CLIP);
-       g_debug("play_object... %s",objectid);
-       mafw_renderer_play_object(g_gst_renderer, objectid, playback_cb, &c);
-       g_free(objectid);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "playing an object", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object", "Transitioning",
-                    s.state);
-       }
-
-       /* Check that renderer is playing an object */          
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object", "Playing",
-                    s.state);
-       }
-
-       play_mode =  mafw_gst_renderer_get_playback_mode(renderer);
-       fail_if(play_mode != MAFW_GST_RENDERER_MODE_STANDALONE,
-               "Incorrect value of playback_mode: %s", modes[play_mode]);
-
-       /* Wait EOS_TIMEOUT to ensure that the play_object has finished */
-       wait_until_timeout_finishes(EOS_TIMEOUT);
-
-       /* Check that after playing the object, renderer returns to the playlist
-        playback */
-       play_mode =  mafw_gst_renderer_get_playback_mode(renderer);
-       fail_if(play_mode != MAFW_GST_RENDERER_MODE_PLAYLIST,
-               "Incorrect value of playback_mode: %s", modes[play_mode]);
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object", "Playing",
-                    s.state);
-       }
-
-       /* --- Play object --- */
-
-       reset_callback_info(&c);
-
-       objectid = get_sample_clip_objectid(SAMPLE_AUDIO_CLIP);
-       g_debug("play_object... %s", objectid);
-       mafw_renderer_play_object(g_gst_renderer, objectid, playback_cb, &c);
-       g_free(objectid);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "playing an object", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object", "Transitioning",
-                    s.state);
-       }
-               
-       /* Check that renderer is playing an object */
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object", "Playing",
-                    s.state);
-       }
-       play_mode =  mafw_gst_renderer_get_playback_mode(renderer);
-       fail_if(play_mode != MAFW_GST_RENDERER_MODE_STANDALONE,
-               "Incorrect value of playback_mode: %s", modes[play_mode]);
-
-
-       /* --- Move to next when renderer is playing an object --- */
-
-       reset_callback_info(&c);
-
-       g_debug("next...");
-       mafw_renderer_next(g_gst_renderer, playback_cb, &c);
-
-               if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "moving to next", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       /* Check that "next" function finishes the object playback and returns
-          to the playlist playback */
-       play_mode =  mafw_gst_renderer_get_playback_mode(renderer);
-       fail_if(play_mode != MAFW_GST_RENDERER_MODE_PLAYLIST,
-               "Incorrect value of playback_mode: %s", modes[play_mode]);
-
-       /* Check that renderer is still in Playing state */
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object", "Playing",
-                    s.state);
-       }
-
-       /* --- Stop --- */
-
-       reset_callback_info(&c);
-
-       g_debug("stop...");
-       mafw_renderer_stop(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "stopping", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Stopped, wait_tout_val) == FALSE) {
-               fail(state_err_msg,"mafw_renderer_stop", "Stopped", s.state);
-       }
-
-       /* --- Play object --- */
-
-       reset_callback_info(&c);
-
-       objectid = get_sample_clip_objectid(SAMPLE_AUDIO_CLIP);
-       g_debug("play_object... %s", objectid);
-       mafw_renderer_play_object(g_gst_renderer, objectid, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "playing an object", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object", "Transitioning",
-                    s.state);
-       }
-
-       /* Check that renderer is playing an object */        
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object", "Playing",
-                    s.state);
-       }
-       play_mode =  mafw_gst_renderer_get_playback_mode(renderer);
-       fail_if(play_mode != MAFW_GST_RENDERER_MODE_STANDALONE,
-               "Incorrect value of playback_mode: %s", modes[play_mode]);
-       
-       /* Wait EOS_TIMEOUT to ensure that object playback finishes */
-       wait_until_timeout_finishes(EOS_TIMEOUT);
-
-       /* Check if renderer is in playlist mode and the renderer state is the state before
-          playing the object */
-       if (wait_for_state(&s, Stopped, wait_tout_val) == FALSE) {
-               fail(state_err_msg,"mafw_renderer_stop", "Stopped", s.state);
-       }
-       play_mode =  mafw_gst_renderer_get_playback_mode(renderer);
-       fail_if(play_mode != MAFW_GST_RENDERER_MODE_PLAYLIST,
-               "Incorrect value of playback_mode: %s", modes[play_mode]);
-
-       g_free(objectid);
-}
-END_TEST
-
-#define MOCK_SOURCE(o)                                                 \
-       (G_TYPE_CHECK_INSTANCE_CAST((o),                                \
-                                   mock_source_get_type(),             \
-                                   MockSource))
-
-typedef struct {
-       MafwSourceClass parent;
-} MockSourceClass;
-
-typedef struct {
-       MafwSource parent;
-
-
-} MockSource;
-
-GType mock_source_get_type(void);
-GObject* mock_source_new(void);
-
-G_DEFINE_TYPE(MockSource, mock_source, MAFW_TYPE_SOURCE);
-
-static GHashTable *get_md_ht;          /* Metadata hash-table for the metadata result */
-static GError *get_md_err;             /* Error value for the metadata result */
-static gboolean set_mdata_called;      /* Whether set_metadata was called or not */
-static gboolean get_mdata_called;      /* Whether get_metadata was called or not */
-static gint reference_pcount;          /* Reference playcount, what should come in set_metadata */
-static gboolean set_for_playcount;     /* TRUE, when the set_metadata is called to modify the playcount */
-static gboolean set_for_lastplayed;    /* TRUE, when the set_metadata is called to modify the last-played */
-
-static void get_metadata(MafwSource *self,
-                            const gchar *object_id,
-                            const gchar *const *metadata,
-                            MafwSourceMetadataResultCb callback,
-                            gpointer user_data)
-{
-       get_mdata_called = TRUE;
-       fail_if(strcmp(object_id, "mocksource::test"));
-       callback(self, object_id, get_md_ht, user_data, get_md_err);
-}
-
-static void set_metadata(MafwSource *self, const gchar *object_id,
-                            GHashTable *metadata,
-                            MafwSourceMetadataSetCb callback,
-                            gpointer user_data)
-{
-       GValue *curval;
-       gint htsize = 0;
-
-       if (set_for_playcount)
-               htsize++;
-       if (set_for_lastplayed)
-               htsize++;
-       fail_if(strcmp(object_id, "mocksource::test"));
-       fail_if(!metadata);
-       fail_if(g_hash_table_size(metadata) != htsize, "Hash table size: %d vs %d", g_hash_table_size(metadata), htsize);
-       if (set_for_playcount)
-       {
-               curval = mafw_metadata_first(metadata,
-                               MAFW_METADATA_KEY_PLAY_COUNT);
-               fail_if(!curval);
-               fail_if(g_value_get_int(curval) != reference_pcount);
-       }
-       if (set_for_lastplayed)
-       {
-               curval = mafw_metadata_first(metadata,
-                               MAFW_METADATA_KEY_LAST_PLAYED);
-               fail_if(!curval);
-               fail_if(!G_VALUE_HOLDS(curval, G_TYPE_LONG));
-       }
-       set_mdata_called = TRUE;
-}
-
-static void mock_source_class_init(MockSourceClass *klass)
-{
-       MafwSourceClass *sclass = MAFW_SOURCE_CLASS(klass);
-
-       sclass->get_metadata = get_metadata;
-       sclass->set_metadata = set_metadata;
-
-}
-
-static void mock_source_init(MockSource *source)
-{
-       /* NOP */
-}
-
-GObject* mock_source_new(void)
-{
-       GObject* object;
-       object = g_object_new(mock_source_get_type(),
-                             "plugin", "mockland",
-                             "uuid", "mocksource",
-                             "name", "mocksource",
-                             NULL);
-       return object;
-}
-
-
-START_TEST(test_update_stats)
-{
-       MafwGstRenderer *renderer = NULL;
-       MafwSource *src;
-       MafwRegistry *registry;
-
-       registry = MAFW_REGISTRY(mafw_registry_get_instance());
-       fail_if(registry == NULL,
-               "Error: cannot get MAFW registry");
-               
-
-       renderer = MAFW_GST_RENDERER(g_gst_renderer);
-       src = MAFW_SOURCE(mock_source_new());
-       
-       mafw_registry_add_extension(registry, MAFW_EXTENSION(src));
-
-       /* Error on get_mdata_cb*/
-       set_for_playcount = FALSE;
-       set_for_lastplayed = FALSE;
-        get_md_err = NULL;
-       g_set_error(&get_md_err, MAFW_SOURCE_ERROR,
-                    MAFW_SOURCE_ERROR_INVALID_OBJECT_ID,
-                    "Wrong object id mocksource::test");
-       renderer->media->object_id = g_strdup("mocksource::test");
-       mafw_gst_renderer_update_stats(renderer);
-        g_error_free(get_md_err);
-       fail_if(set_mdata_called);
-       fail_if(!get_mdata_called);
-
-       /* get_mdata ok, but HashTable is NULL */
-       reference_pcount = 1;
-       get_mdata_called = FALSE;
-       set_for_lastplayed = TRUE;
-       set_for_playcount = TRUE;
-       get_md_err = NULL;
-       mafw_gst_renderer_update_stats(renderer);
-       fail_if(!set_mdata_called);
-       fail_if(!get_mdata_called);
-       
-       /* get_mdata ok, but HashTable is empty */
-       get_mdata_called = FALSE;
-       set_mdata_called = FALSE;
-       set_for_lastplayed = TRUE;
-       set_for_playcount = TRUE;
-       get_md_ht = mafw_metadata_new();
-       mafw_gst_renderer_update_stats(renderer);
-       fail_if(!set_mdata_called);
-       fail_if(!get_mdata_called);
-       
-       /* get_mdata ok, but HashTable has valid value */
-       get_mdata_called = FALSE;
-       set_mdata_called = FALSE;
-       set_for_lastplayed = TRUE;
-       set_for_playcount = TRUE;
-       mafw_metadata_add_int(get_md_ht,
-                                               MAFW_METADATA_KEY_PLAY_COUNT,
-                                               1);
-       reference_pcount = 2;
-       mafw_gst_renderer_update_stats(renderer);
-       fail_if(!set_mdata_called);
-       fail_if(!get_mdata_called);
-}
-END_TEST
-
-START_TEST(test_play_state)
-{
-       MafwPlaylist *playlist = NULL;
-       gint i = 0;
-       RendererInfo s = {0, };;
-       CallbackInfo c = {0, };;
-       gchar *objectid = NULL;
-
-       /* Initialize callback info */
-       c.err_msg = NULL;
-       c.error_signal_expected = FALSE;
-       c.error_signal_received = NULL;
-       c.property_expected = NULL;
-       c.property_received = NULL;
-
-       /* Connect to renderer signals */
-       g_signal_connect(g_gst_renderer, "error",
-                        G_CALLBACK(error_cb),
-                        &c);
-
-       g_signal_connect(g_gst_renderer, "state-changed",
-                        G_CALLBACK(state_changed_cb),
-                        &s);
-       g_signal_connect(g_gst_renderer, "media-changed",
-                        G_CALLBACK(media_changed_cb),
-                        &s);
-       g_signal_connect(g_gst_renderer, "playlist-changed",
-                        G_CALLBACK(playlist_changed_cb),
-                        NULL);
-
-       /* --- Get initial status --- */
-
-       reset_callback_info(&c);
-
-       g_debug("get status...");
-       mafw_renderer_get_status(g_gst_renderer, status_cb, &s);
-
-       /* --- Play object --- */
-
-       reset_callback_info(&c);
-
-       objectid = get_sample_clip_objectid(SAMPLE_AUDIO_CLIP);
-       g_debug("play_object... %s", objectid);
-       mafw_renderer_play_object(g_gst_renderer, objectid, playback_cb,
-                                  &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "playing an object", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object",
-                    "Transitioning", s.state);
-       }
-
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object", "Playing",
-                    s.state);
-       }
-
-       if (wait_for_state(&s, Stopped, 3000) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object", "Stop",
-                    s.state);
-       }
-
-       g_free(objectid);
-
-
-       /* --- Create and assign a playlist --- */
-
-       g_debug("assign playlist...");
-       playlist = MAFW_PLAYLIST(mafw_mock_playlist_new());
-       for (i=0; i<10; i++) {
-               gchar *cur_item_oid =
-                       get_sample_clip_objectid(SAMPLE_AUDIO_CLIP);
-               mafw_playlist_insert_item(
-                       playlist, i, cur_item_oid, NULL);
-               g_free(cur_item_oid);
-       }
-       mafw_playlist_set_repeat(playlist, FALSE);
-
-       media_changed_called = FALSE;
-       if (!mafw_renderer_assign_playlist(g_gst_renderer, playlist,
-                                           NULL))
-       {
-               fail("Assign playlist failed");
-       }
-
-       wait_for_state(&s, Stopped, wait_tout_val);
-
-       /* --- Play --- */
-
-       reset_callback_info(&c);
-
-       g_debug("play...");
-       mafw_renderer_play(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail("Play after assigning playlist failed");
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play",
-                    "Transitioning", s.state);
-       }
-
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play", "Playing",
-                    s.state);
-       }
-
-       /* --- Prev --- */
-
-       reset_callback_info(&c);
-
-       g_debug("move to prev...");
-       mafw_renderer_previous(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "moving to prev", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       fail_if(s.index != 9, index_err_msg, s.index, 9);
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_prev",
-                    "Transitioning", s.state);
-       }
-
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_prev", "Playing",
-                    s.state);
-       }
-
-       /* Removing last element */
-
-       g_debug("removing last element...");
-       fail_if(mafw_playlist_get_size(playlist, NULL) != 10,
-               "Playlist should have 10 elements");
-       mafw_playlist_remove_item(playlist, 9, NULL);
-       fail_if(mafw_playlist_get_size(playlist, NULL) != 9,
-               "Playlist should have 9 elements");
-       fail_if(s.index != 8, index_err_msg, s.index, 8);
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_playlist_remove_element",
-                    "Transitioning", s.state);
-       }
-
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_playlist_remove_element", "Playing",
-                    s.state);
-       }
-
-       /* --- Next --- */
-
-       reset_callback_info(&c);
-
-       g_debug("move to next...");
-       mafw_renderer_next(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "moving to next", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       fail_if(s.index != 0, index_err_msg, s.index, 0);
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_next",
-                    "Transitioning", s.state);
-       }
-
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_next", "Playing",
-                    s.state);
-       }
-
-       /* --- Go to index --- */
-
-       reset_callback_info(&c);
-
-       g_debug("goto index 8...");
-       mafw_renderer_goto_index(g_gst_renderer, 8, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "going to index 8", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       fail_if(s.index != 8, index_err_msg, s.index, 8);
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_goto_index",
-                    "Transitioning", s.state);
-       }
-
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_goto_index", "Playing",
-                    s.state);
-       }
-
-       /* --- Seeking --- */
-
-       reset_callback_info(&c);
-
-       g_debug("seeking...");
-       mafw_renderer_set_position(g_gst_renderer, SeekAbsolute, 1,
-                                   seek_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "seeking failed", c.err_code,
-                            c.err_msg);
-               if (c.seek_position != 1) {
-                       fail("seeking failed");
-               }
-       } else {
-               fail(no_callback_msg);
-       }
-
-       /* --- Waiting EOS --- */
-
-       if (wait_for_state(&s, Stopped, 2000) == FALSE) {
-               fail(state_err_msg, "EOS", "Stop",
-                    s.state);
-       }
-}
-END_TEST
-
-START_TEST(test_pause_state)
-{
-       MafwPlaylist *playlist = NULL;
-       gint i = 0;
-       RendererInfo s = {0, };;
-       CallbackInfo c = {0, };;
-       gchar *objectid = NULL;
-
-       /* Initialize callback info */
-       c.err_msg = NULL;
-       c.error_signal_expected = FALSE;
-       c.error_signal_received = NULL;
-       c.property_expected = NULL;
-       c.property_received = NULL;
-
-       /* Connect to renderer signals */
-       g_signal_connect(g_gst_renderer, "error",
-                        G_CALLBACK(error_cb),
-                        &c);
-
-       g_signal_connect(g_gst_renderer, "state-changed",
-                        G_CALLBACK(state_changed_cb),
-                        &s);
-       g_signal_connect(g_gst_renderer, "media-changed",
-                        G_CALLBACK(media_changed_cb),
-                        &s);
-       g_signal_connect(g_gst_renderer, "playlist-changed",
-                        G_CALLBACK(playlist_changed_cb),
-                        NULL);
-
-       /* --- Get initial status --- */
-
-       reset_callback_info(&c);
-
-       g_debug("get status...");
-       mafw_renderer_get_status(g_gst_renderer, status_cb, &s);
-
-       /* --- Create and assign a playlist --- */
-
-       g_debug("assign playlist...");
-       playlist = MAFW_PLAYLIST(mafw_mock_playlist_new());
-       for (i=0; i<10; i++) {
-               gchar *cur_item_oid =
-                       get_sample_clip_objectid(SAMPLE_AUDIO_CLIP);
-               mafw_playlist_insert_item(
-                       playlist, i, cur_item_oid, NULL);
-               g_free(cur_item_oid);
-       }
-       mafw_playlist_set_repeat(playlist, FALSE);
-
-       media_changed_called = FALSE;
-       if (!mafw_renderer_assign_playlist(g_gst_renderer, playlist,
-                                           NULL))
-       {
-               fail("Assign playlist failed");
-       }
-
-       wait_for_state(&s, Stopped, wait_tout_val);
-
-       /* --- Play --- */
-
-       reset_callback_info(&c);
-
-       g_debug("play...");
-       mafw_renderer_play(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail("Play failed");
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play",
-                    "Transitioning", s.state);
-       }
-
-       /* Testing pause in transitioning */
-
-       reset_callback_info(&c);
-
-       g_debug("pause...");
-       mafw_renderer_pause(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "pausing", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       /* Testing resume in transitioning */
-
-       reset_callback_info(&c);
-
-       g_debug("resume...");
-       mafw_renderer_resume(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "resuming", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       reset_callback_info(&c);
-
-       /* Testing resume without having paused in transitioning */
-
-       reset_callback_info(&c);
-
-       g_debug("resume...");
-       mafw_renderer_resume(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (!c.error)
-                       fail(callback_no_err_msg, "resuming", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       reset_callback_info(&c);
-
-       g_debug("pause...");
-       mafw_renderer_pause(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "pausing", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Paused, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_pause", "Paused",
-                    s.state);
-       }
-
-       /* --- Play object in pause --- */
-
-       reset_callback_info(&c);
-
-       objectid = get_sample_clip_objectid(SAMPLE_AUDIO_CLIP);
-       g_debug("play_object... %s", objectid);
-       mafw_renderer_play_object(g_gst_renderer, objectid, playback_cb,
-                                  &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "playing an object", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object",
-                    "Transitioning", s.state);
-       }
-
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object", "Playing",
-                    s.state);
-       }
-
-       reset_callback_info(&c);
-
-       g_debug("pause...");
-       mafw_renderer_pause(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "pausing", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Paused, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_pause", "Paused",
-                    s.state);
-       }
-
-       g_free(objectid);
-
-       /* --- Play --- */
-
-       reset_callback_info(&c);
-
-       g_debug("play...");
-       mafw_renderer_play(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail("Play failed");
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play",
-                    "Transitioning", s.state);
-       }
-
-       reset_callback_info(&c);
-
-       g_debug("pause...");
-       mafw_renderer_pause(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "pausing", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Paused, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_pause", "Paused",
-                    s.state);
-       }
-
-       /* --- Prev --- */
-
-       reset_callback_info(&c);
-
-       g_debug("move to prev...");
-       mafw_renderer_previous(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "moving to prev", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       /* Check if the playlist index is correct */
-       fail_if(s.index != 9, index_err_msg, s.index, 9);
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_prev",
-                    "Transitioning", s.state);
-       }
-
-       reset_callback_info(&c);
-
-       g_debug("pause...");
-       mafw_renderer_pause(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "pausing", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Paused, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_prev", "Playing",
-                    s.state);
-       }
-
-       /* Removing last element */
-
-       g_debug("removing last element...");
-       fail_if(mafw_playlist_get_size(playlist, NULL) != 10,
-               "Playlist should have 10 elements");
-       mafw_playlist_remove_item(playlist, 9, NULL);
-       fail_if(mafw_playlist_get_size(playlist, NULL) != 9,
-               "Playlist should have 9 elements");
-       fail_if(s.index != 8, index_err_msg, s.index, 8);
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_playlist_remove_item",
-                    "Transitioning", s.state);
-       }
-
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_playlist_remove_item", "Playing",
-                    s.state);
-       }
-
-       reset_callback_info(&c);
-
-       g_debug("pause...");
-       mafw_renderer_pause(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "pausing", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Paused, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_playlist_remove_item", "Playing",
-                    s.state);
-       }
-
-       /* --- Next --- */
-
-       reset_callback_info(&c);
-
-       g_debug("move to next...");
-       mafw_renderer_next(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "moving to next", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       /* Check if the playlist index is correct */
-       fail_if(s.index != 0, index_err_msg, s.index, 0);
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_next",
-                    "Transitioning", s.state);
-       }
-
-       reset_callback_info(&c);
-
-       g_debug("pause...");
-       mafw_renderer_pause(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "pausing", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Paused, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_next", "Playing",
-                    s.state);
-       }
-
-       /* --- Go to index --- */
-
-       reset_callback_info(&c);
-
-       g_debug("goto index 8...");
-       mafw_renderer_goto_index(g_gst_renderer, 8, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "going to index 8", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       /* Check if the playlist index is correct */
-       fail_if(s.index != 8, index_err_msg, s.index, 8);
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_goto_index",
-                    "Transitioning", s.state);
-       }
-
-       reset_callback_info(&c);
-
-       g_debug("pause...");
-       mafw_renderer_pause(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "pausing", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Paused, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_goto_index", "Playing",
-                    s.state);
-       }
-
-       /* --- Seeking --- */
-
-       reset_callback_info(&c);
-
-       mafw_renderer_set_position(g_gst_renderer, SeekAbsolute, 1,
-                                   seek_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "seeking", c.err_code,
-                            c.err_msg);
-               if (c.seek_position != 1) {
-                       fail("seeking failed");
-               }
-       } else {
-               fail(no_callback_msg);
-       }
-
-       /* --- Stop --- */
-
-       reset_callback_info(&c);
-
-       g_debug("stop...");
-       mafw_renderer_stop(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "stopping", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Stopped, wait_tout_val) == FALSE) {
-               fail(state_err_msg,"mafw_renderer_stop", "Stopped", s.state);
-       }
-}
-END_TEST
-
-START_TEST(test_stop_state)
-{
-       MafwPlaylist *playlist = NULL;
-       gint i = 0;
-       RendererInfo s = {0, };;
-       CallbackInfo c = {0, };;
-
-       /* Initialize callback info */
-       c.err_msg = NULL;
-       c.error_signal_expected = FALSE;
-       c.error_signal_received = NULL;
-       c.property_expected = NULL;
-       c.property_received = NULL;
-
-       /* Connect to renderer signals */
-       g_signal_connect(g_gst_renderer, "error",
-                        G_CALLBACK(error_cb),
-                        &c);
-
-       g_signal_connect(g_gst_renderer, "state-changed",
-                        G_CALLBACK(state_changed_cb),
-                        &s);
-       g_signal_connect(g_gst_renderer, "media-changed",
-                        G_CALLBACK(media_changed_cb),
-                        &s);
-       g_signal_connect(g_gst_renderer, "playlist-changed",
-                        G_CALLBACK(playlist_changed_cb),
-                        NULL);
-
-       /* --- Get initial status --- */
-
-       reset_callback_info(&c);
-
-       g_debug("get status...");
-       mafw_renderer_get_status(g_gst_renderer, status_cb, &s);
-
-       /* --- Prev --- */
-
-       reset_callback_info(&c);
-
-       g_debug("move to prev...");
-       mafw_renderer_previous(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (!c.error)
-                       fail(callback_no_err_msg, "moving to prev", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       /* --- Next --- */
-
-       reset_callback_info(&c);
-
-       g_debug("move to next...");
-       mafw_renderer_next(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (!c.error)
-                       fail(callback_no_err_msg, "moving to next", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       /* --- Go to index --- */
-
-       reset_callback_info(&c);
-
-       g_debug("goto index 8...");
-       mafw_renderer_goto_index(g_gst_renderer, 8, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (!c.error)
-                       fail(callback_no_err_msg, "going to index 8",
-                            c.err_code, c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       /* --- Create and assign a playlist --- */
-
-       g_debug("assign playlist...");
-       playlist = MAFW_PLAYLIST(mafw_mock_playlist_new());
-       for (i=0; i<10; i++) {
-               gchar *cur_item_oid =
-                       get_sample_clip_objectid(SAMPLE_AUDIO_CLIP);
-               mafw_playlist_insert_item(
-                       playlist, i, cur_item_oid, NULL);
-               g_free(cur_item_oid);
-       }
-       mafw_playlist_set_repeat(playlist, FALSE);
-
-       media_changed_called = FALSE;
-       if (!mafw_renderer_assign_playlist(g_gst_renderer, playlist,
-                                           NULL))
-       {
-               fail("Assign playlist failed");
-       }
-
-       wait_for_state(&s, Stopped, wait_tout_val);
-
-       /* Removing last element */
-
-       g_debug("removing last element...");
-       fail_if(mafw_playlist_get_size(playlist, NULL) != 10,
-               "Playlist should have 10 elements");
-       mafw_playlist_remove_item(playlist, 9, NULL);
-       fail_if(mafw_playlist_get_size(playlist, NULL) != 9,
-               "Playlist should have 9 elements");
-
-       /* --- Go to index --- */
-
-       reset_callback_info(&c);
-
-       g_debug("goto index 9...");
-       mafw_renderer_goto_index(g_gst_renderer, 9, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (!c.error)
-                       fail(callback_no_err_msg, "going to index 9",
-                            c.err_code, c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-       reset_callback_info(&c);
-}
-END_TEST
-
-START_TEST(test_transitioning_state)
-{
-       MafwPlaylist *playlist = NULL;
-       gint i = 0;
-       RendererInfo s = {0, };;
-       CallbackInfo c = {0, };;
-       gchar *objectid = NULL;
-
-       /* Initialize callback info */
-       c.err_msg = NULL;
-       c.error_signal_expected = FALSE;
-       c.error_signal_received = NULL;
-       c.property_expected = NULL;
-       c.property_received = NULL;
-
-       /* Connect to renderer signals */
-       g_signal_connect(g_gst_renderer, "error",
-                        G_CALLBACK(error_cb),
-                        &c);
-
-       g_signal_connect(g_gst_renderer, "state-changed",
-                        G_CALLBACK(state_changed_cb),
-                        &s);
-       g_signal_connect(g_gst_renderer, "media-changed",
-                        G_CALLBACK(media_changed_cb),
-                        &s);
-       g_signal_connect(g_gst_renderer, "playlist-changed",
-                        G_CALLBACK(playlist_changed_cb),
-                        NULL);
-
-       /* --- Get initial status --- */
-
-       reset_callback_info(&c);
-
-       g_debug("get status...");
-       mafw_renderer_get_status(g_gst_renderer, status_cb, &s);
-
-       /* --- Create and assign a playlist --- */
-
-       g_debug("assign playlist...");
-       playlist = MAFW_PLAYLIST(mafw_mock_playlist_new());
-       for (i=0; i<10; i++) {
-               gchar *cur_item_oid =
-                       get_sample_clip_objectid(SAMPLE_AUDIO_CLIP);
-               mafw_playlist_insert_item(
-                       playlist, i, cur_item_oid, NULL);
-               g_free(cur_item_oid);
-       }
-       mafw_playlist_set_repeat(playlist, FALSE);
-
-       media_changed_called = FALSE;
-       if (!mafw_renderer_assign_playlist(g_gst_renderer, playlist,
-                                           NULL))
-       {
-               fail("Assign playlist failed");
-       }
-
-       wait_for_state(&s, Stopped, wait_tout_val);
-
-       /* --- Play --- */
-
-       reset_callback_info(&c);
-
-       g_debug("play...");
-       mafw_renderer_play(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail("Play after assigning playlist failed");
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play",
-                    "Transitioning", s.state);
-       }
-
-       /* --- Play object --- */
-
-       reset_callback_info(&c);
-
-       objectid = get_sample_clip_objectid(SAMPLE_AUDIO_CLIP);
-       g_debug("play_object... %s", objectid);
-       mafw_renderer_play_object(g_gst_renderer, objectid, playback_cb,
-                                  &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "playing an object", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object",
-                    "Transitioning", s.state);
-       }
-
-       g_free(objectid);
-
-
-       /* --- Prev --- */
-
-       reset_callback_info(&c);
-
-       g_debug("move to prev...");
-       mafw_renderer_previous(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "moving to prev", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       fail_if(s.index != 9, index_err_msg, s.index, 9);
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_prev",
-                    "Transitioning", s.state);
-       }
-
-       /* Removing last element */
-
-       g_debug("removing last element...");
-       fail_if(mafw_playlist_get_size(playlist, NULL) != 10,
-               "Playlist should have 10 elements");
-       mafw_playlist_remove_item(playlist, 9, NULL);
-       fail_if(mafw_playlist_get_size(playlist, NULL) != 9,
-               "Playlist should have 9 elements");
-       fail_if(s.index != 8, index_err_msg, s.index, 8);
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_playlist_remove_element",
-                    "Transitioning", s.state);
-       }
-
-       /* --- Next --- */
-
-       reset_callback_info(&c);
-
-       g_debug("move to next...");
-       mafw_renderer_next(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "moving to next", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       fail_if(s.index != 0, index_err_msg, s.index, 0);
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_next",
-                    "Transitioning", s.state);
-       }
-
-       /* --- Go to index --- */
-
-       reset_callback_info(&c);
-
-       g_debug("goto index 8...");
-       mafw_renderer_goto_index(g_gst_renderer, 8, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "going to index 8", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       fail_if(s.index != 8, index_err_msg, s.index, 8);
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_goto_index",
-                    "Transitioning", s.state);
-       }
-}
-END_TEST
-
-START_TEST(test_state_class)
-{
-       MafwPlaylist *playlist = NULL;
-       gint i = 0;
-       RendererInfo s = {0, };;
-       CallbackInfo c = {0, };;
-       gchar *objectid = NULL;
-
-       /* Initialize callback info */
-       c.err_msg = NULL;
-       c.error_signal_expected = FALSE;
-       c.error_signal_received = NULL;
-       c.property_expected = NULL;
-       c.property_received = NULL;
-
-       /* Connect to renderer signals */
-       g_signal_connect(g_gst_renderer, "error",
-                        G_CALLBACK(error_cb),
-                        &c);
-
-       g_signal_connect(g_gst_renderer, "state-changed",
-                        G_CALLBACK(state_changed_cb),
-                        &s);
-       g_signal_connect(g_gst_renderer, "media-changed",
-                        G_CALLBACK(media_changed_cb),
-                        &s);
-       g_signal_connect(g_gst_renderer, "playlist-changed",
-                        G_CALLBACK(playlist_changed_cb),
-                        NULL);
-
-       /* --- Get initial status --- */
-
-       reset_callback_info(&c);
-
-       g_debug("get status...");
-       mafw_renderer_get_status(g_gst_renderer, status_cb, &s);
-
-       /* --- Play object --- */
-
-       reset_callback_info(&c);
-
-       objectid = get_sample_clip_objectid(SAMPLE_AUDIO_CLIP);
-       g_debug("play_object... %s", objectid);
-       mafw_renderer_play_object(g_gst_renderer, objectid, playback_cb,
-                                  &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "playing an object", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object",
-                    "Transitioning", s.state);
-       }
-
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object", "Playing",
-                    s.state);
-       }
-
-       /* --- Prev --- */
-
-       reset_callback_info(&c);
-
-       g_debug("move to prev...");
-       mafw_renderer_previous(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (!c.error)
-                       fail(callback_no_err_msg, "moving to prev", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       /* --- Play object --- */
-
-       reset_callback_info(&c);
-
-       g_debug("play_object... %s", objectid);
-       mafw_renderer_play_object(g_gst_renderer, objectid, playback_cb,
-                                  &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "playing an object", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object",
-                    "Transitioning", s.state);
-       }
-
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object", "Playing",
-                    s.state);
-       }
-
-       /* --- Next --- */
-
-       reset_callback_info(&c);
-
-       g_debug("move to next...");
-       mafw_renderer_next(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (!c.error)
-                       fail(callback_no_err_msg, "moving to next", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       /* --- Play object --- */
-
-       reset_callback_info(&c);
-
-       g_debug("play_object... %s", objectid);
-       mafw_renderer_play_object(g_gst_renderer, objectid, playback_cb,
-                                  &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "playing an object", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object",
-                    "Transitioning", s.state);
-       }
-
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object", "Playing",
-                    s.state);
-       }
-
-       /* --- Go to index --- */
-
-       reset_callback_info(&c);
-
-       g_debug("goto index 8...");
-       mafw_renderer_goto_index(g_gst_renderer, 8, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (!c.error)
-                       fail(callback_err_msg, "going to index 8", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       /* --- Create and assign a playlist --- */
-
-       g_debug("assign playlist...");
-       playlist = MAFW_PLAYLIST(mafw_mock_playlist_new());
-       for (i=0; i<10; i++) {
-               gchar *cur_item_oid =
-                       get_sample_clip_objectid(SAMPLE_AUDIO_CLIP);
-               mafw_playlist_insert_item(
-                       playlist, i, cur_item_oid, NULL);
-               g_free(cur_item_oid);
-       }
-       mafw_playlist_set_repeat(playlist, FALSE);
-
-       media_changed_called = FALSE;
-       if (!mafw_renderer_assign_playlist(g_gst_renderer, playlist,
-                                           NULL))
-       {
-               fail("Assign playlist failed");
-       }
-
-       wait_for_state(&s, Stopped, wait_tout_val);
-
-       /* --- Play object --- */
-
-       reset_callback_info(&c);
-
-       g_debug("play_object... %s", objectid);
-       mafw_renderer_play_object(g_gst_renderer, objectid, playback_cb,
-                                  &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "playing an object", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object",
-                    "Transitioning", s.state);
-       }
-
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object", "Playing",
-                    s.state);
-       }
-
-       /* --- Next --- */
-
-       reset_callback_info(&c);
-
-       g_debug("move to next...");
-       mafw_renderer_next(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "moving to next", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       fail_if(s.index != 1, index_err_msg, s.index, 1);
-
-       if (wait_for_state(&s, Stopped, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_next", "Playing",
-                    s.state);
-       }
-
-       /* --- Play object --- */
-
-       reset_callback_info(&c);
-
-       g_debug("play_object... %s", objectid);
-       mafw_renderer_play_object(g_gst_renderer, objectid, playback_cb,
-                                  &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "playing an object", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object",
-                    "Transitioning", s.state);
-       }
-
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object", "Playing",
-                    s.state);
-       }
-
-       /* --- Go to index --- */
-
-       reset_callback_info(&c);
-
-       g_debug("goto index 8...");
-       mafw_renderer_goto_index(g_gst_renderer, 8, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "going to index 8", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       fail_if(s.index != 8, index_err_msg, s.index, 8);
-
-       if (wait_for_state(&s, Stopped, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_goto_index", "Playing",
-                    s.state);
-       }
-
-       /* --- Play object --- */
-
-       reset_callback_info(&c);
-
-       g_debug("play_object... %s", objectid);
-       mafw_renderer_play_object(g_gst_renderer, objectid, playback_cb,
-                                  &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "playing an object", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object",
-                    "Transitioning", s.state);
-       }
-
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object", "Playing",
-                    s.state);
-       }
-
-       /* --- Prev --- */
-
-       reset_callback_info(&c);
-
-       g_debug("move to prev...");
-       mafw_renderer_previous(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "moving to prev", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       fail_if(s.index != 7, index_err_msg, s.index, 7);
-
-       if (wait_for_state(&s, Stopped, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_prev", "Playing",
-                    s.state);
-       }
-
-       /* --- Play --- */
-
-       reset_callback_info(&c);
-
-       g_debug("play...");
-       mafw_renderer_play(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail("Play after assigning playlist failed");
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play",
-                    "Transitioning", s.state);
-       }
-
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play", "Playing",
-                    s.state);
-       }
-
-       /* --- Prev --- */
-
-       reset_callback_info(&c);
-
-       g_debug("move to prev...");
-       mafw_renderer_previous(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "moving to prev", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       fail_if(s.index != 6, index_err_msg, s.index, 6);
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_prev",
-                    "Transitioning", s.state);
-       }
-
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_prev",
-                    "Transitioning", s.state);
-       }
-
-       /* --- Seeking --- */
-
-       reset_callback_info(&c);
-
-       g_debug("seeking...");
-       mafw_renderer_set_position(g_gst_renderer, SeekRelative, 1,
-                                   seek_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "seeking failed", c.err_code,
-                            c.err_msg);
-               if (c.seek_position != 1) {
-                       fail("seeking failed");
-               }
-       } else {
-               fail(no_callback_msg);
-       }
-
-       /* --- Seeking --- */
-
-       reset_callback_info(&c);
-
-       g_debug("seeking...");
-       mafw_renderer_set_position(g_gst_renderer, SeekAbsolute, -1,
-                                   seek_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "seeking failed", c.err_code,
-                            c.err_msg);
-               if (c.seek_position != -1) {
-                       fail("seeking failed");
-               }
-       } else {
-               fail(no_callback_msg);
-       }
-
-       /* --- Seeking --- */
-
-       reset_callback_info(&c);
-
-       g_debug("seeking...");
-       mafw_renderer_set_position(g_gst_renderer, SeekAbsolute, 1,
-                                   seek_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "seeking failed", c.err_code,
-                            c.err_msg);
-               if (c.seek_position != 1) {
-                       fail("seeking failed");
-               }
-       } else {
-               fail(no_callback_msg);
-       }
-}
-END_TEST
-
-START_TEST(test_playlist_iterator)
-{
-       MafwPlaylist *playlist = NULL;
-       gint i = 0;
-       CallbackInfo c = {0, };;
-       MafwPlaylistIterator *iterator = NULL;
-       GError *error = NULL;
-       gint size;
-       gint index;
-
-       /* Initialize callback info */
-       c.err_msg = NULL;
-       c.error = FALSE;
-       reset_callback_info(&c);
-
-       /* --- Create and assign a playlist --- */
-
-       g_debug("assign playlist...");
-       playlist = MAFW_PLAYLIST(mafw_mock_playlist_new());
-
-       iterator = mafw_playlist_iterator_new();
-       mafw_playlist_iterator_initialize(iterator, playlist, &error);
-       if (error != NULL) {
-               fail("Error found: %s, %d, %s",
-                    g_quark_to_string(error->domain),
-                    error->code, error->message);
-       }
-
-       for (i = 0; i < 3; i++) {
-               gchar *cur_item_oid = NULL;
-               cur_item_oid =
-                       get_sample_clip_objectid(SAMPLE_AUDIO_CLIP);
-               mafw_playlist_insert_item(playlist, 0, cur_item_oid, NULL);
-               g_free(cur_item_oid);
-       }
-
-       size = mafw_playlist_iterator_get_size(iterator, NULL);
-       fail_if(size != 3, "Playlist should have 3 elements and it has %d",
-               size);
-       index = mafw_playlist_iterator_get_current_index(iterator);
-       fail_if(index != 2, "Index should be 2 and it is %d", index);
-
-       mafw_playlist_move_item(playlist, 1, 2, NULL);
-       index = mafw_playlist_iterator_get_current_index(iterator);
-       fail_if(index != 1, "Index should be 1 and it is %d", index);
-
-       mafw_playlist_move_item(playlist, 2, 1, NULL);
-       index = mafw_playlist_iterator_get_current_index(iterator);
-       fail_if(index != 2, "Index should be 2 and it is %d", index);
-
-       mafw_playlist_move_item(playlist, 2, 1, NULL);
-       index = mafw_playlist_iterator_get_current_index(iterator);
-       fail_if(index != 1, "Index should be 1 and it is %d", index);
-
-       mafw_playlist_remove_item(playlist, 0, &error);
-       if (error != NULL) {
-               fail("Error found: %s, %d, %s",
-                    g_quark_to_string(error->domain),
-                    error->code, error->message);
-       }
-
-       size = mafw_playlist_iterator_get_size(iterator, NULL);
-       fail_if(size != 2, "Playlist should have 2 elements and it has %d",
-               size);
-       index = mafw_playlist_iterator_get_current_index(iterator);
-       fail_if(index != 0, "Index should be 0 and it is %d", index);
-
-       mafw_playlist_iterator_reset(iterator, NULL);
-       index = mafw_playlist_iterator_get_current_index(iterator);
-       fail_if(index != 0, "Index should be 0 and it is %d", index);
-
-       mafw_playlist_remove_item(playlist, 0, &error);
-       if (error != NULL) {
-               fail("Error found: %s, %d, %s",
-                    g_quark_to_string(error->domain),
-                    error->code, error->message);
-       }
-
-       size = mafw_playlist_iterator_get_size(iterator, NULL);
-       fail_if(size != 1, "Playlist should have 1 elements and it has %d",
-               size);
-       index = mafw_playlist_iterator_get_current_index(iterator);
-       fail_if(index != 0, "Index should be 0 and it is %d", index);
-
-       mafw_playlist_remove_item(playlist, 0, &error);
-       if (error != NULL) {
-               fail("Error found: %s, %d, %s",
-                    g_quark_to_string(error->domain),
-                    error->code, error->message);
-       }
-
-       size = mafw_playlist_iterator_get_size(iterator, NULL);
-       fail_if(size != 0, "Playlist should have 0 elements and it has %d",
-               size);
-       index = mafw_playlist_iterator_get_current_index(iterator);
-       fail_if(index != -1, "Index should be -1 and it is %d", index);
-
-       g_object_unref(iterator);
-}
-END_TEST
-
-START_TEST(test_video)
-{
-       RendererInfo s = {0, };;
-       CallbackInfo c = {0, };;
-       MetadataChangedInfo m;
-       gchar *objectid = NULL;
-       GstBus *bus = NULL;
-       GstStructure *structure = NULL;
-       GstMessage *message = NULL;
-
-       /* Initialize callback info */
-       c.err_msg = NULL;
-       c.error_signal_expected = FALSE;
-       c.error_signal_received = NULL;
-       m.expected_key = NULL;
-       m.value = NULL;
-       c.property_expected = NULL;
-       c.property_received = NULL;
-
-       /* Connect to renderer signals */
-       g_signal_connect(g_gst_renderer, "error",
-                        G_CALLBACK(error_cb),
-                        &c);
-
-       g_signal_connect(g_gst_renderer, "state-changed",
-                        G_CALLBACK(state_changed_cb),
-                        &s);
-       g_signal_connect(g_gst_renderer, "media-changed",
-                        G_CALLBACK(media_changed_cb),
-                        &s);
-       g_signal_connect(g_gst_renderer, "playlist-changed",
-                        G_CALLBACK(playlist_changed_cb),
-                        NULL);
-       g_signal_connect(g_gst_renderer, "metadata-changed",
-                        G_CALLBACK(metadata_changed_cb),
-                        &m);
-
-#ifdef HAVE_GDKPIXBUF
-       mafw_extension_set_property_boolean(
-               MAFW_EXTENSION(g_gst_renderer),
-               MAFW_PROPERTY_GST_RENDERER_CURRENT_FRAME_ON_PAUSE,
-               TRUE);
-#endif
-
-       /* --- Get initial status --- */
-
-       reset_callback_info(&c);
-
-       g_debug("get status...");
-       mafw_renderer_get_status(g_gst_renderer, status_cb, &s);
-
-       /* --- Play object --- */
-
-       reset_callback_info(&c);
-
-       objectid = get_sample_clip_objectid(SAMPLE_VIDEO_CLIP);
-       g_debug("play_object... %s", objectid);
-       mafw_renderer_play_object(g_gst_renderer, objectid, playback_cb,
-                                  &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "playing an object", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object",
-                    "Transitioning", s.state);
-       }
-
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object", "Playing",
-                    s.state);
-       }
-
-       MAFW_GST_RENDERER(g_gst_renderer)->worker->xid = 0x1;
-       bus = MAFW_GST_RENDERER(g_gst_renderer)->worker->bus;
-       fail_if(bus == NULL, "No GstBus");
-
-       structure = gst_structure_new("prepare-xwindow-id", "width",
-                                     G_TYPE_INT, 64, "height", G_TYPE_INT, 32,
-                                     NULL);
-       message = gst_message_new_element(NULL, structure);
-       gst_bus_post(bus, message);
-
-       /* --- Pause --- */
-
-       reset_callback_info(&c);
-
-       m.expected_key = MAFW_METADATA_KEY_PAUSED_THUMBNAIL_URI;
-
-       g_debug("pause...");
-       mafw_renderer_pause(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "pausing", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Paused, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_prev", "Playing",
-                    s.state);
-       }
-
-       if (wait_for_metadata(&m, wait_tout_val) == FALSE) {
-               fail("Expected " MAFW_METADATA_KEY_PAUSED_THUMBNAIL_URI
-                    ", but not received");
-       }
-
-       fail_if(m.value == NULL, "Metadata "
-               MAFW_METADATA_KEY_PAUSED_THUMBNAIL_URI " not received");
-
-       g_value_unset(m.value);
-       g_free(m.value);
-       m.value = NULL;
-       m.expected_key = NULL;
-
-       /* --- Resume --- */
-
-       reset_callback_info(&c);
-
-       g_debug("resume...");
-       mafw_renderer_resume(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "resuming", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object", "Playing",
-                    s.state);
-       }
-
-       /* --- EOS --- */
-
-       if (wait_for_state(&s, Stopped, 3000) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object", "Stop",
-                    s.state);
-       }
-
-       g_free(objectid);
-}
-END_TEST
-
-START_TEST(test_media_art)
-{
-       RendererInfo s = {0, };;
-       CallbackInfo c = {0, };;
-       MetadataChangedInfo m;
-       gchar *objectid = NULL;
-       GstBus *bus = NULL;
-       GstMessage *message = NULL;
-       GstTagList *list = NULL;
-       GstBuffer *buffer = NULL;
-       guchar *image = NULL;
-       gchar *image_path = NULL;
-       gsize image_length;
-       GstCaps *caps = NULL;
-
-       /* Initialize callback info */
-       c.err_msg = NULL;
-       c.error_signal_expected = FALSE;
-       m.expected_key = NULL;
-       m.value = NULL;
-       c.property_expected = NULL;
-       c.property_received = NULL;
-
-       /* Connect to renderer signals */
-       g_signal_connect(g_gst_renderer, "error",
-                        G_CALLBACK(error_cb),
-                        &c);
-
-       g_signal_connect(g_gst_renderer, "state-changed",
-                        G_CALLBACK(state_changed_cb),
-                        &s);
-       g_signal_connect(g_gst_renderer, "media-changed",
-                        G_CALLBACK(media_changed_cb),
-                        &s);
-       g_signal_connect(g_gst_renderer, "playlist-changed",
-                        G_CALLBACK(playlist_changed_cb),
-                        NULL);
-       g_signal_connect(g_gst_renderer, "metadata-changed",
-                        G_CALLBACK(metadata_changed_cb),
-                        &m);
-
-       /* --- Get initial status --- */
-
-       reset_callback_info(&c);
-
-       g_debug("get status...");
-       mafw_renderer_get_status(g_gst_renderer, status_cb, &s);
-
-       /* --- Play object --- */
-
-       reset_callback_info(&c);
-
-       objectid = get_sample_clip_objectid(SAMPLE_AUDIO_CLIP);
-       g_debug("play_object... %s", objectid);
-       mafw_renderer_play_object(g_gst_renderer, objectid, playback_cb,
-                                  &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "playing an object", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       /* --- Pause --- */
-
-       reset_callback_info(&c);
-
-       g_debug("pause...");
-       mafw_renderer_pause(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "pausing", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object",
-                    "Transitioning", s.state);
-       }
-
-       if (wait_for_state(&s, Paused, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_prev", "Playing",
-                    s.state);
-       }
-
-       /* Emit image */
-
-       bus = MAFW_GST_RENDERER(g_gst_renderer)->worker->bus;
-       fail_if(bus == NULL, "No GstBus");
-
-       m.expected_key = MAFW_METADATA_KEY_RENDERER_ART_URI;
-
-       image_path = get_sample_clip_path(SAMPLE_IMAGE);
-       fail_if(!g_file_get_contents(image_path + 7, (gchar **) &image,
-                                    &image_length, NULL),
-               "Could not load test image");
-       g_free(image_path);
-
-       buffer = gst_buffer_new();
-       gst_buffer_set_data(buffer, image, image_length);
-       caps = gst_caps_new_simple("image/png", "image-type",
-                                  GST_TYPE_TAG_IMAGE_TYPE,
-                                  GST_TAG_IMAGE_TYPE_FRONT_COVER, NULL);
-       gst_buffer_set_caps(buffer, caps);
-       gst_caps_unref(caps);
-
-       list = gst_tag_list_new();
-       gst_tag_list_add(list, GST_TAG_MERGE_APPEND, GST_TAG_IMAGE, buffer,
-                        NULL);
-
-       message = gst_message_new_tag(NULL, list);
-       gst_bus_post(bus, message);
-
-       /* --- Resume --- */
-
-       reset_callback_info(&c);
-
-       g_debug("resume...");
-       mafw_renderer_resume(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "resuming", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object", "Playing",
-                    s.state);
-       }
-
-       if (wait_for_metadata(&m, wait_tout_val) == FALSE) {
-               fail("Expected " MAFW_METADATA_KEY_RENDERER_ART_URI
-                    ", but not received");
-       }
-
-       fail_if(m.value == NULL, "Metadata "
-               MAFW_METADATA_KEY_RENDERER_ART_URI " not received");
-
-       g_value_unset(m.value);
-       g_free(m.value);
-       m.value = NULL;
-       m.expected_key = NULL;
-
-       /* --- EOS --- */
-
-       if (wait_for_state(&s, Stopped, 3000) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object", "Stop",
-                    s.state);
-       }
-
-       g_free(objectid);
-}
-END_TEST
-
-START_TEST(test_properties_management)
-{
-       RendererInfo s;
-       CallbackInfo c = {0, };;
-       PropertyChangedInfo p;
-
-       /* Initialize callback info */
-       c.err_msg = NULL;
-       c.error_signal_expected = FALSE;
-       c.error_signal_received = NULL;
-       c.property_expected = NULL;
-       c.property_received = NULL;
-       p.expected = NULL;
-       p.received = NULL;
-
-       /* Connect to renderer signals */
-       g_signal_connect(g_gst_renderer, "state-changed",
-                        G_CALLBACK(state_changed_cb),
-                        &s);
-       g_signal_connect(g_gst_renderer, "property-changed",
-                        G_CALLBACK(property_changed_cb),
-                        &p);
-
-       /* Wait for the volume manager to be initialized */
-
-       /* Volume */
-
-       p.expected = MAFW_PROPERTY_RENDERER_VOLUME;
-
-       if (!wait_for_property(&p, wait_tout_val)) {
-               fail("No property %s received", p.expected);
-       }
-
-       fail_if(p.received == NULL, "No property %s received",
-               p.expected);
-       fail_if(p.received != NULL &&
-               g_value_get_uint(p.received) != 48,
-               "Property with value %d and %d expected",
-               g_value_get_uint(p.received), 48);
-
-       if (p.received != NULL) {
-               g_value_unset(p.received);
-               g_free(p.received);
-               p.received = NULL;
-       }
-       p.expected = NULL;
-
-       /* --- mute --- */
-
-       reset_callback_info(&c);
-
-       c.property_expected = MAFW_PROPERTY_RENDERER_MUTE;
-
-       mafw_extension_set_property_boolean(MAFW_EXTENSION(g_gst_renderer),
-                                           c.property_expected, TRUE);
-
-       p.expected = MAFW_PROPERTY_RENDERER_MUTE;
-
-#ifdef MAFW_GST_RENDERER_ENABLE_MUTE
-       if (!wait_for_property(&p, wait_tout_val)) {
-               fail("No property %s received", p.expected);
-       }
-
-       fail_if(p.received == NULL, "No property %s received",
-               p.expected);
-       fail_if(p.received != NULL &&
-               g_value_get_boolean(p.received) != TRUE,
-               "Property with value %d and %d expected",
-               g_value_get_boolean(p.received), TRUE);
-#else
-       if (wait_for_property(&p, wait_tout_val)) {
-               fail("Property %s received and it should not have been",
-                    p.expected);
-       }
-
-       fail_if(p.received != NULL,
-               "Property %s received and it should not have been",
-               p.expected);
-#endif
-
-       if (p.received != NULL) {
-               g_value_unset(p.received);
-               g_free(p.received);
-               p.received = NULL;
-       }
-       p.expected = NULL;
-
-       mafw_extension_get_property(MAFW_EXTENSION(g_gst_renderer),
-                                   c.property_expected, get_property_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "get_property", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       fail_if(c.property_received == NULL,
-               "No property %s received and expected", c.property_expected);
-#ifdef MAFW_GST_RENDERER_ENABLE_MUTE
-       fail_if(c.property_received != NULL &&
-               g_value_get_boolean(c.property_received) != TRUE,
-               "Property with value %d and %d expected",
-               g_value_get_boolean(c.property_received), TRUE);
-#else
-       fail_if(c.property_received != NULL &&
-               g_value_get_boolean(c.property_received) != FALSE,
-               "Property with value %d and %d expected",
-               g_value_get_boolean(c.property_received), FALSE);
-#endif
-
-       /* --- xid --- */
-
-       reset_callback_info(&c);
-
-       c.property_expected = MAFW_PROPERTY_RENDERER_XID;
-
-       mafw_extension_set_property_uint(MAFW_EXTENSION(g_gst_renderer),
-                                        c.property_expected, 50);
-
-       mafw_extension_get_property(MAFW_EXTENSION(g_gst_renderer),
-                                   c.property_expected, get_property_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "get_property", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       fail_if(c.property_received == NULL,
-               "No property %s received and expected", c.property_expected);
-       fail_if(c.property_received != NULL &&
-               g_value_get_uint(c.property_received) != 50,
-               "Property with value %d and %d expected",
-               g_value_get_uint(c.property_received), 50);
-
-       /* --- error policy --- */
-
-       reset_callback_info(&c);
-
-       c.property_expected = MAFW_PROPERTY_RENDERER_ERROR_POLICY;
-
-       mafw_extension_set_property_uint(MAFW_EXTENSION(g_gst_renderer),
-                                        c.property_expected, 1);
-
-       mafw_extension_get_property(MAFW_EXTENSION(g_gst_renderer),
-                                   c.property_expected, get_property_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "get_property", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       fail_if(c.property_received == NULL,
-               "No property %s received and expected", c.property_expected);
-       fail_if(c.property_received != NULL &&
-               g_value_get_uint(c.property_received) != 1,
-               "Property with value %d and %d expected",
-               g_value_get_uint(c.property_received), 1);
-
-       /* --- autopaint --- */
-
-       reset_callback_info(&c);
-
-       c.property_expected = MAFW_PROPERTY_RENDERER_AUTOPAINT;
-
-       mafw_extension_set_property_boolean(MAFW_EXTENSION(g_gst_renderer),
-                                           c.property_expected, TRUE);
-
-       mafw_extension_get_property(MAFW_EXTENSION(g_gst_renderer),
-                                   c.property_expected, get_property_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "get_property", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       fail_if(c.property_received == NULL,
-               "No property %s received and expected", c.property_expected);
-       fail_if(c.property_received != NULL &&
-               g_value_get_boolean(c.property_received) != TRUE,
-               "Property with value %d and %d expected",
-               g_value_get_boolean(c.property_received), TRUE);
-
-       /* --- colorkey --- */
-
-       reset_callback_info(&c);
-
-       c.property_expected = MAFW_PROPERTY_RENDERER_COLORKEY;
-
-       mafw_extension_get_property(MAFW_EXTENSION(g_gst_renderer),
-                                   c.property_expected, get_property_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "get_property", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       fail_if(c.property_received == NULL,
-               "No property %s received and expected", c.property_expected);
-       fail_if(c.property_received != NULL &&
-               g_value_get_int(c.property_received) != -1,
-               "Property with value %d and %d expected",
-               g_value_get_int(c.property_received), -1);
-
-       /* --- current frame on pause --- */
-
-       reset_callback_info(&c);
-
-       c.property_expected = MAFW_PROPERTY_GST_RENDERER_CURRENT_FRAME_ON_PAUSE;
-
-       mafw_extension_set_property_boolean(MAFW_EXTENSION(g_gst_renderer),
-                                           c.property_expected, TRUE);
-
-       mafw_extension_get_property(MAFW_EXTENSION(g_gst_renderer),
-                                   c.property_expected, get_property_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "get_property", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       fail_if(c.property_received == NULL,
-               "No property %s received and expected", c.property_expected);
-       fail_if(c.property_received != NULL &&
-               g_value_get_boolean(c.property_received) != TRUE,
-               "Property with value %d and %d expected",
-               g_value_get_boolean(c.property_received), TRUE);
-
-       /* --- volume --- */
-
-       p.expected = MAFW_PROPERTY_RENDERER_VOLUME;
-
-       mafw_extension_set_property_uint(MAFW_EXTENSION(g_gst_renderer),
-                                        p.expected, 50);
-
-       if (!wait_for_property(&p, wait_tout_val)) {
-               fail("No property %s received", p.expected);
-       }
-
-       fail_if(p.received == NULL, "No property %s received",
-               p.expected);
-       fail_if(p.received != NULL &&
-               g_value_get_uint(p.received) != 50,
-               "Property with value %d and %d expected",
-               g_value_get_uint(p.received), 50);
-
-       if (p.received != NULL) {
-               g_value_unset(p.received);
-               g_free(p.received);
-               p.received = NULL;
-       }
-       p.expected = NULL;
-
-       c.property_expected = MAFW_PROPERTY_RENDERER_VOLUME;
-
-       mafw_extension_get_property(MAFW_EXTENSION(g_gst_renderer),
-                                   c.property_expected, get_property_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "get_property", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       fail_if(c.property_received == NULL,
-               "No property %s received and expected", c.property_expected);
-       fail_if(c.property_received != NULL &&
-               g_value_get_uint(c.property_received) != 50,
-               "Property with value %d and %d expected",
-               g_value_get_uint(c.property_received), 50);
-
-#ifndef MAFW_GST_RENDERER_DISABLE_PULSE_VOLUME
-       /* Test reconnection to pulse */
-
-       pa_context_disconnect(pa_context_get_instance());
-
-       /* Wait for the volume manager to be reinitialized */
-
-       /* Volume */
-
-       p.expected = MAFW_PROPERTY_RENDERER_VOLUME;
-
-       if (!wait_for_property(&p, wait_tout_val)) {
-               fail("No property %s received", p.expected);
-       }
-
-       fail_if(p.received == NULL, "No property %s received",
-               p.expected);
-       fail_if(p.received != NULL &&
-               g_value_get_uint(p.received) != 48,
-               "Property with value %d and %d expected",
-               g_value_get_uint(p.received), 48);
-
-       if (p.received != NULL) {
-               g_value_unset(p.received);
-               g_free(p.received);
-               p.received = NULL;
-       }
-       p.expected = NULL;
-
-       reset_callback_info(&c);
-#endif
-}
-END_TEST
-
-START_TEST(test_buffering)
-{
-       RendererInfo s;
-       CallbackInfo c;
-       BufferingInfo b;
-       GstBus *bus = NULL;
-       GstMessage *message = NULL;
-
-       /* Initialize callback info */
-       c.err_msg = NULL;
-       c.error_signal_expected = FALSE;
-       c.error_signal_received = NULL;
-       c.property_expected = NULL;
-       c.property_received = NULL;
-       b.requested = FALSE;
-       b.received = FALSE;
-       b.value = 0.0;
-
-       /* Connect to renderer signals */
-       g_signal_connect(g_gst_renderer, "error",
-                        G_CALLBACK(error_cb),
-                        &c);
-       g_signal_connect(g_gst_renderer, "state-changed",
-                        G_CALLBACK(state_changed_cb),
-                        &s);
-       g_signal_connect(g_gst_renderer, "buffering-info",
-                        G_CALLBACK(buffering_info_cb),
-                        &b);
-
-       /* --- Get initial status --- */
-
-       reset_callback_info(&c);
-
-       g_debug("get status...");
-       mafw_renderer_get_status(g_gst_renderer, status_cb, &s);
-
-       /* --- Play object --- */
-
-       reset_callback_info(&c);
-
-       gchar *objectid = get_sample_clip_objectid(SAMPLE_AUDIO_CLIP);
-       g_debug("play_object... %s", objectid);
-       mafw_renderer_play_object(g_gst_renderer, objectid, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "playing an object", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Transitioning, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object",
-                    "Transitioning", s.state);
-       }
-
-       if (wait_for_state(&s, Playing, wait_tout_val) == FALSE) {
-               fail(state_err_msg, "mafw_renderer_play_object", "Playing",
-                    s.state);
-       }
-
-       g_free(objectid);
-
-       /* --- Buffering info --- */
-
-       b.requested = TRUE;
-
-       bus = MAFW_GST_RENDERER(g_gst_renderer)->worker->bus;
-       fail_if(bus == NULL, "No GstBus");
-
-       message = gst_message_new_buffering(NULL, 50);
-       gst_bus_post(bus, message);
-
-       if (wait_for_buffering(&b, wait_tout_val) == FALSE) {
-               fail("Expected buffering message but not received");
-       }
-
-       fail_if(b.value != 0.5, "Expected buffering 0.50 and received %1.2f",
-               b.value);
-
-       b.requested = FALSE;
-       b.received = FALSE;
-       b.value = 0;
-
-       /* --- Buffering info --- */
-
-       b.requested = TRUE;
-
-       message = gst_message_new_buffering(NULL, 100);
-       gst_bus_post(bus, message);
-
-       if (wait_for_buffering(&b, wait_tout_val) == FALSE) {
-               fail("Expected buffering message but not received");
-       }
-
-       fail_if(b.value != 1.0, "Expected buffering 1.00 and received %1.2f",
-               b.value);
-
-       b.requested = FALSE;
-       b.received = FALSE;
-       b.value = 0;
-
-       /* --- Stop --- */
-
-       reset_callback_info(&c);
-
-       g_debug("stop...");
-       mafw_renderer_stop(g_gst_renderer, playback_cb, &c);
-
-       if (wait_for_callback(&c, wait_tout_val)) {
-               if (c.error)
-                       fail(callback_err_msg, "stopping", c.err_code,
-                            c.err_msg);
-       } else {
-               fail(no_callback_msg);
-       }
-
-       if (wait_for_state(&s, Stopped, wait_tout_val) == FALSE) {
-               fail(state_err_msg,"mafw_renderer_stop", "Stopped", s.state);
-       }
-}
-END_TEST
-
-/*----------------------------------------------------------------------------
-  Suit creation
-  ----------------------------------------------------------------------------*/
-
-SRunner * configure_tests(void)
-{
-       SRunner *sr = NULL;
-       Suite *s = NULL;
-       const gchar *tout = g_getenv("WAIT_TIMEOUT");
-       
-       if (!tout)
-               wait_tout_val = DEFAULT_WAIT_TOUT;
-       else
-       {
-               wait_tout_val = (gint)strtol(tout, NULL, 0);
-               if (wait_tout_val<=0)
-                       wait_tout_val = DEFAULT_WAIT_TOUT;
-       }
-
-       checkmore_wants_dbus();
-       mafw_log_init(":error");
-       /* Create the suite */
-       s = suite_create("MafwGstRenderer");
-
-       /* Create test cases */
-       TCase *tc1 = tcase_create("Playback");
-
-       /* Create unit tests for test case "Playback" */
-       tcase_add_checked_fixture(tc1, fx_setup_dummy_gst_renderer,
-                                 fx_teardown_dummy_gst_renderer);
-if (1) tcase_add_test(tc1, test_basic_playback);
-if (1) tcase_add_test(tc1, test_playlist_playback);
-if (1) tcase_add_test(tc1, test_repeat_mode_playback);
-if (1) tcase_add_test(tc1, test_gst_renderer_mode);
-if (1) tcase_add_test(tc1, test_update_stats);
-if (1)  tcase_add_test(tc1, test_play_state);
-if (1)  tcase_add_test(tc1, test_pause_state);
-if (1)  tcase_add_test(tc1, test_stop_state);
-if (1)  tcase_add_test(tc1, test_transitioning_state);
-if (1)  tcase_add_test(tc1, test_state_class);
-if (1)  tcase_add_test(tc1, test_playlist_iterator);
-if (1)  tcase_add_test(tc1, test_video);
-if (1)  tcase_add_test(tc1, test_media_art);
-if (1)  tcase_add_test(tc1, test_properties_management);
-if (1)  tcase_add_test(tc1, test_buffering);
-
-       tcase_set_timeout(tc1, 0);
-
-       suite_add_tcase(s, tc1);
-
-       /* Create srunner object with the test suite */
-       sr = srunner_create(s);
-
-       return sr;
-}
-
-/* vi: set noexpandtab ts=8 sw=8 cino=t0,(0: */