1 /* GStreamer unit tests for libgstnetbuffer
3 * Copyright (C) 2006 Tim-Philipp Müller <tim centricular net>
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.
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.
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., 59 Temple Place - Suite 330,
18 * Boston, MA 02111-1307, USA.
25 #include <gst/check/gstcheck.h>
26 #include <gst/netbuffer/gstnetbuffer.h>
28 #define DATA_STRING "Yoho this is a string"
30 GST_START_TEST (test_netbuffer_copy)
32 GstNetBuffer *netbuf, *copy;
33 guint8 ipv6_addr[16] = { 0xff, 0x11, 0xee, 0x22, 0xdd, 0x33, 0xcc,
34 0x44, 0xbb, 0x55, 0xaa, 0x66, 0x00, 0x77, 0x99, 0x88
37 guint32 ipv4_copy, ipv4_addr = 0xfe12dc34;
38 guint16 ipv6_port = 3490;
39 guint16 ipv4_port = 5678;
42 netbuf = gst_netbuffer_new ();
43 fail_unless (netbuf != NULL, "failed to create net buffer");
45 gst_netaddress_set_ip4_address (&netbuf->from, ipv4_addr, ipv4_port);
46 gst_netaddress_set_ip6_address (&netbuf->to, ipv6_addr, ipv6_port);
48 GST_BUFFER_DATA (netbuf) = (guint8 *) DATA_STRING;
49 GST_BUFFER_SIZE (netbuf) = strlen (DATA_STRING);
50 GST_BUFFER_FLAG_SET (netbuf, GST_BUFFER_FLAG_DISCONT);
51 GST_BUFFER_FLAG_SET (netbuf, GST_BUFFER_FLAG_READONLY);
53 copy = (GstNetBuffer *) gst_buffer_copy (GST_BUFFER_CAST (netbuf));
54 fail_unless (copy != NULL, "failed to copy net buffer");
55 fail_unless (GST_IS_NETBUFFER (copy), "copied buffer is not a GstNetBuffer!");
57 fail_unless_equals_int (GST_MINI_OBJECT_REFCOUNT_VALUE (copy), 1);
59 fail_unless_equals_int (GST_BUFFER_SIZE (copy), GST_BUFFER_SIZE (netbuf));
60 fail_unless (memcmp (GST_BUFFER_DATA (copy), GST_BUFFER_DATA (netbuf),
61 GST_BUFFER_SIZE (copy)) == 0);
63 fail_if (GST_BUFFER_FLAG_IS_SET (copy, GST_BUFFER_FLAG_READONLY));
64 fail_unless (GST_BUFFER_FLAG_IS_SET (copy, GST_BUFFER_FLAG_DISCONT));
66 fail_unless (gst_netaddress_get_ip4_address (©->from, &ipv4_copy, &port));
67 fail_unless (ipv4_copy == ipv4_addr,
68 "Copied buffer has wrong IPV4 from address");
69 fail_unless (port == ipv4_port, "Copied buffer has wrong IPV4 from port");
71 fail_unless (gst_netaddress_get_ip6_address (©->to, ipv6_copy, &port));
72 fail_unless (memcmp (ipv6_copy, ipv6_addr, 16) == 0,
73 "Copied buffer has wrong IPv6 destination address");
74 fail_unless (port == ipv6_port,
75 "Copied buffer has wrong IPv6 destination port");
77 gst_buffer_unref (GST_BUFFER_CAST (netbuf));
78 gst_buffer_unref (GST_BUFFER_CAST (copy));
84 netbuffer_suite (void)
86 Suite *s = suite_create ("netbuffer");
87 TCase *tc_chain = tcase_create ("netbuffer");
89 suite_add_tcase (s, tc_chain);
91 tcase_add_test (tc_chain, test_netbuffer_copy);
96 GST_CHECK_MAIN (netbuffer);