-add newline
[oweals/gnunet.git] / src / regex / test_regex_iptoregex.c
1 /*
2      This file is part of GNUnet
3      (C) 2012 Christian Grothoff (and other contributing authors)
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., 59 Temple Place - Suite 330,
18      Boston, MA 02111-1307, USA.
19 */
20 /**
21  * @file regex/test_regex_iptoregex.c
22  * @brief simple test for regex.c iptoregex functions
23  * @author Maximilian Szengel
24  */
25 #include "platform.h"
26 #include "gnunet_regex_lib.h"
27
28
29 static int
30 test_iptoregex (const char *ipv4, const char *netmask, const char *expectedv4,
31                 const char *ipv6, unsigned int prefixlen,
32                 const char *expectedv6)
33 {
34   int error = 0;
35
36   struct in_addr a;
37   struct in6_addr b;
38   char rxv4[GNUNET_REGEX_IPV4_REGEXLEN];
39   char rxv6[GNUNET_REGEX_IPV6_REGEXLEN];
40
41   GNUNET_assert (1 == inet_pton (AF_INET, ipv4, &a));
42   GNUNET_REGEX_ipv4toregex (&a, netmask, rxv4);
43
44
45   if (0 != strcmp (rxv4, expectedv4))
46   {
47     GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Expected: %s but got: %s\n",
48                 expectedv4, rxv4);
49     error++;
50   }
51
52   GNUNET_assert (1 == inet_pton (AF_INET6, ipv6, &b));
53   GNUNET_REGEX_ipv6toregex (&b, prefixlen, rxv6);
54
55   if (0 != strcmp (rxv6, expectedv6))
56   {
57     GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Expected: %s but got: %s\n",
58                 expectedv6, rxv6);
59     error++;
60   }
61
62   return error;
63 }
64
65 int
66 main (int argc, char *argv[])
67 {
68   GNUNET_log_setup ("test-regex", "WARNING", NULL);
69
70   int error;
71
72   error = 0;
73
74   error +=
75       test_iptoregex ("192.0.0.0", "255.255.255.0",
76                       "110000000000000000000000(0|1)+", "FFFF::0", 16,
77                       "1111111111111111(0|1)+");
78
79   error +=
80       test_iptoregex ("187.238.225.0", "255.255.255.128",
81                       "1011101111101110111000010(0|1)+", "E1E1:73F9:51BE::0",
82                       49,
83                       "1110000111100001011100111111100101010001101111100(0|1)+");
84
85   error +=
86       test_iptoregex ("255.255.255.255", "255.255.255.255",
87                       "11111111111111111111111111111111",
88                       "FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", 128,
89                       "11111111111111111111111111111111"
90                       "11111111111111111111111111111111"
91                       "11111111111111111111111111111111"
92                       "11111111111111111111111111111111");
93
94   error +=
95       test_iptoregex ("0.0.0.0", "255.255.255.255",
96                       "00000000000000000000000000000000", "0::0", 128,
97                       "00000000000000000000000000000000"
98                       "00000000000000000000000000000000"
99                       "00000000000000000000000000000000"
100                       "00000000000000000000000000000000");
101
102   return error;
103 }