00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "curlcheck.h"
00023
00024 CURL *hnd;
00025
00026 static CURLcode unit_setup(void)
00027 {
00028 return CURLE_OK;
00029 }
00030
00031 static void unit_stop(void)
00032 {
00033 if(hnd)
00034 curl_easy_cleanup(hnd);
00035 }
00036
00037 struct test {
00038 const char *in;
00039 int inlen;
00040 const char *out;
00041 int outlen;
00042 };
00043
00044 UNITTEST_START
00045 {
00046
00047 const struct test list1[]={
00048 {"%61", 3, "a", 1},
00049 {"%61a", 4, "aa", 2},
00050 {"%61b", 4, "ab", 2},
00051 {"%6 1", 4, "%6 1", 4},
00052 {"%61", 1, "%", 1},
00053 {"%61", 2, "%6", 2},
00054 {"%6%a", 4, "%6%a", 4},
00055 {"%6a", 0, "j", 1},
00056 {"%FF", 0, "\xff", 1},
00057 {"%FF%00%ff", 9, "\xff\x00\xff", 3},
00058 {"%-2", 0, "%-2", 3},
00059 {"%FG", 0, "%FG", 3},
00060 {NULL, 0, NULL, 0}
00061 };
00062
00063 const struct test list2[]={
00064 {"a", 1, "a", 1},
00065 {"/", 1, "%2F", 3},
00066 {"a=b", 3, "a%3Db", 5},
00067 {"a=b", 0, "a%3Db", 5},
00068 {"a=b", 1, "a", 1},
00069 {"a=b", 2, "a%3D", 4},
00070 {"1/./0", 5, "1%2F.%2F0", 9},
00071 {"-._~!#%&", 0, "-._~%21%23%25%26", 16},
00072 {"a", 2, "a%00", 4},
00073 {"a\xff\x01g", 4, "a%FF%01g", 8},
00074 {NULL, 0, NULL, 0}
00075 };
00076 int i;
00077
00078 hnd = curl_easy_init();
00079 abort_unless(hnd != NULL, "returned NULL!");
00080 for(i=0; list1[i].in; i++) {
00081 int outlen;
00082 char *out = curl_easy_unescape(hnd,
00083 list1[i].in, list1[i].inlen,
00084 &outlen);
00085
00086 abort_unless(out != NULL, "returned NULL!");
00087 fail_unless(outlen == list1[i].outlen, "wrong output length returned");
00088 fail_unless(!memcmp(out, list1[i].out, list1[i].outlen),
00089 "bad output data returned");
00090
00091 printf("curl_easy_unescape test %d DONE\n", i);
00092
00093 curl_free(out);
00094 }
00095
00096 for(i=0; list2[i].in; i++) {
00097 int outlen;
00098 char *out = curl_easy_escape(hnd, list2[i].in, list2[i].inlen);
00099 abort_unless(out != NULL, "returned NULL!");
00100
00101 outlen = (int)strlen(out);
00102 fail_unless(outlen == list2[i].outlen, "wrong output length returned");
00103 fail_unless(!memcmp(out, list2[i].out, list2[i].outlen),
00104 "bad output data returned");
00105
00106 printf("curl_easy_escape test %d DONE (%s)\n", i, out);
00107
00108 curl_free(out);
00109 }
00110 }
00111 UNITTEST_STOP