LCOV - code coverage report
Current view: top level - common - t-percent.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 17 24 70.8 %
Date: 2016-11-29 15:00:56 Functions: 2 2 100.0 %

          Line data    Source code
       1             : /* t-percent.c - Module test for percent.c
       2             :  *      Copyright (C) 2008 Free Software Foundation, Inc.
       3             :  *
       4             :  * This file is part of GnuPG.
       5             :  *
       6             :  * GnuPG is free software; you can redistribute it and/or modify
       7             :  * it under the terms of the GNU General Public License as published by
       8             :  * the Free Software Foundation; either version 3 of the License, or
       9             :  * (at your option) any later version.
      10             :  *
      11             :  * GnuPG is distributed in the hope that it will be useful,
      12             :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      13             :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14             :  * GNU General Public License for more details.
      15             :  *
      16             :  * You should have received a copy of the GNU General Public License
      17             :  * along with this program; if not, see <https://www.gnu.org/licenses/>.
      18             :  */
      19             : 
      20             : #include <config.h>
      21             : #include <stdio.h>
      22             : #include <stdlib.h>
      23             : #include <assert.h>
      24             : 
      25             : #include "util.h"
      26             : 
      27             : #define pass()  do { ; } while(0)
      28             : #define fail(a)  do { fprintf (stderr, "%s:%d: test %d failed\n",\
      29             :                                __FILE__,__LINE__, (a));          \
      30             :                      exit (1);                                   \
      31             :                    } while(0)
      32             : 
      33             : static void
      34           1 : test_percent_plus_escape (void)
      35             : {
      36             :   static struct {
      37             :     const char *string;
      38             :     const char *expect;
      39             :   } tbl[] = {
      40             :     {
      41             :       "",
      42             :       ""
      43             :     }, {
      44             :       "a",
      45             :       "a",
      46             :     }, {
      47             :       " ",
      48             :       "+",
      49             :     }, {
      50             :       "  ",
      51             :       "++"
      52             :     }, {
      53             :       "+ +",
      54             :       "%2B+%2B"
      55             :     }, {
      56             :       "\" \"",
      57             :       "%22+%22"
      58             :     }, {
      59             :       "%22",
      60             :       "%2522"
      61             :     }, {
      62             :       "%% ",
      63             :       "%25%25+"
      64             :     }, {
      65             :       "\n ABC\t",
      66             :       "%0A+ABC%09"
      67             :     }, { NULL, NULL }
      68             :   };
      69             :   char *buf, *buf2;
      70             :   int i;
      71             :   size_t len;
      72             : 
      73          10 :   for (i=0; tbl[i].string; i++)
      74             :     {
      75           9 :       buf = percent_plus_escape (tbl[i].string);
      76           9 :       if (!buf)
      77             :         {
      78           0 :           fprintf (stderr, "out of core: %s\n", strerror (errno));
      79           0 :           exit (2);
      80             :         }
      81           9 :       if (strcmp (buf, tbl[i].expect))
      82           0 :         fail (i);
      83           9 :       buf2 = percent_plus_unescape (buf, 0);
      84           9 :       if (!buf2)
      85             :         {
      86           0 :           fprintf (stderr, "out of core: %s\n", strerror (errno));
      87           0 :           exit (2);
      88             :         }
      89           9 :       if (strcmp (buf2, tbl[i].string))
      90           0 :         fail (i);
      91           9 :       xfree (buf2);
      92             :       /* Now test the inplace conversion.  */
      93           9 :       len = percent_plus_unescape_inplace (buf, 0);
      94           9 :       buf[len] = 0;
      95           9 :       if (strcmp (buf, tbl[i].string))
      96           0 :         fail (i);
      97           9 :       xfree (buf);
      98             :     }
      99           1 : }
     100             : 
     101             : 
     102             : 
     103             : int
     104           1 : main (int argc, char **argv)
     105             : {
     106             :   (void)argc;
     107             :   (void)argv;
     108             : 
     109             :   /* FIXME: We escape_unescape is not tested - only
     110             :      percent_plus_unescape.  */
     111           1 :   test_percent_plus_escape ();
     112             : 
     113           1 :   return 0;
     114             : }

Generated by: LCOV version 1.11