chiark / gitweb /
gnupg2 (2.1.17-3) unstable; urgency=medium
[gnupg2.git] / common / t-mapstrings.c
1 /* t-mapstrings.c - Regression tests for mapstrings.c
2  * Copyright (C) 2014 Werner Koch
3  *
4  * This file is part of GnuPG.
5  *
6  * This file is free software; you can redistribute it and/or modify
7  * it under the terms of either
8  *
9  *   - the GNU Lesser General Public License as published by the Free
10  *     Software Foundation; either version 3 of the License, or (at
11  *     your option) any later version.
12  *
13  * or
14  *
15  *   - the GNU General Public License as published by the Free
16  *     Software Foundation; either version 2 of the License, or (at
17  *     your option) any later version.
18  *
19  * or both in parallel, as here.
20  *
21  * This file is distributed in the hope that it will be useful,
22  * but WITHOUT ANY WARRANTY; without even the implied warranty of
23  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24  * GNU General Public License for more details.
25  *
26  * You should have received a copy of the GNU General Public License
27  * along with this program; if not, see <https://www.gnu.org/licenses/>.
28  */
29
30 #include <config.h>
31 #include <stdio.h>
32 #include <stdlib.h>
33 #include <string.h>
34
35 #include "t-support.h"
36 #include "stringhelp.h"
37
38 static void
39 test_map_static_macro_string (void)
40 {
41   static struct {
42     const char *string;
43     const char *expected;
44     const char *lastresult;
45   } tests[] = {
46     { "@GPG@ (@GNUPG@)",
47       GPG_NAME " (" GNUPG_NAME ")" },
48     { "@GPG@(@GNUPG@)",
49       GPG_NAME "(" GNUPG_NAME ")" },
50     { "@GPG@@GNUPG@",
51       GPG_NAME  GNUPG_NAME },
52     { " @GPG@@GNUPG@",
53       " " GPG_NAME  GNUPG_NAME },
54     { " @GPG@@GNUPG@ ",
55       " " GPG_NAME  GNUPG_NAME " " },
56     { " @GPG@GNUPG@ ",
57       " " GPG_NAME "GNUPG@ " },
58     { " @ GPG@GNUPG@ ",
59       " @ GPG" GNUPG_NAME " " },
60     { "--@GPGTAR@",
61       "--" GPGTAR_NAME }
62   };
63   int testno;
64   const char *result;
65
66   for (testno=0; testno < DIM(tests); testno++)
67     {
68       result = map_static_macro_string (tests[testno].string);
69       if (!result)
70         fail (testno);
71       else if (strcmp (result, tests[testno].expected))
72         fail (testno);
73       if (!tests[testno].lastresult)
74         tests[testno].lastresult = result;
75     }
76
77   /* A second time to check that the same string is been returned.  */
78   for (testno=0; testno < DIM(tests); testno++)
79     {
80       result = map_static_macro_string (tests[testno].string);
81       if (!result)
82         fail (testno);
83       else if (strcmp (result, tests[testno].expected))
84         fail (testno);
85       if (result != tests[testno].lastresult)
86         fail (testno);
87     }
88 }
89
90
91 int
92 main (int argc, char **argv)
93 {
94   (void)argc;
95   (void)argv;
96
97   test_map_static_macro_string ();
98
99   return 0;
100 }