aboutsummaryrefslogtreecommitdiff
path: root/src/rps/test_service_rps_view.c
diff options
context:
space:
mode:
authorJulius Bünger <buenger@mytum.de>2015-11-29 20:44:44 +0000
committerJulius Bünger <buenger@mytum.de>2015-11-29 20:44:44 +0000
commitd72d8e05401ace44b57432463f136bcfe55cee03 (patch)
tree8d1374ae5ebd8aa7eb7b5be6ee4d88b7fa78c298 /src/rps/test_service_rps_view.c
parenta0e27c0bd09fc4b0d70295baa5d7e052c46fe4ff (diff)
downloadgnunet-d72d8e05401ace44b57432463f136bcfe55cee03.tar.gz
gnunet-d72d8e05401ace44b57432463f136bcfe55cee03.zip
added helper for handling the "view" in rps
Signed-off-by: Julius Bünger <buenger@mytum.de>
Diffstat (limited to 'src/rps/test_service_rps_view.c')
-rw-r--r--src/rps/test_service_rps_view.c121
1 files changed, 121 insertions, 0 deletions
diff --git a/src/rps/test_service_rps_view.c b/src/rps/test_service_rps_view.c
new file mode 100644
index 000000000..8e018cba5
--- /dev/null
+++ b/src/rps/test_service_rps_view.c
@@ -0,0 +1,121 @@
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_view.c
22 * @brief testcase for gnunet-service-rps_view.c
23 */
24#include <gnunet/platform.h>
25#include "gnunet-service-rps_view.h"
26
27#define ABORT() { fprintf(stderr, "Error at %s:%d\n", __FILE__, __LINE__); View_destroy(); return 1; }
28#define CHECK(c) { if (! (c)) ABORT(); }
29
30
31static int
32check ()
33{
34 struct GNUNET_PeerIdentity k1;
35 struct GNUNET_PeerIdentity k2;
36 const struct GNUNET_PeerIdentity *array;
37 int j;
38
39 View_create (3);
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 ());
50
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));
60
61 CHECK (GNUNET_OK == View_put (&k1));
62 CHECK (1 == View_size ());
63 for (j = 0; j < 16; j++)
64 {
65 CHECK (GNUNET_NO == View_put (&k1));
66 }
67 CHECK (1 == View_size ());
68 CHECK (GNUNET_OK == View_put (&k2));
69 CHECK (2 == View_size ());
70 for (j = 0; j < 16; j++)
71 {
72 CHECK (GNUNET_NO == View_put (&k2));
73 }
74 CHECK (2 == View_size ());
75
76 /* iterate */
77 for (j = 0; j < View_size (); j++)
78 {
79 CHECK (NULL != View_get_peer_by_index (j));
80 }
81 CHECK ((0 == memcmp (View_get_peer_by_index (0),
82 &k1, sizeof (k1))));
83 CHECK ((0 == memcmp (View_get_peer_by_index (1),
84 &k2, sizeof (k2))));
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
91 View_clear ();
92 CHECK (0 == View_size ());
93
94 CHECK (GNUNET_OK == View_put (&k1));
95 CHECK (1 == View_size ());
96 CHECK (GNUNET_OK == View_put (&k2));
97 CHECK (2 == View_size ());
98 array = View_get_as_array ();
99 CHECK (0 == memcmp (&array[0], &k1, sizeof (k1)));
100 CHECK (0 == memcmp (&array[1], &k2, sizeof (k2)));
101 View_clear ();
102 CHECK (0 == View_size ());
103
104 /*View_change_len () */
105
106 View_destroy ();
107
108 return 0;
109}
110
111
112int
113main (int argc, char *argv[])
114{
115 GNUNET_log_setup ("test_service_rps_peers",
116 "WARNING",
117 NULL);
118 return check ();
119}
120
121/* end of test_service_rps_view.c */