diff options
author | Maximilian Szengel <gnunet@maxsz.de> | 2012-06-25 11:15:41 +0000 |
---|---|---|
committer | Maximilian Szengel <gnunet@maxsz.de> | 2012-06-25 11:15:41 +0000 |
commit | e5aff270adfaf6ce72d13232ce909968c28baa3f (patch) | |
tree | 77b3b7b0f0af853365acf88469209a4de240ad91 /src/regex/test_regex_proofs.c | |
parent | 0ca232e391f8812bf59614b10d6550e06d2f3cf4 (diff) | |
download | gnunet-e5aff270adfaf6ce72d13232ce909968c28baa3f.tar.gz gnunet-e5aff270adfaf6ce72d13232ce909968c28baa3f.zip |
new test for regex
Diffstat (limited to 'src/regex/test_regex_proofs.c')
-rw-r--r-- | src/regex/test_regex_proofs.c | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/src/regex/test_regex_proofs.c b/src/regex/test_regex_proofs.c new file mode 100644 index 000000000..47cc4ee5b --- /dev/null +++ b/src/regex/test_regex_proofs.c | |||
@@ -0,0 +1,84 @@ | |||
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_proofs.c | ||
22 | * @brief test for regex.c | ||
23 | * @author Maximilian Szengel | ||
24 | */ | ||
25 | #include <regex.h> | ||
26 | #include <time.h> | ||
27 | #include "platform.h" | ||
28 | #include "gnunet_regex_lib.h" | ||
29 | |||
30 | int | ||
31 | main (int argc, char *argv[]) | ||
32 | { | ||
33 | GNUNET_log_setup ("test-regex", | ||
34 | #if VERBOSE | ||
35 | "DEBUG", | ||
36 | #else | ||
37 | "WARNING", | ||
38 | #endif | ||
39 | NULL); | ||
40 | |||
41 | int error; | ||
42 | int i; | ||
43 | const char *regex[21] = { | ||
44 | "ab(c|d)+c*(a(b|c)+d)+(bla)+", | ||
45 | "(bla)*", | ||
46 | "b(lab)*la", | ||
47 | "(ab)*", | ||
48 | "ab(c|d)+c*(a(b|c)+d)+(bla)(bla)*", | ||
49 | "z(abc|def)?xyz", | ||
50 | "1*0(0|1)*", | ||
51 | "a+X*y+c|p|R|Z*K*y*R+w|Y*6+n+h*k*w+V*F|W*B*e*", | ||
52 | "(cd|ab)*", | ||
53 | "abcd:(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1):(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)(0|1)", | ||
54 | "abc(1|0)*def", | ||
55 | "ab|ac", | ||
56 | "(ab)(ab)*", | ||
57 | "ab|cd|ef|gh", | ||
58 | "a|b|c|d|e|f|g", | ||
59 | "(ab)|(ac)", | ||
60 | "a(b|c)", | ||
61 | "a*a", | ||
62 | "ab?(abcd)?", | ||
63 | "(ab|cs|df|sdf)*", | ||
64 | "a|aa*a" | ||
65 | }; | ||
66 | char *computed_regex; | ||
67 | struct GNUNET_REGEX_Automaton *dfa; | ||
68 | |||
69 | error = 0; | ||
70 | |||
71 | for (i = 0; i < 21; i++) | ||
72 | { | ||
73 | dfa = GNUNET_REGEX_construct_dfa (regex[i], strlen (regex[i])); | ||
74 | computed_regex = GNUNET_strdup (GNUNET_REGEX_get_computed_regex (dfa)); | ||
75 | GNUNET_REGEX_automaton_destroy (dfa); | ||
76 | |||
77 | dfa = GNUNET_REGEX_construct_dfa (computed_regex, strlen (computed_regex)); | ||
78 | error += (0 == strcmp (computed_regex, GNUNET_REGEX_get_computed_regex (dfa))) ? 0 : 1; | ||
79 | GNUNET_free (computed_regex); | ||
80 | GNUNET_REGEX_automaton_destroy (dfa); | ||
81 | } | ||
82 | |||
83 | return error; | ||
84 | } | ||