url.c
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:4k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * url.c: Test for url encoding/decoding stuff
  3.  *****************************************************************************
  4.  * Copyright (C) 2006 Rémi Denis-Courmont
  5.  * $Id: f68a0018106104c58b055c4cec769c2f05f56a5c $
  6.  *
  7.  * This program is free software; you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License as published by
  9.  * the Free Software Foundation; either version 2 of the License, or
  10.  * (at your option) any later version.
  11.  *
  12.  * This program is distributed in the hope that it will be useful,
  13.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.  * GNU General Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU General Public License
  18.  * along with this program; if not, write to the Free Software
  19.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  20.  *****************************************************************************/
  21. #ifdef HAVE_CONFIG_H
  22. # include "config.h"
  23. #endif
  24. #include <vlc_common.h>
  25. #include "vlc_url.h"
  26. #include "vlc_strings.h"
  27. #include <stdio.h>
  28. #include <stdlib.h>
  29. #include <assert.h>
  30. typedef char * (*conv_t) (const char *);
  31. static void test (conv_t f, const char *in, const char *out)
  32. {
  33.     char *res;
  34.     printf (""%s" -> "%s" ?n", in, out);
  35.     res = f (in);
  36.     if (res == NULL)
  37.         exit (1);
  38.     if (strcmp (res, out))
  39.     {
  40.         printf (" ERROR: got "%s"n", res);
  41.         exit (2);
  42.     }
  43.     free (res);
  44. }
  45. static inline void test_decode (const char *in, const char *out)
  46. {
  47.     test (decode_URI_duplicate, in, out);
  48. }
  49. static inline void test_b64 (const char *in, const char *out)
  50. {
  51.     test (vlc_b64_encode, in, out);
  52. }
  53. static inline void test_path (const char *in, const char *out)
  54. {
  55.     test (make_URI, in, out);
  56. }
  57. int main (void)
  58. {
  59.     int val;
  60.     (void)setvbuf (stdout, NULL, _IONBF, 0);
  61.     test_decode ("this_should_not_be_modified_1234",
  62.                  "this_should_not_be_modified_1234");
  63.     test_decode ("This+should+be+modified+1234!",
  64.                  "This should be modified 1234!");
  65.     test_decode ("This%20should%20be%20modified%201234!",
  66.                  "This should be modified 1234!");
  67.     test_decode ("%7E", "~");
  68.     /* tests with invalid input */
  69.     test_decode ("%", "%");
  70.     test_decode ("%2", "%2");
  71.     test_decode ("%0000", "");
  72.     /* UTF-8 tests */
  73.     test_decode ("T%C3%a9l%c3%A9vision+%e2%82%Ac", "Télévision €");
  74.     test_decode ("T%E9l%E9vision", "T?l?vision");
  75.     test_decode ("%C1%94%C3%a9l%c3%A9vision", "??élévision"); /* overlong */
  76.     /* Base 64 tests */
  77.     test_b64 ("", "");
  78.     test_b64 ("f", "Zg==");
  79.     test_b64 ("fo", "Zm8=");
  80.     test_b64 ("foo", "Zm9v");
  81.     test_b64 ("foob", "Zm9vYg==");
  82.     test_b64 ("fooba", "Zm9vYmE=");
  83.     test_b64 ("foobar", "Zm9vYmFy");
  84.     /* Path test */
  85.     test_path ("file:///", "file:///");
  86.     test_path ("http://www.example.com/%7Ejohn/",
  87.                "http://www.example.com/%7Ejohn/");
  88.     test_path ("/", "file:///");
  89.     test_path ("/home/john/", "file:///home/john/");
  90.     test_path ("/home/john/music.ogg", "file:///home/john/music.ogg");
  91.     test_path ("\\server/pub/music.ogg", "smb://server/pub/music.ogg");
  92.     test_path ("\\server\pub\music.ogg", "smb://server/pub/music.ogg");
  93.     /*int fd = open (".", O_RDONLY);
  94.     assert (fd != -1);*/
  95.     val = chdir ("/tmp");
  96.     assert (val != -1);
  97.     test_path ("movie.ogg", "file:///tmp/movie.ogg");
  98.     test_path (".", "file:///tmp/.");
  99.     test_path ("", "file:///tmp/");
  100.     /*val = fchdir (fd);
  101.     assert (val != -1);*/
  102.     return 0;
  103. }