GstCheck

GstCheck — Common code for GStreamer unit tests

Functions

#define GST_START_TEST()
#define ASSERT_BUFFER_REFCOUNT()
#define ASSERT_CAPS_REFCOUNT()
#define ASSERT_CRITICAL()
#define ASSERT_WARNING()
#define ASSERT_MINI_OBJECT_REFCOUNT()
#define ASSERT_OBJECT_REFCOUNT()
#define ASSERT_OBJECT_REFCOUNT_BETWEEN()
#define ASSERT_SET_STATE()
#define fail_unless_equals_int()
#define fail_unless_equals_float()
#define fail_unless_equals_string()
#define fail_unless_equals_uint64()
#define fail_unless_equals_int64()
#define fail_unless_equals_int_hex()
#define fail_unless_equals_int64_hex()
#define fail_unless_equals_uint64_hex()
#define fail_unless_equals_pointer()
#define fail_unless_message_error()
#define assert_equals_int()
#define assert_equals_float()
#define assert_equals_string()
#define assert_equals_uint64()
#define assert_equals_int64()
#define assert_equals_int_hex()
#define assert_equals_int64_hex()
#define assert_equals_uint64_hex()
#define assert_equals_pointer()
#define assert_message_error()
void gst_check_init ()
void gst_check_message_error ()
GstElement * gst_check_setup_element ()
GstPad * gst_check_setup_sink_pad ()
GstPad * gst_check_setup_src_pad ()
GstPad * gst_check_setup_sink_pad_by_name ()
GstPad * gst_check_setup_src_pad_by_name ()
void gst_check_teardown_pad_by_name ()
void gst_check_teardown_element ()
void gst_check_teardown_sink_pad ()
void gst_check_teardown_src_pad ()
void gst_check_drop_buffers ()
void gst_check_buffer_data ()
void gst_check_caps_equal ()
void gst_check_element_push_buffer_list ()
void gst_check_element_push_buffer ()
gint gst_check_run_suite ()
void gst_check_setup_events ()
void gst_check_setup_events_with_stream_id ()
GstPad * gst_check_setup_sink_pad_by_name_from_template ()
GstPad * gst_check_setup_sink_pad_from_template ()
GstPad * gst_check_setup_src_pad_by_name_from_template ()
GstPad * gst_check_setup_src_pad_from_template ()
void gst_check_objects_destroyed_on_unref ()
void gst_check_object_destroyed_on_unref ()

Types and Values

#define GST_END_TEST

Includes

#include <gst/check/gstcheck.h>

Description

These macros and functions are for internal use of the unit tests found inside the 'check' directories of various GStreamer packages.

One notable feature is that one can use the environment variables GST_CHECKS and GST_CHECKS_IGNORE to select which tests to run or skip. Both variables can contain a comma separated list of test name globs (e.g. test_*).

Functions

GST_START_TEST()

#define             GST_START_TEST(__testname)

wrapper for checks START_TEST

Parameters

__testname

test function name

 

ASSERT_BUFFER_REFCOUNT()

#define             ASSERT_BUFFER_REFCOUNT(buffer, name, value)

ASSERT_CAPS_REFCOUNT()

#define             ASSERT_CAPS_REFCOUNT(caps, name, value)

ASSERT_CRITICAL()

#define             ASSERT_CRITICAL(code)

ASSERT_WARNING()

#define             ASSERT_WARNING(code)

ASSERT_MINI_OBJECT_REFCOUNT()

#define             ASSERT_MINI_OBJECT_REFCOUNT(miniobj, name, value)

ASSERT_OBJECT_REFCOUNT()

#define             ASSERT_OBJECT_REFCOUNT(object, name, value)

ASSERT_OBJECT_REFCOUNT_BETWEEN()

#define             ASSERT_OBJECT_REFCOUNT_BETWEEN(object, name, lower, upper)

ASSERT_SET_STATE()

#define             ASSERT_SET_STATE(element, state, ret)

fail_unless_equals_int()

#define             fail_unless_equals_int(a, b)

