-add tests for helpers "view" and "peers"
[oweals/gnunet.git] / src / rps / test_service_rps_peers.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
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.
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      General Public License for more details.
14
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.
19 */
20 /**
21  * @file rps/test_service_rps_peers.c
22  * @brief testcase for gnunet-service-rps_peers.c
23  */
24 #include <platform.h>
25 #include "gnunet-service-rps_peers.h"
26
27 #define ABORT() { fprintf(stderr, "Error at %s:%d\n", __FILE__, __LINE__); if (NULL != c_m) CustomPeerMap_destroy(c_m); return 1; }
28 #define CHECK(c) { if (! (c)) ABORT(); }
29
30
31 static int
32 check ()
33 {
34
35   struct CustomPeerMap *c_m;
36   struct GNUNET_PeerIdentity k1;
37   struct GNUNET_PeerIdentity k2;
38   int j;
39
40   CHECK (NULL != (c_m = CustomPeerMap_create (4)));
41   memset (&k1, 0, sizeof (k1));
42   memset (&k2, 1, sizeof (k2));
43   CHECK (GNUNET_NO == CustomPeerMap_contains_peer (c_m, &k1));
44   CHECK (GNUNET_NO == CustomPeerMap_contains_peer (c_m, &k2));
45   CHECK (GNUNET_NO == CustomPeerMap_remove_peer (c_m, &k1));
46   CHECK (GNUNET_NO == CustomPeerMap_remove_peer (c_m, &k2));
47   CHECK (GNUNET_NO == CustomPeerMap_remove_peer_by_index (c_m, 0));
48   CHECK (GNUNET_NO == CustomPeerMap_remove_peer_by_index (c_m, 0));
49   CHECK (GNUNET_NO == CustomPeerMap_remove_peer_by_index (c_m, 1));
50   CHECK (GNUNET_NO == CustomPeerMap_remove_peer_by_index (c_m, 1));
51   CHECK (NULL == CustomPeerMap_get_peer_by_index (c_m, 0));
52   CHECK (NULL == CustomPeerMap_get_peer_by_index (c_m, 0));
53   CHECK (NULL == CustomPeerMap_get_peer_by_index (c_m, 1));
54   CHECK (NULL == CustomPeerMap_get_peer_by_index (c_m, 1));
55   CustomPeerMap_clear (c_m); /* See if assertions trigger */
56   CHECK (0 == CustomPeerMap_size (c_m));
57
58   CHECK (GNUNET_OK == CustomPeerMap_put (c_m, &k1));
59   CHECK (1 == CustomPeerMap_size (c_m));
60   CHECK (GNUNET_NO == CustomPeerMap_put (c_m, &k1));
61   CHECK (1 == CustomPeerMap_size (c_m));
62   CHECK (GNUNET_YES == CustomPeerMap_contains_peer (c_m, &k1));
63   CHECK (GNUNET_OK == CustomPeerMap_remove_peer (c_m, &k1));
64   CHECK (0 == CustomPeerMap_size (c_m));
65   CHECK (GNUNET_NO == CustomPeerMap_contains_peer (c_m, &k1));
66   CHECK (GNUNET_NO == CustomPeerMap_contains_peer (c_m, &k2));
67
68   CHECK (GNUNET_OK == CustomPeerMap_put (c_m, &k1));
69   CHECK (1 == CustomPeerMap_size (c_m));
70   for (j = 0; j < 16; j++)
71   {
72     CHECK (GNUNET_NO == CustomPeerMap_put (c_m, &k1));
73   }
74   CHECK (1 == CustomPeerMap_size (c_m));
75   CHECK (GNUNET_OK == CustomPeerMap_put (c_m, &k2));
76   CHECK (2 == CustomPeerMap_size (c_m));
77   for (j = 0; j < 16; j++)
78   {
79     CHECK (GNUNET_NO == CustomPeerMap_put (c_m, &k2));
80   }
81   CHECK (2 == CustomPeerMap_size (c_m));
82
83   /* iterate */
84   for (j = 0; j < CustomPeerMap_size (c_m); j++)
85   {
86     CHECK (NULL != CustomPeerMap_get_peer_by_index (c_m, j));
87   }
88   CHECK ((0 == memcmp (CustomPeerMap_get_peer_by_index (c_m, 0),
89                        &k1, sizeof (k1))));
90   CHECK ((0 == memcmp (CustomPeerMap_get_peer_by_index (c_m, 1),
91                        &k2, sizeof (k2))));
92   CHECK (GNUNET_OK == CustomPeerMap_remove_peer (c_m, &k1));
93   CHECK (1 == CustomPeerMap_size (c_m));
94   CHECK (GNUNET_NO == CustomPeerMap_contains_peer (c_m, &k1));
95   CHECK (GNUNET_YES == CustomPeerMap_contains_peer (c_m, &k2));
96   CHECK (NULL != CustomPeerMap_get_peer_by_index (c_m, 0));
97
98   CustomPeerMap_clear (c_m);
99   CHECK (0 == CustomPeerMap_size (c_m));
100
101   CHECK (GNUNET_OK == CustomPeerMap_put (c_m, &k1));
102   CHECK (1 == CustomPeerMap_size (c_m));
103   CHECK (GNUNET_OK == CustomPeerMap_put (c_m, &k2));
104   CHECK (2 == CustomPeerMap_size (c_m));
105   CustomPeerMap_clear (c_m);
106   CHECK (0 == CustomPeerMap_size (c_m));
107
108   CustomPeerMap_destroy (c_m);
109
110   return 0;
111 }
112
113
114 int
115 main (int argc, char *argv[])
116 {
117   GNUNET_log_setup ("test_service_rps_peers", 
118                     "WARNING",
119                     NULL);
120   return check ();
121 }
122
123 /* end of test_rps_api.c */