tests: Add test for the ssh key export.
[gnupg.git] / common / t-percent.c
index 93d95f7..145a89b 100644 (file)
@@ -14,7 +14,7 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, see <http://www.gnu.org/licenses/>.
+ * along with this program; if not, see <https://www.gnu.org/licenses/>.
  */
 
 #include <config.h>
@@ -37,38 +37,39 @@ test_percent_plus_escape (void)
     const char *string;
     const char *expect;
   } tbl[] = {
-    { 
+    {
       "",
-      "" 
-    }, { 
+      ""
+    }, {
       "a",
       "a",
-    }, { 
+    }, {
       " ",
       "+",
-    }, { 
+    }, {
       "  ",
       "++"
-    }, { 
+    }, {
       "+ +",
       "%2B+%2B"
-    }, { 
+    }, {
       "\" \"",
       "%22+%22"
-    }, { 
+    }, {
       "%22",
       "%2522"
-    }, { 
+    }, {
       "%% ",
       "%25%25+"
-    }, { 
+    }, {
       "\n ABC\t",
       "%0A+ABC%09"
     }, { NULL, NULL }
   };
-  char *buf;
+  char *buf, *buf2;
   int i;
-  
+  size_t len;
+
   for (i=0; tbl[i].string; i++)
     {
       buf = percent_plus_escape (tbl[i].string);
@@ -79,19 +80,35 @@ test_percent_plus_escape (void)
         }
       if (strcmp (buf, tbl[i].expect))
         fail (i);
+      buf2 = percent_plus_unescape (buf, 0);
+      if (!buf2)
+        {
+          fprintf (stderr, "out of core: %s\n", strerror (errno));
+          exit (2);
+        }
+      if (strcmp (buf2, tbl[i].string))
+        fail (i);
+      xfree (buf2);
+      /* Now test the inplace conversion.  */
+      len = percent_plus_unescape_inplace (buf, 0);
+      buf[len] = 0;
+      if (strcmp (buf, tbl[i].string))
+        fail (i);
       xfree (buf);
     }
 }
 
 
+
 int
 main (int argc, char **argv)
 {
   (void)argc;
   (void)argv;
-  
+
+  /* FIXME: We escape_unescape is not tested - only
+     percent_plus_unescape.  */
   test_percent_plus_escape ();
 
   return 0;
 }
-