This macro checks that a and b are equal and aborts if this is not the case, printing both expressions and the values they evaluated to. This macro is for use in unit tests.

Parameters

a

a gint value or expression

 

b

a gint value or expression

 

fail_unless_equals_float()

#define             fail_unless_equals_float(a, b)

This macro checks that a and b are (almost) equal and aborts if this is not the case, printing both expressions and the values they evaluated to. This macro is for use in unit tests.

Parameters

a

a gdouble or gfloat value or expression

 

b

a gdouble or gfloat value or expression

 

fail_unless_equals_string()

#define             fail_unless_equals_string(a, b)

This macro checks that a and b are equal (as per strcmp) and aborts if this is not the case, printing both expressions and the values they evaluated to. This macro is for use in unit tests.

Parameters

a

a string literal or expression

 

b

a string literal or expression

 

fail_unless_equals_uint64()

#define             fail_unless_equals_uint64(a, b)

This macro checks that a and b are equal and aborts if this is not the case, printing both expressions and the values they evaluated to. This macro is for use in unit tests.

Parameters

a

a guint64 value or expression

 

b

a guint64 value or expression

 

fail_unless_equals_int64()

#define             fail_unless_equals_int64(a, b)

This macro checks that a and b are equal and aborts if this is not the case, printing both expressions and the values they evaluated to. This macro is for use in unit tests.

Parameters

a

a gint64 value or expression

 

b

a gint64 value or expression

 

fail_unless_equals_int_hex()

#define             fail_unless_equals_int_hex(a, b)

This macro checks that a and b are equal and aborts if this is not the case, printing both expressions and the values they evaluated to in hexadecimal format. This macro is for use in unit tests.

Parameters

a

a gint value or expression

 

b

a gint value or expression

 

Since: 1.2


fail_unless_equals_int64_hex()

#define             fail_unless_equals_int64_hex(a, b)

This macro checks that a and b are equal and aborts if this is not the case, printing both expressions and the values they evaluated to in hexadecimal format. This macro is for use in unit tests.

Parameters

a

a gint64 value or expression

 

b

a gint64 value or expression

 

Since: 1.2


fail_unless_equals_uint64_hex()

#define             fail_unless_equals_uint64_hex(a, b)

This macro checks that a and b are equal and aborts if this is not the case, printing both expressions and the values they evaluated to in hexadecimal format. This macro is for use in unit tests.

Parameters

a

a gint64 value or expression

 

b

a gint64 value or expression

 

Since: 1.2


fail_unless_equals_pointer()

#define             fail_unless_equals_pointer(a, b)

This macro checks that a and b are equal and aborts if this is not the case, printing both expressions and the values they evaluated to. This macro is for use in unit tests.

Parameters

a

a pointer value or expression

 

b

a pointer value or expression

 

Since: 1.2


fail_unless_message_error()

#define             fail_unless_message_error(msg, domain, code)

assert_equals_int()

#define assert_equals_int(a, b) fail_unless_equals_int(a, b)

This macro checks that a and b are equal and aborts if this is not the case, printing both expressions and the values they evaluated to. This macro is for use in unit tests.

Parameters

a

a gint value or expression

 

b

a gint value or expression

 

assert_equals_float()

#define assert_equals_float(a, b) fail_unless_equals_float(a, b)

This macro checks that a and b are (almost) equal and aborts if this is not the case, printing both expressions and the values they evaluated to. This macro is for use in unit tests.

Parameters

a

a gdouble or gfloat value or expression

 

b

a gdouble or gfloat value or expression

 

assert_equals_string()

#define assert_equals_string(a, b) fail_unless_equals_string(a, b)

This macro checks that a and b are equal (as per strcmp) and aborts if this is not the case, printing both expressions and the values they evaluated to. This macro is for use in unit tests.

Parameters

a

a string literal or expression

 

b

a string literal or expression

 

assert_equals_uint64()

#define assert_equals_uint64(a, b) fail_unless_equals_uint64(a, b)

This macro checks that a and b are equal and aborts if this is not the case, printing both expressions and the values they evaluated to. This macro is for use in unit tests.

Parameters

