use NULL value in load_path_suffix to NOT load any files
[oweals/gnunet.git] / src / rps / test_service_rps_view.c
1 /*
2      This file is part of GNUnet.
3      Copyright (C)
4
5      GNUnet is free software: you can redistribute it and/or modify it
6      under the terms of the GNU Affero General Public License as published
7      by the Free Software Foundation, either version 3 of the License,
8      or (at your option) any later version.
9
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      Affero General Public License for more details.
14
15      You should have received a copy of the GNU Affero General Public License
16      along with this program.  If not, see <http://www.gnu.org/licenses/>.
17
18      SPDX-License-Identifier: AGPL3.0-or-later
19  */
20 /**
21  * @file rps/test_service_rps_view.c
22  * @brief testcase for gnunet-service-rps_view.c
23  */
24 #include <platform.h>
25 #include "gnunet-service-rps_view.h"
26
27 #define ABORT() { fprintf (stderr, "Error at %s:%d\n", __FILE__, __LINE__); \
28                   View_destroy (view); return 1; }
29 #define CHECK(c) { if (! (c)) ABORT (); }
30
31
32 static int
33 check ()
34 {
35   struct View *view;
36   struct GNUNET_PeerIdentity k1;
37   struct GNUNET_PeerIdentity k2;
38   const struct GNUNET_PeerIdentity *array;
39   unsigned int j;
40
41   view = View_create (3);
42   memset (&k1, 0, sizeof(k1));
43   memset (&k2, 1, sizeof(k2));
44   CHECK (GNUNET_NO == View_contains_peer (view, &k1));
45   CHECK (GNUNET_NO == View_contains_peer (view, &k2));
46   CHECK (GNUNET_NO == View_remove_peer (view, &k1));
47   CHECK (GNUNET_NO == View_remove_peer (view, &k2));
48   CHECK (NULL == View_get_peer_by_index (view, 0));
49   CHECK (NULL == View_get_peer_by_index (view, 1));
50   View_clear (view);  /* See if assertions trigger */
51   CHECK (0 == View_size (view));
52
53   CHECK (GNUNET_OK == View_put (view, &k1));
54   CHECK (1 == View_size (view));
55   CHECK (GNUNET_NO == View_put (view, &k1));
56   CHECK (1 == View_size (view));
57   CHECK (GNUNET_YES == View_contains_peer (view, &k1));
58   CHECK (GNUNET_OK == View_remove_peer (view, &k1));
59   CHECK (0 == View_size (view));
60   CHECK (GNUNET_NO == View_contains_peer (view, &k1));
61   CHECK (GNUNET_NO == View_contains_peer (view, &k2));
62
63   CHECK (GNUNET_OK == View_put (view, &k1));
64   CHECK (1 == View_size (view));
65   for (j = 0; j < 16; j++)
66   {
67     CHECK (GNUNET_NO == View_put (view, &k1));
68   }
69   CHECK (1 == View_size (view));
70   CHECK (GNUNET_OK == View_put (view, &k2));
71   CHECK (2 == View_size (view));
72   for (j = 0; j < 16; j++)
73   {
74     CHECK (GNUNET_NO == View_put (view, &k2));
75   }
76   CHECK (2 == View_size (view));
77
78   /* iterate */
79   for (j = 0; j < View_size (view); j++)
80   {
81     CHECK (NULL != View_get_peer_by_index (view, j));
82   }
83   CHECK ((0 == memcmp (View_get_peer_by_index (view, 0),
84                        &k1, sizeof(k1))));
85   CHECK ((0 == memcmp (View_get_peer_by_index (view, 1),
86                        &k2, sizeof(k2))));
87   CHECK (GNUNET_OK == View_remove_peer (view, &k1));
88   CHECK (1 == View_size (view));
89   CHECK (GNUNET_NO == View_contains_peer (view, &k1));
90   CHECK (GNUNET_YES == View_contains_peer (view, &k2));
91   CHECK (NULL != View_get_peer_by_index (view, 0));
92   CHECK (NULL == View_get_peer_by_index (view, 1));
93
94   View_clear (view);
95   CHECK (0 == View_size (view));
96
97   CHECK (GNUNET_OK == View_put (view, &k1));
98   CHECK (1 == View_size (view));
99   CHECK (GNUNET_YES == View_contains_peer (view, &k1));
100   CHECK (GNUNET_OK == View_put (view, &k2));
101   CHECK (2 == View_size (view));
102   CHECK (GNUNET_YES == View_contains_peer (view, &k2));
103   array = View_get_as_array (view);
104   CHECK (0 == memcmp (&array[0], &k1, sizeof(k1)));
105   CHECK (0 == memcmp (&array[1], &k2, sizeof(k2)));
106   View_clear (view);
107   CHECK (0 == View_size (view));
108
109   /*View_change_len () */
110   CHECK (GNUNET_OK == View_put (view, &k1));
111   CHECK (GNUNET_OK == View_put (view, &k2));
112   CHECK (2 == View_size (view));
113   View_change_len (view, 4);
114   CHECK (2 == View_size (view));
115   CHECK (GNUNET_YES == View_contains_peer (view, &k1));
116   CHECK (GNUNET_YES == View_contains_peer (view, &k2));
117   array = View_get_as_array (view);
118   CHECK (0 == memcmp (&array[0], &k1, sizeof(k1)));
119   CHECK (0 == memcmp (&array[1], &k2, sizeof(k2)));
120   View_change_len (view, 1);
121   CHECK (1 == View_size (view));
122   CHECK (GNUNET_YES == View_contains_peer (view, &k1));
123   CHECK (GNUNET_NO == View_contains_peer (view, &k2));
124   array = View_get_as_array (view);
125   CHECK (0 == memcmp (&array[0], &k1, sizeof(k1)));
126   View_clear (view);
127   CHECK (0 == View_size (view));
128
129   View_destroy (view);
130
131   return 0;
132 }
133
134
135 int
136 main ()
137 {
138   GNUNET_log_setup ("test_service_rps_peers",
139                     "WARNING",
140                     NULL);
141   return check ();
142 }
143
144
145 /* end of test_service_rps_view.c */