Top |
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_*).
#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.
#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.
#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.
#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.
#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.
#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.
Since: 1.2
#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.
Since: 1.2
#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.
Since: 1.2
#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.
Since: 1.2
#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.
#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.
#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.
#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.
#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.
#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.
Since: 1.2
#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.
Since: 1.2
#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.
Since: 1.2
#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.
Since: 1.2
void gst_check_message_error (GstMessage *message
,GstMessageType type
,GQuark domain
,gint code
);
GstElement *
gst_check_setup_element (const gchar *factory
);
setup an element for a filter test with mysrcpad and mysinkpad
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".
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".
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
.
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.
void gst_check_teardown_pad_by_name (GstElement *element
,const gchar *name
);
void
gst_check_drop_buffers (void
);
Unref and remove all buffers that are in the global buffers
GList,
emptying the list.
void gst_check_buffer_data (GstBuffer *buffer
,gconstpointer data
,gsize size
);
Compare the buffer contents with data
and size
.
void gst_check_caps_equal (GstCaps *caps1
,GstCaps *caps2
);
Compare two caps with gst_caps_is_equal and fail unless they are equal.
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.
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 |
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.
gint gst_check_run_suite (Suite *suite
,const gchar *name
,const gchar *fname
);
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.
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 |
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.
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 |
GstPad * gst_check_setup_sink_pad_by_name_from_template (GstElement *element
,GstPadTemplate *tmpl
,const gchar *name
);
Since: 1.4
GstPad * gst_check_setup_sink_pad_from_template (GstElement *element
,GstPadTemplate *tmpl
);
Since: 1.4
GstPad * gst_check_setup_src_pad_by_name_from_template (GstElement *element
,GstPadTemplate *tmpl
,const gchar *name
);
Since: 1.4
GstPad * gst_check_setup_src_pad_from_template (GstElement *element
,GstPadTemplate *tmpl
);
Since: 1.4
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.
object_to_unref |
The GObject to unref |
|
first_object |
The first object that should be destroyed as a
concequence of unrefing |
[allow-none] |
... |
Additional object that should have been destroyed. |
Since: 1.6