mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-24 18:51:11 +00:00
119 lines
3.1 KiB
C
119 lines
3.1 KiB
C
/*
|
|
* Unittest for curlftpsink
|
|
*/
|
|
|
|
#include <gst/check/gstcheck.h>
|
|
#include <glib/gstdio.h>
|
|
#include <curl/curl.h>
|
|
|
|
static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
|
|
GST_PAD_SRC,
|
|
GST_PAD_ALWAYS,
|
|
GST_STATIC_CAPS_ANY);
|
|
|
|
static GstPad *srcpad;
|
|
|
|
static GstElement *sink;
|
|
|
|
static GstElement *
|
|
setup_curlftpsink (void)
|
|
{
|
|
GST_DEBUG ("setup_curlftpsink");
|
|
sink = gst_check_setup_element ("curlftpsink");
|
|
srcpad = gst_check_setup_src_pad (sink, &srctemplate);
|
|
gst_pad_set_active (srcpad, TRUE);
|
|
|
|
return sink;
|
|
}
|
|
|
|
static void
|
|
cleanup_curlftpsink (GstElement * sink)
|
|
{
|
|
GST_DEBUG ("cleanup_curlftpsink");
|
|
|
|
gst_check_teardown_src_pad (sink);
|
|
gst_check_teardown_element (sink);
|
|
}
|
|
|
|
GST_START_TEST (test_properties)
|
|
{
|
|
GstElement *sink;
|
|
gchar *res_location = NULL;
|
|
gchar *res_file_name = NULL;
|
|
gchar *res_ftp_port = NULL;
|
|
gboolean res_epsv_mode;
|
|
gboolean res_create_dirs;
|
|
|
|
sink = setup_curlftpsink ();
|
|
|
|
g_object_set (G_OBJECT (sink), "location", "mylocation", NULL);
|
|
g_object_set (G_OBJECT (sink), "file-name", "myfile", NULL);
|
|
g_object_set (G_OBJECT (sink), "ftp-port", "1.2.3.4:0", NULL);
|
|
g_object_set (G_OBJECT (sink), "epsv-mode", FALSE, NULL);
|
|
g_object_set (G_OBJECT (sink), "create-dirs", FALSE, NULL);
|
|
|
|
g_object_get (sink,
|
|
"location", &res_location,
|
|
"file-name", &res_file_name,
|
|
"ftp-port", &res_ftp_port,
|
|
"epsv-mode", &res_epsv_mode,
|
|
"create-dirs", &res_create_dirs,
|
|
NULL);
|
|
|
|
fail_unless (strncmp (res_location, "mylocation", strlen ("mylocation"))
|
|
== 0);
|
|
fail_unless (strncmp (res_file_name, "myfile", strlen ("myfile"))
|
|
== 0);
|
|
fail_unless (strncmp (res_ftp_port, "1.2.3.4:0", strlen ("1.2.3.4:0"))
|
|
== 0);
|
|
fail_unless (res_epsv_mode == FALSE);
|
|
fail_unless (res_create_dirs == FALSE);
|
|
g_free (res_location);
|
|
g_free (res_file_name);
|
|
g_free (res_ftp_port);
|
|
|
|
/* change properties */
|
|
g_object_set (G_OBJECT (sink), "location", "newlocation", NULL);
|
|
g_object_set (G_OBJECT (sink), "file-name", "newfilename", NULL);
|
|
g_object_set (G_OBJECT (sink), "ftp-port", "", NULL);
|
|
g_object_set (G_OBJECT (sink), "epsv-mode", TRUE, NULL);
|
|
g_object_set (G_OBJECT (sink), "create-dirs", TRUE, NULL);
|
|
|
|
g_object_get (sink,
|
|
"location", &res_location,
|
|
"file-name", &res_file_name,
|
|
"ftp-port", &res_ftp_port,
|
|
"epsv-mode", &res_epsv_mode,
|
|
"create-dirs", &res_create_dirs,
|
|
NULL);
|
|
|
|
fail_unless (strncmp (res_location, "newlocation", strlen ("newlocation"))
|
|
== 0);
|
|
fail_unless (strncmp (res_file_name, "newfilename", strlen ("newfilename"))
|
|
== 0);
|
|
fail_unless (strncmp (res_ftp_port, "", strlen (""))
|
|
== 0);
|
|
fail_unless (res_epsv_mode == TRUE);
|
|
fail_unless (res_create_dirs == TRUE);
|
|
g_free (res_location);
|
|
g_free (res_file_name);
|
|
g_free (res_ftp_port);
|
|
|
|
cleanup_curlftpsink (sink);
|
|
}
|
|
GST_END_TEST;
|
|
|
|
static Suite *
|
|
curlsink_suite (void)
|
|
{
|
|
Suite *s = suite_create ("curlftpsink");
|
|
TCase *tc_chain = tcase_create ("general");
|
|
|
|
suite_add_tcase (s, tc_chain);
|
|
tcase_set_timeout (tc_chain, 20);
|
|
tcase_add_test (tc_chain, test_properties);
|
|
|
|
return s;
|
|
}
|
|
|
|
GST_CHECK_MAIN (curlsink);
|