## 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 ()

## Types and Values

#define | GST_END_TEST

## Object Hierarchy

## 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.

## 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);

#### Parameters

element | element to setup pad on |
tmpl | pad template |

#### Returns

a new pad.

[transfer full]

### gst_check_setup_src_pad ()

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

#### Parameters

element | element to setup pad on |
tmpl | pad template |

#### Returns

a new pad.

[transfer full]

### gst_check_setup_sink_pad_by_name ()

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

#### Parameters

element | element to setup pad on |
tmpl | pad template |
name | name |

#### Returns

a new pad.

[transfer full]

### gst_check_setup_src_pad_by_name ()

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

#### Parameters

element | element to setup pad on |
tmpl | pad template |
name | name |

#### Returns

a new pad.

[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` with the factory with the 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 caps, 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 puched to the element. | [element-type GstBuffer][transfer full]
buffer_out | a list of buffers that we expect from the element. | [element-type GstBuffer][transfer full]
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` with the factory with the 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 |
buffer_out | compare the result with this buffer |

### 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 concist 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 concist 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 |

## Types and Values

### GST_END_TEST

    #define             GST_END_TEST

wrapper for checks END_TEST