2 This file is part of GNUnet
3 (C) 2012 Christian Grothoff (and other contributing authors)
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.
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.
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.
21 * @file regex/test_regex_iptoregex.c
22 * @brief simple test for regex.c iptoregex functions
23 * @author Maximilian Szengel
26 #include "gnunet_regex_lib.h"
30 test_iptoregex (const char *ipv4, const char *netmask, const char *expectedv4,
31 const char *ipv6, unsigned int prefixlen,
32 const char *expectedv6)
38 char rxv4[GNUNET_REGEX_IPV4_REGEXLEN];
39 char rxv6[GNUNET_REGEX_IPV6_REGEXLEN];
41 GNUNET_assert (1 == inet_pton (AF_INET, ipv4, &a));
42 GNUNET_REGEX_ipv4toregex (&a, netmask, rxv4);
45 if (0 != strcmp (rxv4, expectedv4))
47 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Expected: %s but got: %s\n",
52 GNUNET_assert (1 == inet_pton (AF_INET6, ipv6, &b));
53 GNUNET_REGEX_ipv6toregex (&b, prefixlen, rxv6);
55 if (0 != strcmp (rxv6, expectedv6))
57 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Expected: %s but got: %s\n",
66 main (int argc, char *argv[])
68 GNUNET_log_setup ("test-regex", "WARNING", NULL);
75 test_iptoregex ("192.0.0.0", "255.255.255.0",
76 "110000000000000000000000(0|1)+", "FFFF::0", 16,
77 "1111111111111111(0|1)+");
80 test_iptoregex ("187.238.225.0", "255.255.255.128",
81 "1011101111101110111000010(0|1)+", "E1E1:73F9:51BE::0",
83 "1110000111100001011100111111100101010001101111100(0|1)+");
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");
95 test_iptoregex ("0.0.0.0", "255.255.255.255",
96 "00000000000000000000000000000000", "0::0", 128,
97 "00000000000000000000000000000000"
98 "00000000000000000000000000000000"
99 "00000000000000000000000000000000"
100 "00000000000000000000000000000000");