a

a guint64 value or expression

 

b

a guint64 value or expression

 

assert_equals_int64()

#define assert_equals_int64(a, b) fail_unless_equals_int64(a, b)

This macro checks that a and b are equal and aborts if this is not the case, printing both expressions and the values they evaluated to. This macro is for use in unit tests.

Parameters

a

a gint64 value or expression

 

b

a gint64 value or expression

 

assert_equals_int_hex()

#define assert_equals_int_hex(a, b) fail_unless_equals_int_hex(a, b)

This macro checks that a and b are equal and aborts if this is not the case, printing both expressions and the values they evaluated to in hexadecimal format. This macro is for use in unit tests.

Parameters

a

a gint value or expression

 

b

a gint value or expression

 

Since: 1.2


assert_equals_int64_hex()

#define assert_equals_int64_hex(a,b) fail_unless_equals_int64_hex(a,b)

This macro checks that a and b are equal and aborts if this is not the case, printing both expressions and the values they evaluated to in hexadecimal format. This macro is for use in unit tests.

Parameters

a

a gint64 value or expression

 

b

a gint64 value or expression

 

Since: 1.2


assert_equals_uint64_hex()

#define assert_equals_uint64_hex(a,b) fail_unless_equals_uint64_hex(a,b)

This macro checks that a and b are equal and aborts if this is not the case, printing both expressions and the values they evaluated to in hexadecimal format. This macro is for use in unit tests.

Parameters

a

a guint64 value or expression

 

b

a guint64 value or expression

 

Since: 1.2


assert_equals_pointer()

#define assert_equals_pointer(a, b) fail_unless_equals_pointer(a, b)

This macro checks that a and b are equal and aborts if this is not the case, printing both expressions and the values they evaluated to. This macro is for use in unit tests.

Parameters

a

a pointer value or expression

 

b

a pointer value or expression

 

Since: 1.2


assert_message_error()

#define assert_message_error(m, d, c) fail_unless_message_error(m, d, c)

gst_check_init ()

void
gst_check_init (int *argc,
                char **argv[]);

gst_check_message_error ()

void
gst_check_message_error (GstMessage *message,
                         GstMessageType type,
                         GQuark domain,
                         gint code);

gst_check_setup_element ()

GstElement *
gst_check_setup_element (const gchar *factory);

setup an element for a filter test with mysrcpad and mysinkpad

Parameters

factory

factory

 

Returns

a new element.

[transfer full]


gst_check_setup_sink_pad ()

GstPad *
gst_check_setup_sink_pad (GstElement *element,
                          GstStaticPadTemplate *tmpl);

Does the same as gst_check_setup_sink_pad_by_name with the name parameter equal to "src".

Parameters

element

element to setup pad on

 

tmpl

pad template

 

Returns

a new pad that can be used to check the output of element .

[transfer full]


gst_check_setup_src_pad ()

GstPad *
gst_check_setup_src_pad (GstElement *element,
                         GstStaticPadTemplate *tmpl);

Does the same as gst_check_setup_src_pad_by_name with the name parameter equal to "sink".

Parameters

element

element to setup pad on

 

tmpl

pad template

 

Returns

A new pad that can be used to inject data on element .

[transfer full]


gst_check_setup_sink_pad_by_name ()

GstPad *
gst_check_setup_sink_pad_by_name (GstElement *element,
                                  GstStaticPadTemplate *tmpl,
                                  const gchar *name);

Creates a new sink pad (based on the given tmpl ) and links it to the given element src pad (the pad that matches the given name ). You can set event/chain/query functions on this pad to check the output of the element .

Parameters

element

element to setup pad on

 

tmpl

pad template

 

name

Name of the element src pad that will be linked to the sink pad that will be setup

 

Returns

a new pad that can be used to check the output of element .

[transfer full]


gst_check_setup_src_pad_by_name ()

GstPad *
gst_check_setup_src_pad_by_name (GstElement *element,
                                 GstStaticPadTemplate *tmpl,
                                 const gchar *name);

