summaryrefslogtreecommitdiffstats
path: root/3rdparty/openpgm-svn-r1135/pgm/tsi_unittest.c
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/openpgm-svn-r1135/pgm/tsi_unittest.c')
-rw-r--r--3rdparty/openpgm-svn-r1135/pgm/tsi_unittest.c185
1 files changed, 185 insertions, 0 deletions
diff --git a/3rdparty/openpgm-svn-r1135/pgm/tsi_unittest.c b/3rdparty/openpgm-svn-r1135/pgm/tsi_unittest.c
new file mode 100644
index 0000000..fddff25
--- /dev/null
+++ b/3rdparty/openpgm-svn-r1135/pgm/tsi_unittest.c
@@ -0,0 +1,185 @@
+/* vim:ts=8:sts=8:sw=4:noai:noexpandtab
+ *
+ * unit tests for transport session ID helper functions.
+ *
+ * Copyright (c) 2009 Miru Limited.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+#include <errno.h>
+#include <signal.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <string.h>
+#include <glib.h>
+#include <check.h>
+
+
+/* mock state */
+
+/* mock functions for external references */
+
+size_t
+pgm_transport_pkt_offset2 (
+ const bool can_fragment,
+ const bool use_pgmcc
+ )
+{
+ return 0;
+}
+
+
+#define TSI_DEBUG
+#include "tsi.c"
+
+
+/* target:
+ * gchar*
+ * pgm_tsi_print (
+ * const pgm_tsi_t* tsi
+ * )
+ */
+
+START_TEST (test_print_pass_001)
+{
+ const pgm_tsi_t tsi = { { 1, 2, 3, 4, 5, 6 }, 1000 };
+ fail_if (NULL == pgm_tsi_print (&tsi), "print failed");
+}
+END_TEST
+
+START_TEST (test_print_pass_002)
+{
+ fail_unless (NULL == pgm_tsi_print (NULL), "print failed");
+}
+END_TEST
+
+/* target:
+ * int
+ * pgm_tsi_print_r (
+ * const pgm_tsi_t* tsi,
+ * char* buf,
+ * gsize bufsize
+ * )
+ */
+
+START_TEST (test_print_r_pass_001)
+{
+ const pgm_tsi_t tsi = { { 1, 2, 3, 4, 5, 6 }, 1000 };
+ char buf[PGM_TSISTRLEN];
+ fail_unless (pgm_tsi_print_r (&tsi, buf, sizeof(buf)) > 0, "print_r failed");
+}
+END_TEST
+
+START_TEST (test_print_r_pass_002)
+{
+ const pgm_tsi_t tsi = { { 1, 2, 3, 4, 5, 6 }, 1000 };
+ char buf[PGM_TSISTRLEN];
+ fail_unless (pgm_tsi_print_r (NULL, buf, sizeof(buf)) == -1, "print_r failed");
+ fail_unless (pgm_tsi_print_r (&tsi, NULL, sizeof(buf)) == -1, "print_r failed");
+ fail_unless (pgm_tsi_print_r (&tsi, buf, 0) == -1, "print_r failed");
+}
+END_TEST
+
+/* target:
+ * gboolean
+ * pgm_tsi_equal (
+ * gconstpointer tsi1,
+ * gconstpointer tsi2
+ * )
+ */
+
+START_TEST (test_equal_pass_001)
+{
+ const pgm_tsi_t tsi1 = { { 1, 2, 3, 4, 5, 6 }, 1000 };
+ const pgm_tsi_t tsi2 = { { 1, 2, 3, 4, 5, 6 }, 1000 };
+ fail_unless (pgm_tsi_equal (&tsi1, &tsi2), "equal failed");
+}
+END_TEST
+
+START_TEST (test_equal_pass_002)
+{
+ const pgm_tsi_t tsi1 = { { 1, 2, 3, 4, 5, 6 }, 1000 };
+ const pgm_tsi_t tsi2 = { { 9, 8, 7, 6, 5, 4 }, 2000 };
+ fail_if (pgm_tsi_equal (&tsi1, &tsi2), "equal failed");
+}
+END_TEST
+
+START_TEST (test_equal_fail_001)
+{
+ const pgm_tsi_t tsi = { { 1, 2, 3, 4, 5, 6 }, 1000 };
+ gboolean retval = pgm_tsi_equal (NULL, &tsi);
+ fail ("reached");
+}
+END_TEST
+
+START_TEST (test_equal_fail_002)
+{
+ const pgm_tsi_t tsi = { { 1, 2, 3, 4, 5, 6 }, 1000 };
+ gboolean retval = pgm_tsi_equal (&tsi, NULL);
+ fail ("reached");
+}
+END_TEST
+
+
+static
+Suite*
+make_test_suite (void)
+{
+ Suite* s;
+
+ s = suite_create (__FILE__);
+
+ TCase* tc_print = tcase_create ("print");
+ suite_add_tcase (s, tc_print);
+ tcase_add_test (tc_print, test_print_pass_001);
+ tcase_add_test (tc_print, test_print_pass_002);
+
+ TCase* tc_print_r = tcase_create ("print-r");
+ suite_add_tcase (s, tc_print_r);
+ tcase_add_test (tc_print_r, test_print_r_pass_001);
+ tcase_add_test (tc_print_r, test_print_r_pass_002);
+
+ TCase* tc_equal = tcase_create ("equal");
+ suite_add_tcase (s, tc_equal);
+ tcase_add_test (tc_equal, test_equal_pass_001);
+ tcase_add_test (tc_equal, test_equal_pass_002);
+ tcase_add_test_raise_signal (tc_equal, test_equal_fail_001, SIGABRT);
+ tcase_add_test_raise_signal (tc_equal, test_equal_fail_002, SIGABRT);
+
+ return s;
+}
+
+static
+Suite*
+make_master_suite (void)
+{
+ Suite* s = suite_create ("Master");
+ return s;
+}
+
+int
+main (void)
+{
+ SRunner* sr = srunner_create (make_master_suite ());
+ srunner_add_suite (sr, make_test_suite ());
+ srunner_run_all (sr, CK_ENV);
+ int number_failed = srunner_ntests_failed (sr);
+ srunner_free (sr);
+ return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+}
+
+/* eof */