1 /*
2 * Unittest for curlftpsink
3 */
4
5 #include <gst/check/gstcheck.h>
6 #include <glib/gstdio.h>
7 #include <curl/curl.h>
8
9 static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
10 GST_PAD_SRC,
11 GST_PAD_ALWAYS,
12 GST_STATIC_CAPS_ANY);
13
14 static GstPad *srcpad;
15
16 static GstElement *sink;
17
18 static GstElement *
setup_curlftpsink(void)19 setup_curlftpsink (void)
20 {
21 GST_DEBUG ("setup_curlftpsink");
22 sink = gst_check_setup_element ("curlftpsink");
23 srcpad = gst_check_setup_src_pad (sink, &srctemplate);
24 fail_unless (gst_pad_set_active (srcpad, TRUE));
25
26 return sink;
27 }
28
29 static void
cleanup_curlftpsink(GstElement * sink)30 cleanup_curlftpsink (GstElement * sink)
31 {
32 GST_DEBUG ("cleanup_curlftpsink");
33
34 gst_check_teardown_src_pad (sink);
35 gst_check_teardown_element (sink);
36 }
37
GST_START_TEST(test_properties)38 GST_START_TEST (test_properties)
39 {
40 GstElement *sink;
41 gchar *res_location = NULL;
42 gchar *res_file_name = NULL;
43 gchar *res_ftp_port = NULL;
44 gchar *res_tmp_file_name = NULL;
45 gboolean res_create_tmpfile;
46 gboolean res_epsv_mode;
47 gboolean res_create_dirs;
48
49 sink = setup_curlftpsink ();
50
51 g_object_set (G_OBJECT (sink), "location", "mylocation", NULL);
52 g_object_set (G_OBJECT (sink), "file-name", "myfile", NULL);
53 g_object_set (G_OBJECT (sink), "ftp-port", "1.2.3.4:0", NULL);
54 g_object_set (G_OBJECT (sink), "epsv-mode", FALSE, NULL);
55 g_object_set (G_OBJECT (sink), "create-dirs", FALSE, NULL);
56 g_object_set (G_OBJECT (sink), "create-tmp-file", FALSE, NULL);
57 g_object_set (G_OBJECT (sink), "temp-file-name", "test_tmp_file_", NULL);
58
59 g_object_get (sink,
60 "location", &res_location,
61 "file-name", &res_file_name,
62 "ftp-port", &res_ftp_port,
63 "epsv-mode", &res_epsv_mode,
64 "create-dirs", &res_create_dirs,
65 "create-tmp-file", &res_create_tmpfile,
66 "temp-file-name", &res_tmp_file_name, NULL);
67
68 fail_unless (strncmp (res_location, "mylocation", strlen ("mylocation"))
69 == 0);
70 fail_unless (strncmp (res_file_name, "myfile", strlen ("myfile"))
71 == 0);
72 fail_unless (strncmp (res_ftp_port, "1.2.3.4:0", strlen ("1.2.3.4:0"))
73 == 0);
74 fail_unless (strncmp (res_tmp_file_name, "test_tmp_file_",
75 strlen ("test_tmp_file_"))
76 == 0);
77 fail_unless (res_epsv_mode == FALSE);
78 fail_unless (res_create_dirs == FALSE);
79 fail_unless (res_create_tmpfile == FALSE);
80
81 g_free (res_location);
82 g_free (res_file_name);
83 g_free (res_ftp_port);
84 g_free (res_tmp_file_name);
85
86 /* change properties */
87 g_object_set (G_OBJECT (sink), "location", "newlocation", NULL);
88 g_object_set (G_OBJECT (sink), "file-name", "newfilename", NULL);
89 g_object_set (G_OBJECT (sink), "ftp-port", "", NULL);
90 g_object_set (G_OBJECT (sink), "epsv-mode", TRUE, NULL);
91 g_object_set (G_OBJECT (sink), "create-dirs", TRUE, NULL);
92 g_object_set (G_OBJECT (sink), "create-tmp-file", TRUE, NULL);
93 g_object_set (G_OBJECT (sink), "temp-file-name", "test_tmp_file_", NULL);
94
95 g_object_get (sink,
96 "location", &res_location,
97 "file-name", &res_file_name,
98 "ftp-port", &res_ftp_port,
99 "epsv-mode", &res_epsv_mode,
100 "create-dirs", &res_create_dirs,
101 "create-tmp-file", &res_create_tmpfile,
102 "temp-file-name", &res_tmp_file_name, NULL);
103
104 fail_unless (strncmp (res_location, "newlocation", strlen ("newlocation"))
105 == 0);
106 fail_unless (strncmp (res_file_name, "newfilename", strlen ("newfilename"))
107 == 0);
108 fail_unless (strncmp (res_ftp_port, "", strlen (""))
109 == 0);
110 fail_unless (strncmp (res_tmp_file_name, "test_tmp_file_",
111 strlen ("test_tmp_file_"))
112 == 0);
113 fail_unless (res_epsv_mode == TRUE);
114 fail_unless (res_create_dirs == TRUE);
115 fail_unless (res_create_dirs == TRUE);
116 fail_unless (res_create_tmpfile == TRUE);
117
118 g_free (res_location);
119 g_free (res_file_name);
120 g_free (res_ftp_port);
121 g_free (res_tmp_file_name);
122
123 cleanup_curlftpsink (sink);
124 }
125
126 GST_END_TEST;
127
128 static Suite *
curlsink_suite(void)129 curlsink_suite (void)
130 {
131 Suite *s = suite_create ("curlftpsink");
132 TCase *tc_chain = tcase_create ("general");
133
134 suite_add_tcase (s, tc_chain);
135 tcase_set_timeout (tc_chain, 20);
136 tcase_add_test (tc_chain, test_properties);
137
138 return s;
139 }
140
141 GST_CHECK_MAIN (curlsink);
142