2 This file is part of GNUnet.
5 GNUnet is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published
7 by the Free Software Foundation; either version 3, or (at your
8 option) any later version.
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with GNUnet; see the file COPYING. If not, write to the
17 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 Boston, MA 02110-1301, USA.
21 * @file rps/test_service_rps_view.c
22 * @brief testcase for gnunet-service-rps_view.c
25 #include "gnunet-service-rps_view.h"
27 #define ABORT() { fprintf(stderr, "Error at %s:%d\n", __FILE__, __LINE__); View_destroy(); return 1; }
28 #define CHECK(c) { if (! (c)) ABORT(); }
34 struct GNUNET_PeerIdentity k1;
35 struct GNUNET_PeerIdentity k2;
36 const struct GNUNET_PeerIdentity *array;
40 memset (&k1, 0, sizeof (k1));
41 memset (&k2, 1, sizeof (k2));
42 CHECK (GNUNET_NO == View_contains_peer (&k1));
43 CHECK (GNUNET_NO == View_contains_peer (&k2));
44 CHECK (GNUNET_NO == View_remove_peer (&k1));
45 CHECK (GNUNET_NO == View_remove_peer (&k2));
46 CHECK (NULL == View_get_peer_by_index (0));
47 CHECK (NULL == View_get_peer_by_index (1));
48 View_clear (); /* See if assertions trigger */
49 CHECK (0 == View_size ());
51 CHECK (GNUNET_OK == View_put (&k1));
52 CHECK (1 == View_size ());
53 CHECK (GNUNET_NO == View_put (&k1));
54 CHECK (1 == View_size ());
55 CHECK (GNUNET_YES == View_contains_peer (&k1));
56 CHECK (GNUNET_OK == View_remove_peer (&k1));
57 CHECK (0 == View_size ());
58 CHECK (GNUNET_NO == View_contains_peer (&k1));
59 CHECK (GNUNET_NO == View_contains_peer (&k2));
61 CHECK (GNUNET_OK == View_put (&k1));
62 CHECK (1 == View_size ());
63 for (j = 0; j < 16; j++)
65 CHECK (GNUNET_NO == View_put (&k1));
67 CHECK (1 == View_size ());
68 CHECK (GNUNET_OK == View_put (&k2));
69 CHECK (2 == View_size ());
70 for (j = 0; j < 16; j++)
72 CHECK (GNUNET_NO == View_put (&k2));
74 CHECK (2 == View_size ());
77 for (j = 0; j < View_size (); j++)
79 CHECK (NULL != View_get_peer_by_index (j));
81 CHECK ((0 == memcmp (View_get_peer_by_index (0),
83 CHECK ((0 == memcmp (View_get_peer_by_index (1),
85 CHECK (GNUNET_OK == View_remove_peer (&k1));
86 CHECK (1 == View_size ());
87 CHECK (GNUNET_NO == View_contains_peer (&k1));
88 CHECK (GNUNET_YES == View_contains_peer (&k2));
89 CHECK (NULL != View_get_peer_by_index (0));
90 CHECK (NULL == View_get_peer_by_index (1));
93 CHECK (0 == View_size ());
95 CHECK (GNUNET_OK == View_put (&k1));
96 CHECK (1 == View_size ());
97 CHECK (GNUNET_YES == View_contains_peer (&k1));
98 CHECK (GNUNET_OK == View_put (&k2));
99 CHECK (2 == View_size ());
100 CHECK (GNUNET_YES == View_contains_peer (&k2));
101 array = View_get_as_array ();
102 CHECK (0 == memcmp (&array[0], &k1, sizeof (k1)));
103 CHECK (0 == memcmp (&array[1], &k2, sizeof (k2)));
105 CHECK (0 == View_size ());
107 /*View_change_len () */
108 CHECK (GNUNET_OK == View_put (&k1));
109 CHECK (GNUNET_OK == View_put (&k2));
110 CHECK (2 == View_size ());
112 CHECK (2 == View_size ());
113 CHECK (GNUNET_YES == View_contains_peer (&k1));
114 CHECK (GNUNET_YES == View_contains_peer (&k2));
115 array = View_get_as_array ();
116 CHECK (0 == memcmp (&array[0], &k1, sizeof (k1)));
117 CHECK (0 == memcmp (&array[1], &k2, sizeof (k2)));
119 CHECK (1 == View_size ());
120 CHECK (GNUNET_YES == View_contains_peer (&k1));
121 CHECK (GNUNET_NO == View_contains_peer (&k2));
122 array = View_get_as_array ();
123 CHECK (0 == memcmp (&array[0], &k1, sizeof (k1)));
125 CHECK (0 == View_size ());
134 main (int argc, char *argv[])
136 GNUNET_log_setup ("test_service_rps_peers",
142 /* end of test_service_rps_view.c */