Changed to GPLv3.
[gnupg.git] / jnlib / t-stringhelp.c
1 /* t-stringhelp.c - Regression tests for stringhelp.c
2  * Copyright (C) 2007 Free Software Foundation, Inc.
3  *
4  * This file is part of JNLIB.
5  *
6  * JNLIB is free software; you can redistribute it and/or modify it
7  * under the terms of the GNU Lesser General Public License as
8  * published by the Free Software Foundation; either version 3 of
9  * the License, or (at your option) any later version.
10  *
11  * JNLIB is distributed in the hope that it will be useful, but
12  * WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this program; if not, see <http://www.gnu.org/licenses/>.
18  */
19
20 #include <config.h>
21 #include <stdio.h>
22 #include <stdlib.h>
23 #include <string.h>
24
25 #include "stringhelp.h"
26
27 #include "t-support.h"
28
29
30
31 static void
32 test_percent_escape (void)
33 {
34   char *result;
35   static struct {
36     const char *extra; 
37     const char *value; 
38     const char *expected;
39   } tests[] = 
40     {
41       { NULL, "", "" },
42       { NULL, "%", "%25" },
43       { NULL, "%%", "%25%25" },
44       { NULL, " %", " %25" },
45       { NULL, ":", "%3a" },
46       { NULL, " :", " %3a" },
47       { NULL, ": ", "%3a " },
48       { NULL, " : ", " %3a " },
49       { NULL, "::", "%3a%3a" },
50       { NULL, ": :", "%3a %3a" },
51       { NULL, "%:", "%25%3a" },
52       { NULL, ":%", "%3a%25" },
53       { "\\\n:", ":%", "%3a%25" },
54       { "\\\n:", "\\:%", "%5c%3a%25" },
55       { "\\\n:", "\n:%", "%0a%3a%25" },
56       { "\\\n:", "\xff:%", "\xff%3a%25" },
57       { "\\\n:", "\xfe:%", "\xfe%3a%25" },
58       { "\\\n:", "\x01:%", "\x01%3a%25" },
59       { "\x01",  "\x01:%", "%01%3a%25" },
60       { "\xfe",  "\xfe:%", "%fe%3a%25" },
61       { "\xfe",  "\xff:%", "\xff%3a%25" },
62
63       { NULL, NULL, NULL }
64     };
65   int testno;
66
67   result = percent_escape (NULL, NULL);
68   if (result)
69     fail (0);
70   for (testno=0; tests[testno].value; testno++)
71     {
72       result = percent_escape (tests[testno].value, tests[testno].extra);
73       if (!result)
74         fail (testno);
75       if (strcmp (result, tests[testno].expected))
76         fail (testno);
77       xfree (result);
78     }
79
80 }
81
82
83
84
85 int
86 main (int argc, char **argv)
87 {
88   test_percent_escape ();
89
90   return 0;
91 }
92