paragraph for gnunet devs that don't know how to use the web
[oweals/gnunet.git] / src / testbed / test_testbed_api_sd.c
1 /*
2       This file is part of GNUnet
3       Copyright (C) 2008--2013 GNUnet e.V.
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
19
20 /**
21  * @file testbed/testbed_api_sd.c
22  * @brief test cases for calculating standard deviation
23  * @author Sree Harsha Totakura <sreeharsha@totakura.in>
24  */
25
26 #include "platform.h"
27 #include "gnunet_util_lib.h"
28 #include "testbed_api_sd.h"
29
30 /**
31  * Global return value
32  */
33 static int ret;
34
35 /**
36  * Main run function.
37  *
38  * @param cls NULL
39  * @param args arguments passed to GNUNET_PROGRAM_run
40  * @param cfgfile the path to configuration file
41  * @param cfg the configuration file handle
42  */
43 static void
44 run (void *cls, char *const *args, const char *cfgfile,
45      const struct GNUNET_CONFIGURATION_Handle *config)
46 {
47   struct SDHandle *h = GNUNET_TESTBED_SD_init_ (20);
48   int sd;
49
50   ret = 0;
51   GNUNET_TESTBED_SD_add_data_ (h, 40);
52   if (GNUNET_SYSERR != GNUNET_TESTBED_SD_deviation_factor_ (h, 10, &sd))
53   {
54     GNUNET_break (0);
55     ret = 1;
56     goto err;
57   }
58   GNUNET_TESTBED_SD_add_data_ (h, 30);
59   if (GNUNET_SYSERR == GNUNET_TESTBED_SD_deviation_factor_ (h, 80, &sd))
60   {
61     GNUNET_break (0);
62     ret = 1;
63     goto err;
64   }
65   GNUNET_TESTBED_SD_add_data_ (h, 40);
66   if ((GNUNET_SYSERR == GNUNET_TESTBED_SD_deviation_factor_ (h, 30, &sd))
67       || (-2 != sd))
68   {
69     GNUNET_break (0);
70     ret = 1;
71     goto err;
72   }
73   GNUNET_TESTBED_SD_add_data_ (h, 10);
74   GNUNET_TESTBED_SD_add_data_ (h, 30);
75   if ((GNUNET_SYSERR == GNUNET_TESTBED_SD_deviation_factor_ (h, 60, &sd))
76       || (3 != sd))
77   {
78     GNUNET_break (0);
79     ret = 1;
80     goto err;
81   }
82
83  err:
84   GNUNET_TESTBED_SD_destroy_ (h);
85 }
86
87
88 /**
89  * Main function
90  */
91 int
92 main (int argc, char **argv)
93 {
94   struct GNUNET_GETOPT_CommandLineOption options[] = {
95     GNUNET_GETOPT_OPTION_END
96   };
97   int result;
98
99   result = GNUNET_SYSERR;
100   result =
101       GNUNET_PROGRAM_run (argc, argv,
102                           "test_testbed_api_sd", "nohelp", options, &run, NULL);
103   if ((GNUNET_OK != result))
104     return 1;
105   return ret;
106 }
107
108 /* end of test_testbed_api_sd.c */