1 /* GStreamer unit tests for the RTSP support library
2 * Copyright (C) 2010 Andy Wingo <wingo@oblong.com>
3 * Copyright (C) 2015 Tim-Philipp Müller <tim@centricular.com>
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Library General Public License for more details.
14 *
15 * You should have received a copy of the GNU Library General Public
16 * License along with this library; if not, write to the
17 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
18 * Boston, MA 02110-1301, USA.
19 */
20
21 #ifdef HAVE_CONFIG_H
22 #include "config.h"
23 #endif
24
25 #include <gst/check/gstcheck.h>
26
27 #include <gst/rtsp/rtsp.h>
28 #include <string.h>
29
GST_START_TEST(test_rtsp_url_basic)30 GST_START_TEST (test_rtsp_url_basic)
31 {
32 GstRTSPUrl *url = NULL;
33 GstRTSPResult res;
34
35 res = gst_rtsp_url_parse ("rtsp://localhost/foo/bar", &url);
36 fail_unless (res == GST_RTSP_OK);
37 fail_unless (url != NULL);
38 fail_unless (url->transports & GST_RTSP_LOWER_TRANS_TCP);
39 fail_unless (url->transports & GST_RTSP_LOWER_TRANS_UDP);
40 fail_unless (url->transports & GST_RTSP_LOWER_TRANS_UDP_MCAST);
41 fail_unless (url->family == GST_RTSP_FAM_INET);
42 fail_unless (!url->user);
43 fail_unless (!url->passwd);
44 fail_unless (!strcmp (url->host, "localhost"));
45 /* fail_unless (url->port == GST_RTSP_DEFAULT_PORT); */
46 fail_unless (!strcmp (url->abspath, "/foo/bar"));
47 fail_unless (!url->query);
48
49 gst_rtsp_url_free (url);
50 }
51
52 GST_END_TEST;
53
GST_START_TEST(test_rtsp_url_components_1)54 GST_START_TEST (test_rtsp_url_components_1)
55 {
56 GstRTSPUrl *url = NULL;
57 GstRTSPResult res;
58 gchar **comps = NULL;
59
60 res = gst_rtsp_url_parse ("rtsp://localhost/foo/bar", &url);
61 fail_unless (res == GST_RTSP_OK);
62 fail_unless (url != NULL);
63
64 comps = gst_rtsp_url_decode_path_components (url);
65 fail_unless (comps != NULL);
66 fail_unless (g_strv_length (comps) == 3);
67 fail_unless (!strcmp (comps[0], ""));
68 fail_unless (!strcmp (comps[1], "foo"));
69 fail_unless (!strcmp (comps[2], "bar"));
70
71 g_strfreev (comps);
72 gst_rtsp_url_free (url);
73 }
74
75 GST_END_TEST;
76
GST_START_TEST(test_rtsp_url_components_2)77 GST_START_TEST (test_rtsp_url_components_2)
78 {
79 GstRTSPUrl *url = NULL;
80 GstRTSPResult res;
81 gchar **comps = NULL;
82
83 res = gst_rtsp_url_parse ("rtsp://localhost/foo%2Fbar/qux%20baz", &url);
84 fail_unless (res == GST_RTSP_OK);
85 fail_unless (url != NULL);
86
87 comps = gst_rtsp_url_decode_path_components (url);
88 fail_unless (comps != NULL);
89 fail_unless (g_strv_length (comps) == 3);
90 fail_unless (!strcmp (comps[0], ""));
91 fail_unless (!strcmp (comps[1], "foo/bar"));
92 fail_unless (!strcmp (comps[2], "qux baz"));
93
94 g_strfreev (comps);
95 gst_rtsp_url_free (url);
96 }
97
98 GST_END_TEST;
99
GST_START_TEST(test_rtsp_url_components_3)100 GST_START_TEST (test_rtsp_url_components_3)
101 {
102 GstRTSPUrl *url = NULL;
103 GstRTSPResult res;
104 gchar **comps = NULL;
105
106 res = gst_rtsp_url_parse ("rtsp://localhost/foo%00bar/qux%20baz", &url);
107 fail_unless (res == GST_RTSP_OK);
108 fail_unless (url != NULL);
109
110 comps = gst_rtsp_url_decode_path_components (url);
111 fail_unless (comps != NULL);
112 fail_unless (g_strv_length (comps) == 3);
113 fail_unless (!strcmp (comps[0], ""));
114 fail_unless (!strcmp (comps[1], "foo%00bar"));
115 fail_unless (!strcmp (comps[2], "qux baz"));
116
117 g_strfreev (comps);
118 gst_rtsp_url_free (url);
119 }
120
121 GST_END_TEST;
122
GST_START_TEST(test_rtsp_range_npt)123 GST_START_TEST (test_rtsp_range_npt)
124 {
125 GstRTSPTimeRange *range;
126 GstClockTime min, max;
127 gchar *str;
128
129 fail_unless (gst_rtsp_range_parse ("npt=", &range) == GST_RTSP_EINVAL);
130 fail_unless (gst_rtsp_range_parse ("npt=0", &range) == GST_RTSP_EINVAL);
131 fail_unless (gst_rtsp_range_parse ("npt=-", &range) == GST_RTSP_EINVAL);
132 fail_unless (gst_rtsp_range_parse ("npt=now", &range) == GST_RTSP_EINVAL);
133
134 fail_unless (gst_rtsp_range_parse ("npt=-now", &range) == GST_RTSP_OK);
135 fail_unless (range->unit == GST_RTSP_RANGE_NPT);
136 fail_unless (range->min.type == GST_RTSP_TIME_END);
137 fail_unless (range->max.type == GST_RTSP_TIME_NOW);
138 fail_unless (gst_rtsp_range_get_times (range, &min, &max));
139 fail_unless (min == GST_CLOCK_TIME_NONE);
140 fail_unless (max == GST_CLOCK_TIME_NONE);
141 str = gst_rtsp_range_to_string (range);
142 fail_unless_equals_string ("npt=-now", str);
143 GST_DEBUG ("%s", str);
144 g_free (str);
145 gst_rtsp_range_free (range);
146
147 fail_unless (gst_rtsp_range_parse ("npt=now-now", &range) == GST_RTSP_OK);
148 fail_unless (range->unit == GST_RTSP_RANGE_NPT);
149 fail_unless (range->min.type == GST_RTSP_TIME_NOW);
150 fail_unless (range->max.type == GST_RTSP_TIME_NOW);
151 str = gst_rtsp_range_to_string (range);
152 fail_unless_equals_string ("npt=now-now", str);
153 GST_DEBUG ("%s", str);
154 g_free (str);
155 gst_rtsp_range_free (range);
156
157 fail_unless (gst_rtsp_range_parse ("npt=now-", &range) == GST_RTSP_OK);
158 fail_unless (range->unit == GST_RTSP_RANGE_NPT);
159 fail_unless (range->min.type == GST_RTSP_TIME_NOW);
160 fail_unless (range->max.type == GST_RTSP_TIME_END);
161 str = gst_rtsp_range_to_string (range);
162 fail_unless_equals_string ("npt=now-", str);
163 GST_DEBUG ("%s", str);
164 g_free (str);
165 gst_rtsp_range_free (range);
166
167 fail_unless (gst_rtsp_range_parse ("npt=now-34.12", &range) == GST_RTSP_OK);
168 fail_unless (range->unit == GST_RTSP_RANGE_NPT);
169 fail_unless (range->min.type == GST_RTSP_TIME_NOW);
170 fail_unless (range->max.type == GST_RTSP_TIME_SECONDS);
171 fail_unless (range->max.seconds == 34.12);
172 fail_unless (gst_rtsp_range_get_times (range, &min, &max));
173 fail_unless (min == GST_CLOCK_TIME_NONE);
174 fail_unless (max == 34120000000);
175 str = gst_rtsp_range_to_string (range);
176 fail_unless_equals_string ("npt=now-34.12", str);
177 GST_DEBUG ("%s", str);
178 g_free (str);
179 gst_rtsp_range_free (range);
180
181 fail_unless (gst_rtsp_range_parse ("npt=23,89-now", &range) == GST_RTSP_OK);
182 fail_unless (range->unit == GST_RTSP_RANGE_NPT);
183 fail_unless (range->min.type == GST_RTSP_TIME_SECONDS);
184 fail_unless (range->min.seconds == 23.89);
185 fail_unless (range->max.type == GST_RTSP_TIME_NOW);
186 fail_unless (gst_rtsp_range_get_times (range, &min, &max));
187 fail_unless (min == 23890000000);
188 fail_unless (max == GST_CLOCK_TIME_NONE);
189 str = gst_rtsp_range_to_string (range);
190 fail_unless_equals_string ("npt=23.89-now", str);
191 GST_DEBUG ("%s", str);
192 g_free (str);
193 gst_rtsp_range_free (range);
194
195 fail_unless (gst_rtsp_range_parse ("npt=-12.09", &range) == GST_RTSP_OK);
196 fail_unless (range->unit == GST_RTSP_RANGE_NPT);
197 fail_unless (range->min.type == GST_RTSP_TIME_END);
198 fail_unless (range->max.type == GST_RTSP_TIME_SECONDS);
199 fail_unless (range->max.seconds == 12.09);
200 fail_unless (gst_rtsp_range_get_times (range, &min, &max));
201 fail_unless (min == GST_CLOCK_TIME_NONE);
202 fail_unless (max == 12090000000);
203 str = gst_rtsp_range_to_string (range);
204 fail_unless_equals_string ("npt=-12.09", str);
205 GST_DEBUG ("%s", str);
206 g_free (str);
207 gst_rtsp_range_free (range);
208
209 fail_unless (gst_rtsp_range_parse ("npt=0-", &range) == GST_RTSP_OK);
210 fail_unless (range->unit == GST_RTSP_RANGE_NPT);
211 fail_unless (range->min.type == GST_RTSP_TIME_SECONDS);
212 fail_unless (range->min.seconds == 0.0);
213 fail_unless (range->max.type == GST_RTSP_TIME_END);
214 fail_unless (gst_rtsp_range_get_times (range, &min, &max));
215 fail_unless (min == 0);
216 fail_unless (max == GST_CLOCK_TIME_NONE);
217 str = gst_rtsp_range_to_string (range);
218 fail_unless_equals_string ("npt=0-", str);
219 GST_DEBUG ("%s", str);
220 g_free (str);
221 gst_rtsp_range_free (range);
222
223
224 fail_unless (gst_rtsp_range_parse ("npt=1.123-", &range) == GST_RTSP_OK);
225 fail_unless (range->unit == GST_RTSP_RANGE_NPT);
226 fail_unless (range->min.type == GST_RTSP_TIME_SECONDS);
227 fail_unless (range->min.seconds == 1.123);
228 fail_unless (range->max.type == GST_RTSP_TIME_END);
229 fail_unless (gst_rtsp_range_get_times (range, &min, &max));
230 fail_unless (min == 1123000000);
231 fail_unless (max == GST_CLOCK_TIME_NONE);
232 str = gst_rtsp_range_to_string (range);
233 fail_unless_equals_string ("npt=1.123-", str);
234 GST_DEBUG ("%s", str);
235 g_free (str);
236 gst_rtsp_range_free (range);
237
238 fail_unless (gst_rtsp_range_parse ("npt=10,20-20.10", &range) == GST_RTSP_OK);
239 fail_unless (range->unit == GST_RTSP_RANGE_NPT);
240 fail_unless (range->min.type == GST_RTSP_TIME_SECONDS);
241 fail_unless (range->min.seconds == 10.20);
242 fail_unless (range->max.type == GST_RTSP_TIME_SECONDS);
243 fail_unless (range->max.seconds == 20.10);
244 fail_unless (gst_rtsp_range_get_times (range, &min, &max));
245 fail_unless (min == 10200000000);
246 fail_unless (max == 20100000000);
247 str = gst_rtsp_range_to_string (range);
248 fail_unless_equals_string ("npt=10.2-20.1", str);
249 GST_DEBUG ("%s", str);
250 g_free (str);
251 gst_rtsp_range_free (range);
252
253 fail_unless (gst_rtsp_range_parse ("npt=500-15.001", &range) == GST_RTSP_OK);
254 fail_unless (range->unit == GST_RTSP_RANGE_NPT);
255 fail_unless (range->min.type == GST_RTSP_TIME_SECONDS);
256 fail_unless (range->min.seconds == 500);
257 fail_unless (range->max.type == GST_RTSP_TIME_SECONDS);
258 fail_unless (range->max.seconds == 15.001);
259 fail_unless (gst_rtsp_range_get_times (range, &min, &max));
260 fail_unless (min == 500000000000);
261 fail_unless (max == 15001000000);
262 str = gst_rtsp_range_to_string (range);
263 fail_unless_equals_string ("npt=500-15.001", str);
264 GST_DEBUG ("%s", str);
265 g_free (str);
266 gst_rtsp_range_free (range);
267
268 fail_unless (gst_rtsp_range_parse ("npt=20:34.23-",
269 &range) == GST_RTSP_EINVAL);
270 fail_unless (gst_rtsp_range_parse ("npt=10:20;34.23-",
271 &range) == GST_RTSP_EINVAL);
272 fail_unless (gst_rtsp_range_parse ("npt=0:4.23-", &range) == GST_RTSP_EINVAL);
273
274 fail_unless (gst_rtsp_range_parse ("npt=20:12:34.23-21:45:00.01",
275 &range) == GST_RTSP_OK);
276 fail_unless (range->unit == GST_RTSP_RANGE_NPT);
277 fail_unless (range->min.type == GST_RTSP_TIME_SECONDS);
278 fail_unless (range->min.seconds == 72754.23);
279 fail_unless (range->max.type == GST_RTSP_TIME_SECONDS);
280 fail_unless (range->max.seconds == 78300.01);
281 fail_unless (gst_rtsp_range_get_times (range, &min, &max));
282 fail_unless (min == 72754230000000);
283 fail_unless (max == 78300010000000);
284 str = gst_rtsp_range_to_string (range);
285 fail_unless_equals_string ("npt=72754.23-78300.01", str);
286 GST_DEBUG ("%s", str);
287 g_free (str);
288 gst_rtsp_range_free (range);
289 }
290
291 GST_END_TEST;
292
GST_START_TEST(test_rtsp_range_smpte)293 GST_START_TEST (test_rtsp_range_smpte)
294 {
295 GstClockTime min, max;
296 GstRTSPTimeRange *range;
297 gchar *str;
298
299 fail_unless (gst_rtsp_range_parse ("smpte=", &range) == GST_RTSP_EINVAL);
300 fail_unless (gst_rtsp_range_parse ("smpte=10:34:23",
301 &range) == GST_RTSP_EINVAL);
302 fail_unless (gst_rtsp_range_parse ("smpte=-", &range) == GST_RTSP_EINVAL);
303 fail_unless (gst_rtsp_range_parse ("smpte=-12:09:34",
304 &range) == GST_RTSP_EINVAL);
305 fail_unless (gst_rtsp_range_parse ("smpte=12:09:34",
306 &range) == GST_RTSP_EINVAL);
307
308 fail_unless (gst_rtsp_range_parse ("smpte=00:00:00-", &range) == GST_RTSP_OK);
309 fail_unless (range->unit == GST_RTSP_RANGE_SMPTE);
310 fail_unless (range->min.type == GST_RTSP_TIME_FRAMES);
311 fail_unless (range->min.seconds == 0.0);
312 fail_unless (range->min2.frames == 0.0);
313 fail_unless (range->max.type == GST_RTSP_TIME_END);
314 fail_unless (gst_rtsp_range_get_times (range, &min, &max));
315 fail_unless (min == 0);
316 fail_unless (max == GST_CLOCK_TIME_NONE);
317 str = gst_rtsp_range_to_string (range);
318 fail_unless_equals_string ("smpte=0:00:00-", str);
319 GST_DEBUG ("%s", str);
320 g_free (str);
321 gst_rtsp_range_free (range);
322
323 fail_unless (gst_rtsp_range_parse ("smpte=10:34:23-20:12:09:20.89",
324 &range) == GST_RTSP_OK);
325 fail_unless (range->unit == GST_RTSP_RANGE_SMPTE);
326 fail_unless (range->min.type == GST_RTSP_TIME_FRAMES);
327 fail_unless (range->min.seconds == 38063.0);
328 fail_unless (range->min2.frames == 0.0);
329 fail_unless (range->max.type == GST_RTSP_TIME_FRAMES);
330 fail_unless (range->max.seconds == 72729.0);
331 fail_unless (range->max2.frames == 20.89);
332 fail_unless (gst_rtsp_range_get_times (range, &min, &max));
333 fail_unless (min == 38063000000000);
334 /* 20.89 * GST_SECOND * 1001 / 30003 */
335 fail_unless (max == 72729000000000 + 696959970);
336 str = gst_rtsp_range_to_string (range);
337 fail_unless_equals_string ("smpte=10:34:23-20:12:09:20.89", str);
338 GST_DEBUG ("%s", str);
339 g_free (str);
340 gst_rtsp_range_free (range);
341
342 fail_unless (gst_rtsp_range_parse ("smpte-25=10:34:23-20:12:09:20.89",
343 &range) == GST_RTSP_OK);
344 fail_unless (range->unit == GST_RTSP_RANGE_SMPTE_25);
345 fail_unless (range->min.type == GST_RTSP_TIME_FRAMES);
346 fail_unless (range->min.seconds == 38063.0);
347 fail_unless (range->min2.frames == 0.0);
348 fail_unless (range->max.type == GST_RTSP_TIME_FRAMES);
349 fail_unless (range->max.seconds == 72729.0);
350 fail_unless (range->max2.frames == 20.89);
351 fail_unless (gst_rtsp_range_get_times (range, &min, &max));
352 fail_unless (min == 38063000000000);
353 GST_DEBUG ("%" GST_TIME_FORMAT, GST_TIME_ARGS (max));
354 /* 20.89 * GST_SECOND * 1 / 25 */
355 fail_unless (max == 72729000000000 + 835600000);
356 str = gst_rtsp_range_to_string (range);
357 GST_DEBUG ("%s", str);
358 fail_unless_equals_string ("smpte-25=10:34:23-20:12:09:20.89", str);
359 g_free (str);
360 gst_rtsp_range_free (range);
361
362 fail_unless (gst_rtsp_range_parse ("smpte-25=0:00:00:00.01-9:59:59:24.99",
363 &range) == GST_RTSP_OK);
364 fail_unless (range->unit == GST_RTSP_RANGE_SMPTE_25);
365 fail_unless (range->min.type == GST_RTSP_TIME_FRAMES);
366 fail_unless (range->min.seconds == 0);
367 fail_unless (range->min2.frames == 0.01);
368 fail_unless (range->max.type == GST_RTSP_TIME_FRAMES);
369 fail_unless (range->max.seconds == 35999);
370 fail_unless (range->max2.frames == 24.99);
371 fail_unless (gst_rtsp_range_get_times (range, &min, &max));
372 fail_unless (min == 400000);
373 GST_DEBUG ("%" GST_TIME_FORMAT, GST_TIME_ARGS (max));
374 /* 35999 + (24.99/25) */
375 fail_unless (max == 35999999600000);
376 str = gst_rtsp_range_to_string (range);
377 GST_DEBUG ("%s", str);
378 fail_unless_equals_string ("smpte-25=0:00:00:00.01-9:59:59:24.99", str);
379 g_free (str);
380 gst_rtsp_range_free (range);
381 }
382
383 GST_END_TEST;
384
GST_START_TEST(test_rtsp_range_clock)385 GST_START_TEST (test_rtsp_range_clock)
386 {
387 GstRTSPTimeRange *range;
388 gchar *str;
389
390 fail_unless (gst_rtsp_range_parse ("clock=", &range) == GST_RTSP_EINVAL);
391 fail_unless (gst_rtsp_range_parse ("clock=20001010T120023Z",
392 &range) == GST_RTSP_EINVAL);
393 fail_unless (gst_rtsp_range_parse ("clock=-", &range) == GST_RTSP_EINVAL);
394 fail_unless (gst_rtsp_range_parse ("clock=-20001010T120934Z",
395 &range) == GST_RTSP_EINVAL);
396
397 fail_unless (gst_rtsp_range_parse ("clock=20001010T122345Z-",
398 &range) == GST_RTSP_OK);
399 fail_unless (range->unit == GST_RTSP_RANGE_CLOCK);
400 fail_unless (range->min.type == GST_RTSP_TIME_UTC);
401 fail_unless (range->min2.year == 2000);
402 fail_unless (range->min2.month == 10);
403 fail_unless (range->min2.day == 10);
404 fail_unless (range->min.seconds == 44625.0);
405 fail_unless (range->max.type == GST_RTSP_TIME_END);
406 str = gst_rtsp_range_to_string (range);
407 fail_unless_equals_string ("clock=20001010T122345Z-", str);
408 GST_DEBUG ("%s", str);
409 g_free (str);
410 gst_rtsp_range_free (range);
411
412 fail_unless (gst_rtsp_range_parse
413 ("clock=19700101T103423Z-30001230T201209.89Z", &range) == GST_RTSP_OK);
414 fail_unless (range->unit == GST_RTSP_RANGE_CLOCK);
415 fail_unless (range->min.type == GST_RTSP_TIME_UTC);
416 fail_unless (range->min2.year == 1970);
417 fail_unless (range->min2.month == 1);
418 fail_unless (range->min2.day == 1);
419 fail_unless (range->min.seconds == 38063.0);
420 fail_unless (range->max.type == GST_RTSP_TIME_UTC);
421 fail_unless (range->max2.year == 3000);
422 fail_unless (range->max2.month == 12);
423 fail_unless (range->max2.day == 30);
424 fail_unless (range->max.seconds == 72729.89);
425 str = gst_rtsp_range_to_string (range);
426 fail_unless_equals_string ("clock=19700101T103423Z-30001230T201209.89Z", str);
427 GST_DEBUG ("%s", str);
428 g_free (str);
429 gst_rtsp_range_free (range);
430 }
431
432 GST_END_TEST;
433
434
GST_START_TEST(test_rtsp_range_convert)435 GST_START_TEST (test_rtsp_range_convert)
436 {
437 GstRTSPTimeRange *range;
438 gchar *str;
439
440 fail_unless (gst_rtsp_range_parse ("npt=now-100", &range) == GST_RTSP_OK);
441 fail_unless (gst_rtsp_range_convert_units (range, GST_RTSP_RANGE_NPT));
442 fail_unless (!gst_rtsp_range_convert_units (range, GST_RTSP_RANGE_CLOCK));
443 fail_unless (!gst_rtsp_range_convert_units (range, GST_RTSP_RANGE_SMPTE));
444 str = gst_rtsp_range_to_string (range);
445 fail_unless_equals_string (str, "npt=now-100");
446 g_free (str);
447 gst_rtsp_range_free (range);
448
449 fail_unless (gst_rtsp_range_parse ("npt=0-100", &range) == GST_RTSP_OK);
450 fail_unless (gst_rtsp_range_convert_units (range, GST_RTSP_RANGE_SMPTE));
451 fail_unless (gst_rtsp_range_convert_units (range, GST_RTSP_RANGE_NPT));
452 str = gst_rtsp_range_to_string (range);
453 fail_unless_equals_string (str, "npt=0-100");
454 g_free (str);
455 gst_rtsp_range_free (range);
456
457 fail_unless (gst_rtsp_range_parse ("npt=0-100", &range) == GST_RTSP_OK);
458 fail_unless (gst_rtsp_range_convert_units (range, GST_RTSP_RANGE_SMPTE_25));
459 fail_unless (gst_rtsp_range_convert_units (range, GST_RTSP_RANGE_NPT));
460 str = gst_rtsp_range_to_string (range);
461 fail_unless_equals_string (str, "npt=0-100");
462 g_free (str);
463 gst_rtsp_range_free (range);
464
465 fail_unless (gst_rtsp_range_parse ("npt=0-100", &range) == GST_RTSP_OK);
466 fail_unless (gst_rtsp_range_convert_units (range, GST_RTSP_RANGE_CLOCK));
467 fail_unless (gst_rtsp_range_convert_units (range, GST_RTSP_RANGE_NPT));
468 str = gst_rtsp_range_to_string (range);
469 fail_unless_equals_string (str, "npt=0-100");
470 g_free (str);
471 gst_rtsp_range_free (range);
472
473 fail_unless (gst_rtsp_range_parse ("smpte-25=10:07:00-10:07:33:05.01", &range)
474 == GST_RTSP_OK);
475 fail_unless (gst_rtsp_range_convert_units (range, GST_RTSP_RANGE_NPT));
476 fail_unless (gst_rtsp_range_convert_units (range, GST_RTSP_RANGE_SMPTE_25));
477 str = gst_rtsp_range_to_string (range);
478 fail_unless_equals_string (str, "smpte-25=10:07:00-10:07:33:05.01");
479 g_free (str);
480 gst_rtsp_range_free (range);
481
482 fail_unless (gst_rtsp_range_parse ("smpte=77:07:59-", &range)
483 == GST_RTSP_OK);
484 fail_unless (gst_rtsp_range_convert_units (range, GST_RTSP_RANGE_NPT));
485 fail_unless (gst_rtsp_range_convert_units (range, GST_RTSP_RANGE_SMPTE));
486 str = gst_rtsp_range_to_string (range);
487 fail_unless_equals_string (str, "smpte=77:07:59-");
488 g_free (str);
489 gst_rtsp_range_free (range);
490
491 fail_unless (gst_rtsp_range_parse ("smpte=10:07:00-10:07:33:05.01", &range)
492 == GST_RTSP_OK);
493 fail_unless (gst_rtsp_range_convert_units (range, GST_RTSP_RANGE_NPT));
494 fail_unless (gst_rtsp_range_convert_units (range, GST_RTSP_RANGE_SMPTE));
495 str = gst_rtsp_range_to_string (range);
496 fail_unless_equals_string (str, "smpte=10:07:00-10:07:33:05.01");
497 g_free (str);
498 gst_rtsp_range_free (range);
499
500 fail_unless (gst_rtsp_range_parse ("smpte-25=10:07:00-10:07:33:05.01", &range)
501 == GST_RTSP_OK);
502 fail_unless (gst_rtsp_range_convert_units (range, GST_RTSP_RANGE_CLOCK));
503 fail_unless (gst_rtsp_range_convert_units (range, GST_RTSP_RANGE_SMPTE_25));
504 str = gst_rtsp_range_to_string (range);
505 fail_unless_equals_string (str, "smpte-25=10:07:00-10:07:33:05.01");
506 g_free (str);
507 gst_rtsp_range_free (range);
508
509 fail_unless (gst_rtsp_range_parse ("smpte=10:07:00-10:07:33:05.01", &range)
510 == GST_RTSP_OK);
511 fail_unless (gst_rtsp_range_convert_units (range, GST_RTSP_RANGE_CLOCK));
512 fail_unless (gst_rtsp_range_convert_units (range, GST_RTSP_RANGE_SMPTE));
513 str = gst_rtsp_range_to_string (range);
514 fail_unless_equals_string (str, "smpte=10:07:00-10:07:33:05.01");
515 g_free (str);
516 gst_rtsp_range_free (range);
517
518 fail_unless (gst_rtsp_range_parse
519 ("clock=20001010T120023Z-20320518T152245.12Z", &range)
520 == GST_RTSP_OK);
521 fail_unless (gst_rtsp_range_convert_units (range, GST_RTSP_RANGE_NPT));
522 fail_unless (gst_rtsp_range_convert_units (range, GST_RTSP_RANGE_CLOCK));
523 str = gst_rtsp_range_to_string (range);
524 fail_unless_equals_string (str, "clock=20001010T120023Z-20320518T152245.12Z");
525 g_free (str);
526 gst_rtsp_range_free (range);
527
528 fail_unless (gst_rtsp_range_parse
529 ("clock=20001010T120023Z-20320518T152245.12Z", &range)
530 == GST_RTSP_OK);
531 fail_unless (gst_rtsp_range_convert_units (range, GST_RTSP_RANGE_SMPTE));
532 fail_unless (gst_rtsp_range_convert_units (range, GST_RTSP_RANGE_CLOCK));
533 str = gst_rtsp_range_to_string (range);
534 fail_unless_equals_string (str, "clock=20001010T120023Z-20320518T152245.12Z");
535 g_free (str);
536 gst_rtsp_range_free (range);
537 }
538
539 GST_END_TEST;
540
GST_START_TEST(test_rtsp_message)541 GST_START_TEST (test_rtsp_message)
542 {
543 GstRTSPMessage *msg;
544 GstRTSPResult res;
545 gchar *val = NULL;
546
547 res = gst_rtsp_message_new_request (&msg, GST_RTSP_PLAY,
548 "rtsp://foo.bar:8554/test");
549 fail_unless_equals_int (res, GST_RTSP_OK);
550
551 res = gst_rtsp_message_add_header (msg, GST_RTSP_HDR_CSEQ, "3");
552 fail_unless_equals_int (res, GST_RTSP_OK);
553 res = gst_rtsp_message_add_header (msg, GST_RTSP_HDR_SERVER, "GStreamer");
554 fail_unless_equals_int (res, GST_RTSP_OK);
555 res = gst_rtsp_message_add_header (msg, GST_RTSP_HDR_TRANSPORT,
556 "RTP/AVP/TCP;unicast;interleaved=0-1");
557 fail_unless_equals_int (res, GST_RTSP_OK);
558 res = gst_rtsp_message_add_header (msg, GST_RTSP_HDR_SESSION, "xnb_NpaKEc");
559 fail_unless_equals_int (res, GST_RTSP_OK);
560
561 res = gst_rtsp_message_add_header_by_name (msg, "FOO99-Version", "bar.0");
562 fail_unless_equals_int (res, GST_RTSP_OK);
563 res = gst_rtsp_message_add_header_by_name (msg, "Custom", "value");
564 fail_unless_equals_int (res, GST_RTSP_OK);
565 res = gst_rtsp_message_add_header_by_name (msg, "FOO99-Version", "bar.1");
566 fail_unless_equals_int (res, GST_RTSP_OK);
567 res = gst_rtsp_message_add_header_by_name (msg, "FOO99-Version", "bar.2");
568 fail_unless_equals_int (res, GST_RTSP_OK);
569
570 /* make sure fields added via enum work as well */
571 res = gst_rtsp_message_get_header_by_name (msg, "CSeq", &val, 0);
572 fail_unless_equals_int (res, GST_RTSP_OK);
573 fail_unless_equals_string (val, "3");
574 res = gst_rtsp_message_get_header_by_name (msg, "CSeq", &val, 1);
575 fail_unless_equals_int (res, GST_RTSP_ENOTIMPL);
576
577 res = gst_rtsp_message_get_header (msg, GST_RTSP_HDR_CSEQ, &val, 0);
578 fail_unless_equals_int (res, GST_RTSP_OK);
579 fail_unless_equals_string (val, "3");
580 res = gst_rtsp_message_get_header (msg, GST_RTSP_HDR_CSEQ, &val, 1);
581 fail_unless_equals_int (res, GST_RTSP_ENOTIMPL);
582
583 res = gst_rtsp_message_get_header_by_name (msg, "DoesNotExist", &val, 0);
584 fail_unless_equals_int (res, GST_RTSP_ENOTIMPL);
585
586 res = gst_rtsp_message_get_header_by_name (msg, "Custom", &val, 1);
587 fail_unless_equals_int (res, GST_RTSP_ENOTIMPL);
588 res = gst_rtsp_message_get_header_by_name (msg, "Custom", &val, 0);
589 fail_unless_equals_int (res, GST_RTSP_OK);
590 fail_unless_equals_string (val, "value");
591
592 res = gst_rtsp_message_get_header_by_name (msg, "FOO99-Version", &val, 3);
593 fail_unless_equals_int (res, GST_RTSP_ENOTIMPL);
594 res = gst_rtsp_message_get_header_by_name (msg, "FOO99-Version", &val, 1);
595 fail_unless_equals_int (res, GST_RTSP_OK);
596 fail_unless_equals_string (val, "bar.1");
597 res = gst_rtsp_message_get_header_by_name (msg, "FOO99-Version", &val, 2);
598 fail_unless_equals_int (res, GST_RTSP_OK);
599 fail_unless_equals_string (val, "bar.2");
600 res = gst_rtsp_message_get_header_by_name (msg, "FOO99-Version", &val, 0);
601 fail_unless_equals_int (res, GST_RTSP_OK);
602 fail_unless_equals_string (val, "bar.0");
603
604 res = gst_rtsp_message_remove_header_by_name (msg, "FOO99-Version", 3);
605 fail_unless_equals_int (res, GST_RTSP_ENOTIMPL);
606 res = gst_rtsp_message_remove_header_by_name (msg, "FOO99-Version", 1);
607 fail_unless_equals_int (res, GST_RTSP_OK);
608
609 res = gst_rtsp_message_get_header_by_name (msg, "FOO99-Version", &val, 2);
610 fail_unless_equals_int (res, GST_RTSP_ENOTIMPL);
611
612 /* 2 shifted to position 1 */
613 res = gst_rtsp_message_get_header_by_name (msg, "FOO99-Version", &val, 1);
614 fail_unless_equals_int (res, GST_RTSP_OK);
615 fail_unless_equals_string (val, "bar.2");
616 res = gst_rtsp_message_get_header_by_name (msg, "FOO99-Version", &val, 0);
617 fail_unless_equals_int (res, GST_RTSP_OK);
618 fail_unless_equals_string (val, "bar.0");
619
620 /* remove all headers for a name */
621 res = gst_rtsp_message_remove_header_by_name (msg, "FOO99-Version", -1);
622 fail_unless_equals_int (res, GST_RTSP_OK);
623 res = gst_rtsp_message_get_header_by_name (msg, "FOO99-Version", &val, 0);
624 fail_unless_equals_int (res, GST_RTSP_ENOTIMPL);
625
626 /* gst_rtsp_message_dump (msg); */
627
628 res = gst_rtsp_message_free (msg);
629 fail_unless_equals_int (res, GST_RTSP_OK);
630
631 /* === */
632
633 res = gst_rtsp_message_new_request (&msg, GST_RTSP_PLAY,
634 "rtsp://foo.bar:8554/test");
635 fail_unless_equals_int (res, GST_RTSP_OK);
636
637 res = gst_rtsp_message_add_header_by_name (msg, "CSeq", "3");
638 fail_unless_equals_int (res, GST_RTSP_OK);
639
640 res = gst_rtsp_message_get_header (msg, GST_RTSP_HDR_CSEQ, &val, 0);
641 fail_unless_equals_int (res, GST_RTSP_OK);
642 fail_unless_equals_string (val, "3");
643
644 val = NULL;
645 res = gst_rtsp_message_get_header_by_name (msg, "cseq", &val, 0);
646 fail_unless_equals_int (res, GST_RTSP_OK);
647 fail_unless_equals_string (val, "3");
648
649 res = gst_rtsp_message_free (msg);
650 fail_unless_equals_int (res, GST_RTSP_OK);
651 }
652
653 GST_END_TEST;
654
GST_START_TEST(test_rtsp_message_auth_credentials)655 GST_START_TEST (test_rtsp_message_auth_credentials)
656 {
657 GstRTSPMessage *msg;
658 GstRTSPResult res;
659 GstRTSPAuthCredential **credentials;
660 GstRTSPAuthCredential **credential;
661 GstRTSPAuthParam **param;
662
663 /* Simple basic auth, no params */
664 res = gst_rtsp_message_new_request (&msg, GST_RTSP_PLAY,
665 "rtsp://foo.bar:8554/test");
666 fail_unless_equals_int (res, GST_RTSP_OK);
667 res =
668 gst_rtsp_message_add_header (msg, GST_RTSP_HDR_WWW_AUTHENTICATE, "Basic");
669 credentials =
670 gst_rtsp_message_parse_auth_credentials (msg,
671 GST_RTSP_HDR_WWW_AUTHENTICATE);
672 fail_unless (credentials != NULL);
673
674 credential = credentials;
675 fail_unless_equals_int ((*credential)->scheme, GST_RTSP_AUTH_BASIC);
676 param = (*credential)->params;
677 fail_unless (param == NULL);
678 credential++;
679 fail_unless (*credential == NULL);
680
681 gst_rtsp_auth_credentials_free (credentials);
682 res = gst_rtsp_message_free (msg);
683 fail_unless_equals_int (res, GST_RTSP_OK);
684
685 /* Simple basic auth, digest auth, no params */
686 res = gst_rtsp_message_new_request (&msg, GST_RTSP_PLAY,
687 "rtsp://foo.bar:8554/test");
688 fail_unless_equals_int (res, GST_RTSP_OK);
689 res =
690 gst_rtsp_message_add_header (msg, GST_RTSP_HDR_WWW_AUTHENTICATE,
691 "Basic Digest");
692 credentials =
693 gst_rtsp_message_parse_auth_credentials (msg,
694 GST_RTSP_HDR_WWW_AUTHENTICATE);
695 fail_unless (credentials != NULL);
696
697 credential = credentials;
698 fail_unless_equals_int ((*credential)->scheme, GST_RTSP_AUTH_BASIC);
699 param = (*credential)->params;
700 fail_unless (param == NULL);
701 credential++;
702 fail_unless_equals_int ((*credential)->scheme, GST_RTSP_AUTH_DIGEST);
703 param = (*credential)->params;
704 fail_unless (param == NULL);
705 credential++;
706 fail_unless (*credential == NULL);
707
708 gst_rtsp_auth_credentials_free (credentials);
709 res = gst_rtsp_message_free (msg);
710 fail_unless_equals_int (res, GST_RTSP_OK);
711
712 /* Simple basic auth */
713 res = gst_rtsp_message_new_request (&msg, GST_RTSP_PLAY,
714 "rtsp://foo.bar:8554/test");
715 fail_unless_equals_int (res, GST_RTSP_OK);
716 res =
717 gst_rtsp_message_add_header (msg, GST_RTSP_HDR_WWW_AUTHENTICATE,
718 "Basic foo=\"bar\", baz=foo");
719 credentials =
720 gst_rtsp_message_parse_auth_credentials (msg,
721 GST_RTSP_HDR_WWW_AUTHENTICATE);
722 fail_unless (credentials != NULL);
723
724 credential = credentials;
725 fail_unless_equals_int ((*credential)->scheme, GST_RTSP_AUTH_BASIC);
726 param = (*credential)->params;
727 fail_unless (param != NULL);
728 fail_unless (*param != NULL);
729 fail_unless_equals_string ((*param)->name, "foo");
730 fail_unless_equals_string ((*param)->value, "bar");
731 param++;
732 fail_unless (*param != NULL);
733 fail_unless_equals_string ((*param)->name, "baz");
734 fail_unless_equals_string ((*param)->value, "foo");
735 param++;
736 fail_unless (*param == NULL);
737 credential++;
738 fail_unless (*credential == NULL);
739
740 gst_rtsp_auth_credentials_free (credentials);
741 res = gst_rtsp_message_free (msg);
742 fail_unless_equals_int (res, GST_RTSP_OK);
743
744 /* Two simple basic auth headers */
745 res = gst_rtsp_message_new_request (&msg, GST_RTSP_PLAY,
746 "rtsp://foo.bar:8554/test");
747 fail_unless_equals_int (res, GST_RTSP_OK);
748 res =
749 gst_rtsp_message_add_header (msg, GST_RTSP_HDR_WWW_AUTHENTICATE,
750 "Basic foo=\"bar\", baz=foo");
751 res =
752 gst_rtsp_message_add_header (msg, GST_RTSP_HDR_WWW_AUTHENTICATE,
753 "Basic foo1=\"bar\", baz1=foo");
754 credentials =
755 gst_rtsp_message_parse_auth_credentials (msg,
756 GST_RTSP_HDR_WWW_AUTHENTICATE);
757 fail_unless (credentials != NULL);
758
759 credential = credentials;
760 fail_unless_equals_int ((*credential)->scheme, GST_RTSP_AUTH_BASIC);
761 param = (*credential)->params;
762 fail_unless (param != NULL);
763 fail_unless (*param != NULL);
764 fail_unless_equals_string ((*param)->name, "foo");
765 fail_unless_equals_string ((*param)->value, "bar");
766 param++;
767 fail_unless (*param != NULL);
768 fail_unless_equals_string ((*param)->name, "baz");
769 fail_unless_equals_string ((*param)->value, "foo");
770 param++;
771 fail_unless (*param == NULL);
772 credential++;
773 fail_unless_equals_int ((*credential)->scheme, GST_RTSP_AUTH_BASIC);
774 param = (*credential)->params;
775 fail_unless (param != NULL);
776 fail_unless (*param != NULL);
777 fail_unless_equals_string ((*param)->name, "foo1");
778 fail_unless_equals_string ((*param)->value, "bar");
779 param++;
780 fail_unless (*param != NULL);
781 fail_unless_equals_string ((*param)->name, "baz1");
782 fail_unless_equals_string ((*param)->value, "foo");
783 param++;
784 fail_unless (*param == NULL);
785 credential++;
786 fail_unless (*credential == NULL);
787
788 gst_rtsp_auth_credentials_free (credentials);
789 res = gst_rtsp_message_free (msg);
790 fail_unless_equals_int (res, GST_RTSP_OK);
791
792 /* Simple basic auth, digest auth in one header */
793 res = gst_rtsp_message_new_request (&msg, GST_RTSP_PLAY,
794 "rtsp://foo.bar:8554/test");
795 fail_unless_equals_int (res, GST_RTSP_OK);
796 res =
797 gst_rtsp_message_add_header (msg, GST_RTSP_HDR_WWW_AUTHENTICATE,
798 "Basic foo=\"bar\", baz=foo Digest foo1=\"bar\", baz1=foo");
799 credentials =
800 gst_rtsp_message_parse_auth_credentials (msg,
801 GST_RTSP_HDR_WWW_AUTHENTICATE);
802 fail_unless (credentials != NULL);
803
804 credential = credentials;
805 fail_unless_equals_int ((*credential)->scheme, GST_RTSP_AUTH_BASIC);
806 param = (*credential)->params;
807 fail_unless (param != NULL);
808 fail_unless (*param != NULL);
809 fail_unless_equals_string ((*param)->name, "foo");
810 fail_unless_equals_string ((*param)->value, "bar");
811 param++;
812 fail_unless (*param != NULL);
813 fail_unless_equals_string ((*param)->name, "baz");
814 fail_unless_equals_string ((*param)->value, "foo");
815 param++;
816 fail_unless (*param == NULL);
817 credential++;
818 fail_unless_equals_int ((*credential)->scheme, GST_RTSP_AUTH_DIGEST);
819 param = (*credential)->params;
820 fail_unless (param != NULL);
821 fail_unless (*param != NULL);
822 fail_unless_equals_string ((*param)->name, "foo1");
823 fail_unless_equals_string ((*param)->value, "bar");
824 param++;
825 fail_unless (*param != NULL);
826 fail_unless_equals_string ((*param)->name, "baz1");
827 fail_unless_equals_string ((*param)->value, "foo");
828 param++;
829 fail_unless (*param == NULL);
830 credential++;
831 fail_unless (*credential == NULL);
832
833 gst_rtsp_auth_credentials_free (credentials);
834 res = gst_rtsp_message_free (msg);
835 fail_unless_equals_int (res, GST_RTSP_OK);
836
837 /* Simple basic auth, digest auth in one header, with random commas and spaces */
838 res = gst_rtsp_message_new_request (&msg, GST_RTSP_PLAY,
839 "rtsp://foo.bar:8554/test");
840 fail_unless_equals_int (res, GST_RTSP_OK);
841 res =
842 gst_rtsp_message_add_header (msg, GST_RTSP_HDR_WWW_AUTHENTICATE,
843 "Basic foo=\"bar\",, , baz=foo, Digest , foo1=\"bar\",, baz1=foo");
844 credentials =
845 gst_rtsp_message_parse_auth_credentials (msg,
846 GST_RTSP_HDR_WWW_AUTHENTICATE);
847 fail_unless (credentials != NULL);
848
849 credential = credentials;
850 fail_unless_equals_int ((*credential)->scheme, GST_RTSP_AUTH_BASIC);
851 param = (*credential)->params;
852 fail_unless (param != NULL);
853 fail_unless (*param != NULL);
854 fail_unless_equals_string ((*param)->name, "foo");
855 fail_unless_equals_string ((*param)->value, "bar");
856 param++;
857 fail_unless (*param != NULL);
858 fail_unless_equals_string ((*param)->name, "baz");
859 fail_unless_equals_string ((*param)->value, "foo");
860 param++;
861 fail_unless (*param == NULL);
862 credential++;
863 fail_unless_equals_int ((*credential)->scheme, GST_RTSP_AUTH_DIGEST);
864 param = (*credential)->params;
865 fail_unless (param != NULL);
866 fail_unless (*param != NULL);
867 fail_unless_equals_string ((*param)->name, "foo1");
868 fail_unless_equals_string ((*param)->value, "bar");
869 param++;
870 fail_unless (*param != NULL);
871 fail_unless_equals_string ((*param)->name, "baz1");
872 fail_unless_equals_string ((*param)->value, "foo");
873 param++;
874 fail_unless (*param == NULL);
875 credential++;
876 fail_unless (*credential == NULL);
877
878 gst_rtsp_auth_credentials_free (credentials);
879 res = gst_rtsp_message_free (msg);
880 fail_unless_equals_int (res, GST_RTSP_OK);
881
882 /* Simple basic auth */
883 res = gst_rtsp_message_new_request (&msg, GST_RTSP_PLAY,
884 "rtsp://foo.bar:8554/test");
885 fail_unless_equals_int (res, GST_RTSP_OK);
886 res =
887 gst_rtsp_message_add_header (msg, GST_RTSP_HDR_AUTHORIZATION,
888 "Basic foobarbaz");
889 credentials =
890 gst_rtsp_message_parse_auth_credentials (msg, GST_RTSP_HDR_AUTHORIZATION);
891 fail_unless (credentials != NULL);
892
893 credential = credentials;
894 fail_unless_equals_int ((*credential)->scheme, GST_RTSP_AUTH_BASIC);
895 param = (*credential)->params;
896 fail_unless (param == NULL);
897 fail_unless_equals_string ((*credential)->authorization, "foobarbaz");
898 credential++;
899 fail_unless (*credential == NULL);
900
901 gst_rtsp_auth_credentials_free (credentials);
902 res = gst_rtsp_message_free (msg);
903 fail_unless_equals_int (res, GST_RTSP_OK);
904
905 /* Simple digest auth */
906 res = gst_rtsp_message_new_request (&msg, GST_RTSP_PLAY,
907 "rtsp://foo.bar:8554/test");
908 fail_unless_equals_int (res, GST_RTSP_OK);
909 res =
910 gst_rtsp_message_add_header (msg, GST_RTSP_HDR_AUTHORIZATION,
911 "Digest foo=\"bar\" baz=foo");
912 credentials =
913 gst_rtsp_message_parse_auth_credentials (msg, GST_RTSP_HDR_AUTHORIZATION);
914 fail_unless (credentials != NULL);
915
916 credential = credentials;
917 fail_unless_equals_int ((*credential)->scheme, GST_RTSP_AUTH_DIGEST);
918 param = (*credential)->params;
919 fail_unless (param != NULL);
920 fail_unless (*param != NULL);
921 fail_unless_equals_string ((*param)->name, "foo");
922 fail_unless_equals_string ((*param)->value, "bar");
923 param++;
924 fail_unless (*param != NULL);
925 fail_unless_equals_string ((*param)->name, "baz");
926 fail_unless_equals_string ((*param)->value, "foo");
927 param++;
928 fail_unless (*param == NULL);
929 credential++;
930 fail_unless (*credential == NULL);
931
932 gst_rtsp_auth_credentials_free (credentials);
933 res = gst_rtsp_message_free (msg);
934 fail_unless_equals_int (res, GST_RTSP_OK);
935 }
936
937 GST_END_TEST;
938
GST_START_TEST(test_rtsp_message_auth_credentials_boxed)939 GST_START_TEST (test_rtsp_message_auth_credentials_boxed)
940 {
941 GstRTSPAuthCredential **credentials, *credentials2;
942 GstRTSPAuthParam *param2;
943 GstRTSPMessage *msg;
944 GstRTSPResult res;
945
946 res = gst_rtsp_message_new_request (&msg, GST_RTSP_PLAY,
947 "rtsp://foo.bar:8554/test");
948 fail_unless_equals_int (res, GST_RTSP_OK);
949 res =
950 gst_rtsp_message_add_header (msg, GST_RTSP_HDR_WWW_AUTHENTICATE,
951 "Basic foo=\"bar\", baz=foo");
952 res =
953 gst_rtsp_message_add_header (msg, GST_RTSP_HDR_WWW_AUTHENTICATE,
954 "Basic foo1=\"bar\", baz1=foo");
955 credentials =
956 gst_rtsp_message_parse_auth_credentials (msg,
957 GST_RTSP_HDR_WWW_AUTHENTICATE);
958
959 credentials2 = g_boxed_copy (GST_TYPE_RTSP_AUTH_CREDENTIAL, credentials[0]);
960 gst_rtsp_auth_credentials_free (credentials);
961 gst_rtsp_message_free (msg);
962
963 param2 = g_boxed_copy (GST_TYPE_RTSP_AUTH_PARAM, credentials2->params[0]);
964 g_boxed_free (GST_TYPE_RTSP_AUTH_CREDENTIAL, credentials2);
965 g_boxed_free (GST_TYPE_RTSP_AUTH_PARAM, param2);
966 }
967
968 GST_END_TEST;
969
970 static Suite *
rtsp_suite(void)971 rtsp_suite (void)
972 {
973 Suite *s = suite_create ("rtsp support library");
974 TCase *tc_chain = tcase_create ("general");
975
976 suite_add_tcase (s, tc_chain);
977 tcase_add_test (tc_chain, test_rtsp_url_basic);
978 tcase_add_test (tc_chain, test_rtsp_url_components_1);
979 tcase_add_test (tc_chain, test_rtsp_url_components_2);
980 tcase_add_test (tc_chain, test_rtsp_url_components_3);
981 tcase_add_test (tc_chain, test_rtsp_range_npt);
982 tcase_add_test (tc_chain, test_rtsp_range_smpte);
983 tcase_add_test (tc_chain, test_rtsp_range_clock);
984 tcase_add_test (tc_chain, test_rtsp_range_convert);
985 tcase_add_test (tc_chain, test_rtsp_message);
986 tcase_add_test (tc_chain, test_rtsp_message_auth_credentials);
987 tcase_add_test (tc_chain, test_rtsp_message_auth_credentials_boxed);
988
989 return s;
990 }
991
992 GST_CHECK_MAIN (rtsp);
993