Creates a new src pad (based on the given tmpl ) and links it to the given element sink pad (the pad that matches the given name ). Before using the src pad to push data on element you need to call gst_check_setup_events on the created src pad.

Example of how to push a buffer on element :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
GST_STATIC_CAPS (YOUR_CAPS_TEMPLATE_STRING)
);
static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
GST_STATIC_CAPS (YOUR_CAPS_TEMPLATE_STRING)
);

GstElement * element = gst_check_setup_element ("element");
GstPad * mysrcpad = gst_check_setup_src_pad (element, &srctemplate);
GstPad * mysinkpad = gst_check_setup_sink_pad (element, &sinktemplate);

gst_pad_set_active (mysrcpad, TRUE);
gst_pad_set_active (mysinkpad, TRUE);
fail_unless (gst_element_set_state (element, GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, "could not set to playing");

GstCaps * caps = gst_caps_from_string (YOUR_DESIRED_SINK_CAPS);
gst_check_setup_events (mysrcpad, element, caps, GST_FORMAT_TIME);
gst_caps_unref (caps);

fail_unless (gst_pad_push (mysrcpad, gst_buffer_new_and_alloc(2)) == GST_FLOW_OK);

For very simple input/output test scenarios checkout gst_check_element_push_buffer_list and gst_check_element_push_buffer.

Parameters

element

element to setup src pad on

 

tmpl

pad template

 

name

Name of the element sink pad that will be linked to the src pad that will be setup

 

Returns

A new pad that can be used to inject data on element .

[transfer full]


gst_check_teardown_pad_by_name ()

void
gst_check_teardown_pad_by_name (GstElement *element,
                                const gchar *name);

gst_check_teardown_element ()

void
gst_check_teardown_element (GstElement *element);

gst_check_teardown_sink_pad ()

void
gst_check_teardown_sink_pad (GstElement *element);

gst_check_teardown_src_pad ()

void
gst_check_teardown_src_pad (GstElement *element);

gst_check_drop_buffers ()

void
gst_check_drop_buffers (void);

Unref and remove all buffers that are in the global buffers GList, emptying the list.


gst_check_buffer_data ()

void
gst_check_buffer_data (GstBuffer *buffer,
                       gconstpointer data,
                       gsize size);

Compare the buffer contents with data and size .

Parameters

buffer

buffer to compare

 

data

data to compare to

 

size

size of data to compare

 

gst_check_caps_equal ()

void
gst_check_caps_equal (GstCaps *caps1,
                      GstCaps *caps2);

Compare two caps with gst_caps_is_equal and fail unless they are equal.

Parameters

caps1

first caps to compare

 

caps2

second caps to compare

 

gst_check_element_push_buffer_list ()

void
gst_check_element_push_buffer_list (const gchar *element_name,
                                    GList *buffer_in,
                                    GstCaps *caps_in,
                                    GList *buffer_out,
                                    GstCaps *caps_out,
                                    GstFlowReturn last_flow_return);

Create an element using the factory providing the element_name and push the buffers in buffer_in to this element. The element should create the buffers equal to the buffers in buffer_out . We only check the size and the data of the buffers. This function unrefs the buffers in the two lists. The last_flow_return parameter indicates the expected flow return value from pushing the final buffer in the list. This can be used to set up a test which pushes some buffers and then an invalid buffer, when the final buffer is expected to fail, for example.

Parameters

element_name

name of the element that needs to be created

 

buffer_in

a list of buffers that needs to be pushed to the element.

[element-type GstBuffer][transfer full]

caps_in

the GstCaps expected of the sinkpad of the element

 

buffer_out

a list of buffers that we expect from the element.

[element-type GstBuffer][transfer full]

caps_out

the GstCaps expected of the srcpad of the element

 

last_flow_return

the last buffer push needs to give this GstFlowReturn

 

gst_check_element_push_buffer ()

void
gst_check_element_push_buffer (const gchar *element_name,
                               GstBuffer *buffer_in,
                               GstCaps *caps_in,
                               GstBuffer *buffer_out,
                               GstCaps *caps_out);

Create an element using the factory providing the element_name and push the buffer_in to this element. The element should create one buffer and this will be compared with buffer_out . We only check the caps and the data of the buffers. This function unrefs the buffers.

Parameters

element_name

name of the element that needs to be created

 

buffer_in

push this buffer to the element

 

caps_in

the GstCaps expected of the sinkpad of the element

 

buffer_out

compare the result with this buffer

 

caps_out

the GstCaps expected of the srcpad of the element

 

gst_check_run_suite ()

gint
gst_check_run_suite (Suite *suite,
                     const gchar *name,
                     const gchar *fname);

gst_check_setup_events ()

void
gst_check_setup_events (GstPad *srcpad,
                        GstElement *element,
                        GstCaps *caps,
                        GstFormat format);

Push stream-start, caps and segment event, which consist of the minimum required events to allow streaming. Caps is optional to allow raw src testing. If element has more than one src or sink pad, use gst_check_setup_events_with_stream_id() instead.

Parameters

srcpad

The src GstPad to push on

 

element

The GstElement use to create the stream id

 

caps

GstCaps in case caps event must be sent.

[allow-none]

format

The GstFormat of the default segment to send

 

gst_check_setup_events_with_stream_id ()

void
gst_check_setup_events_with_stream_id (GstPad *srcpad,
                                       GstElement *element,
                                       GstCaps *caps,
                                       GstFormat format,
                                       const gchar *stream_id);

Push stream-start, caps and segment event, which consist of the minimum required events to allow streaming. Caps is optional to allow raw src testing.

Parameters

srcpad

The src GstPad to push on

 

element

The GstElement use to create the stream id

 

caps

GstCaps in case caps event must be sent.

[allow-none]

format

The GstFormat of the default segment to send

 

stream_id

A unique identifier for the stream

 

gst_check_setup_sink_pad_by_name_from_template ()

GstPad *
gst_check_setup_sink_pad_by_name_from_template
                               (GstElement *element,
                                GstPadTemplate *tmpl,
                                const gchar *name);

Parameters

element

element to setup pad on

 

tmpl

pad template

 

name

name

 

Returns

a new pad.

[transfer full]

Since: 1.4


gst_check_setup_sink_pad_from_template ()

GstPad *
gst_check_setup_sink_pad_from_template
                               (GstElement *element,
                                GstPadTemplate *tmpl);

Parameters

element

element to setup pad on

 

tmpl

pad template

 

Returns

a new pad.

[transfer full]

Since: 1.4


gst_check_setup_src_pad_by_name_from_template ()

GstPad *
gst_check_setup_src_pad_by_name_from_template
                               (GstElement *element,
                                GstPadTemplate *tmpl,
                                const gchar *name);

Parameters

element

element to setup pad on

 

tmpl

pad template

 

name

name

 

Returns

a new pad.

[transfer full]

Since: 1.4


gst_check_setup_src_pad_from_template ()

GstPad *
gst_check_setup_src_pad_from_template (GstElement *element,
                                       GstPadTemplate *tmpl);

Parameters

element

element to setup pad on

 

tmpl

pad template

 

Returns

a new pad.

[transfer full]

Since: 1.4


gst_check_objects_destroyed_on_unref ()

void
gst_check_objects_destroyed_on_unref (gpointer object_to_unref,
                                      gpointer first_object,
                                      ...);

Unrefs object_to_unref and checks that is has properly been destroyed, also checks that the other objects passed in parametter have been destroyed as a concequence of unrefing object_to_unref . Last variable argument should be NULL.

Parameters

object_to_unref

The GObject to unref

 

first_object

The first object that should be destroyed as a concequence of unrefing object_to_unref .

[allow-none]

...

Additional object that should have been destroyed.

 

Since: 1.6


gst_check_object_destroyed_on_unref ()

void
gst_check_object_destroyed_on_unref (gpointer object_to_unref);

Unrefs object_to_unref and checks that is has properly been destroyed.

Parameters

object_to_unref

The GObject to unref

 

Since: 1.6

Types and Values

GST_END_TEST

#define             GST_END_TEST

wrapper for checks END_TEST