PageRenderTime 64ms CodeModel.GetById 27ms RepoModel.GetById 0ms app.codeStats 0ms

/apps/curl-7.19.6/tests/libtest/lib557.c

https://bitbucket.org/jonathanxavier/snake-os
C | 1090 lines | 853 code | 224 blank | 13 comment | 36 complexity | 72ab8f3972de5a753e3d455afb4db1cc MD5 | raw file
Possible License(s): AGPL-1.0, CC-BY-SA-3.0, GPL-2.0, LGPL-2.0, 0BSD, BSD-3-Clause, GPL-3.0

Large files files are truncated, but you can click here to view the full file

  1. /*****************************************************************************
  2. * _ _ ____ _
  3. * Project ___| | | | _ \| |
  4. * / __| | | | |_) | |
  5. * | (__| |_| | _ <| |___
  6. * \___|\___/|_| \_\_____|
  7. *
  8. * $Id: lib557.c,v 1.7 2008-09-21 03:48:25 yangtse Exp $
  9. */
  10. /*
  11. * The purpose of this test is to minimally exercise libcurl's internal
  12. * curl_m*printf formatting capabilities and handling of some data types.
  13. */
  14. #include "test.h"
  15. #include <curl/mprintf.h>
  16. #include "memdebug.h"
  17. #if (CURL_SIZEOF_CURL_OFF_T > CURL_SIZEOF_LONG)
  18. # define MPRNT_SUFFIX_CURL_OFF_T LL
  19. #else
  20. # define MPRNT_SUFFIX_CURL_OFF_T L
  21. #endif
  22. #ifdef CURL_ISOCPP
  23. # define MPRNT_OFF_T_C_HELPER2(Val,Suffix) Val ## Suffix
  24. #else
  25. # define MPRNT_OFF_T_C_HELPER2(Val,Suffix) Val/**/Suffix
  26. #endif
  27. #define MPRNT_OFF_T_C_HELPER1(Val,Suffix) MPRNT_OFF_T_C_HELPER2(Val,Suffix)
  28. #define MPRNT_OFF_T_C(Val) MPRNT_OFF_T_C_HELPER1(Val,MPRNT_SUFFIX_CURL_OFF_T)
  29. #define BUFSZ 256
  30. #define UINT_TESTS_ARRSZ 1 + 100
  31. #define SINT_TESTS_ARRSZ 1 + 100
  32. #define ULONG_TESTS_ARRSZ 1 + 100
  33. #define SLONG_TESTS_ARRSZ 1 + 100
  34. #define COFFT_TESTS_ARRSZ 1 + 100
  35. struct unsint_st {
  36. unsigned int num; /* unsigned int */
  37. const char *expected; /* expected string */
  38. char result[BUFSZ]; /* result string */
  39. };
  40. struct sigint_st {
  41. int num; /* signed int */
  42. const char *expected; /* expected string */
  43. char result[BUFSZ]; /* result string */
  44. };
  45. struct unslong_st {
  46. unsigned long num; /* unsigned long */
  47. const char *expected; /* expected string */
  48. char result[BUFSZ]; /* result string */
  49. };
  50. struct siglong_st {
  51. long num; /* signed long */
  52. const char *expected; /* expected string */
  53. char result[BUFSZ]; /* result string */
  54. };
  55. struct curloff_st {
  56. curl_off_t num; /* curl_off_t */
  57. const char *expected; /* expected string */
  58. char result[BUFSZ]; /* result string */
  59. };
  60. static struct unsint_st ui_test[UINT_TESTS_ARRSZ];
  61. static struct sigint_st si_test[SINT_TESTS_ARRSZ];
  62. static struct unslong_st ul_test[ULONG_TESTS_ARRSZ];
  63. static struct siglong_st sl_test[SLONG_TESTS_ARRSZ];
  64. static struct curloff_st co_test[COFFT_TESTS_ARRSZ];
  65. static int test_unsigned_int_formatting(void)
  66. {
  67. int i, j;
  68. int num_uint_tests;
  69. int failed = 0;
  70. #if (SIZEOF_INT == 2)
  71. i=1; ui_test[i].num = 0xFFFFU; ui_test[i].expected = "65535";
  72. i++; ui_test[i].num = 0xFF00U; ui_test[i].expected = "65280";
  73. i++; ui_test[i].num = 0x00FFU; ui_test[i].expected = "255";
  74. i++; ui_test[i].num = 0xF000U; ui_test[i].expected = "61440";
  75. i++; ui_test[i].num = 0x0F00U; ui_test[i].expected = "3840";
  76. i++; ui_test[i].num = 0x00F0U; ui_test[i].expected = "240";
  77. i++; ui_test[i].num = 0x000FU; ui_test[i].expected = "15";
  78. i++; ui_test[i].num = 0xC000U; ui_test[i].expected = "49152";
  79. i++; ui_test[i].num = 0x0C00U; ui_test[i].expected = "3072";
  80. i++; ui_test[i].num = 0x00C0U; ui_test[i].expected = "192";
  81. i++; ui_test[i].num = 0x000CU; ui_test[i].expected = "12";
  82. i++; ui_test[i].num = 0x0001U; ui_test[i].expected = "1";
  83. i++; ui_test[i].num = 0x0000U; ui_test[i].expected = "0";
  84. num_uint_tests = i;
  85. #elif (SIZEOF_INT == 4)
  86. i=1; ui_test[i].num = 0xFFFFFFFFU; ui_test[i].expected = "4294967295";
  87. i++; ui_test[i].num = 0xFFFF0000U; ui_test[i].expected = "4294901760";
  88. i++; ui_test[i].num = 0x0000FFFFU; ui_test[i].expected = "65535";
  89. i++; ui_test[i].num = 0xFF000000U; ui_test[i].expected = "4278190080";
  90. i++; ui_test[i].num = 0x00FF0000U; ui_test[i].expected = "16711680";
  91. i++; ui_test[i].num = 0x0000FF00U; ui_test[i].expected = "65280";
  92. i++; ui_test[i].num = 0x000000FFU; ui_test[i].expected = "255";
  93. i++; ui_test[i].num = 0xF0000000U; ui_test[i].expected = "4026531840";
  94. i++; ui_test[i].num = 0x0F000000U; ui_test[i].expected = "251658240";
  95. i++; ui_test[i].num = 0x00F00000U; ui_test[i].expected = "15728640";
  96. i++; ui_test[i].num = 0x000F0000U; ui_test[i].expected = "983040";
  97. i++; ui_test[i].num = 0x0000F000U; ui_test[i].expected = "61440";
  98. i++; ui_test[i].num = 0x00000F00U; ui_test[i].expected = "3840";
  99. i++; ui_test[i].num = 0x000000F0U; ui_test[i].expected = "240";
  100. i++; ui_test[i].num = 0x0000000FU; ui_test[i].expected = "15";
  101. i++; ui_test[i].num = 0xC0000000U; ui_test[i].expected = "3221225472";
  102. i++; ui_test[i].num = 0x0C000000U; ui_test[i].expected = "201326592";
  103. i++; ui_test[i].num = 0x00C00000U; ui_test[i].expected = "12582912";
  104. i++; ui_test[i].num = 0x000C0000U; ui_test[i].expected = "786432";
  105. i++; ui_test[i].num = 0x0000C000U; ui_test[i].expected = "49152";
  106. i++; ui_test[i].num = 0x00000C00U; ui_test[i].expected = "3072";
  107. i++; ui_test[i].num = 0x000000C0U; ui_test[i].expected = "192";
  108. i++; ui_test[i].num = 0x0000000CU; ui_test[i].expected = "12";
  109. i++; ui_test[i].num = 0x00000001U; ui_test[i].expected = "1";
  110. i++; ui_test[i].num = 0x00000000U; ui_test[i].expected = "0";
  111. num_uint_tests = i;
  112. #elif (SIZEOF_INT == 8)
  113. i=1; ui_test[i].num = 0xFFFFFFFFFFFFFFFFU; ui_test[i].expected = "18446744073709551615";
  114. i++; ui_test[i].num = 0xFFFFFFFF00000000U; ui_test[i].expected = "18446744069414584320";
  115. i++; ui_test[i].num = 0x00000000FFFFFFFFU; ui_test[i].expected = "4294967295";
  116. i++; ui_test[i].num = 0xFFFF000000000000U; ui_test[i].expected = "18446462598732840960";
  117. i++; ui_test[i].num = 0x0000FFFF00000000U; ui_test[i].expected = "281470681743360";
  118. i++; ui_test[i].num = 0x00000000FFFF0000U; ui_test[i].expected = "4294901760";
  119. i++; ui_test[i].num = 0x000000000000FFFFU; ui_test[i].expected = "65535";
  120. i++; ui_test[i].num = 0xFF00000000000000U; ui_test[i].expected = "18374686479671623680";
  121. i++; ui_test[i].num = 0x00FF000000000000U; ui_test[i].expected = "71776119061217280";
  122. i++; ui_test[i].num = 0x0000FF0000000000U; ui_test[i].expected = "280375465082880";
  123. i++; ui_test[i].num = 0x000000FF00000000U; ui_test[i].expected = "1095216660480";
  124. i++; ui_test[i].num = 0x00000000FF000000U; ui_test[i].expected = "4278190080";
  125. i++; ui_test[i].num = 0x0000000000FF0000U; ui_test[i].expected = "16711680";
  126. i++; ui_test[i].num = 0x000000000000FF00U; ui_test[i].expected = "65280";
  127. i++; ui_test[i].num = 0x00000000000000FFU; ui_test[i].expected = "255";
  128. i++; ui_test[i].num = 0xF000000000000000U; ui_test[i].expected = "17293822569102704640";
  129. i++; ui_test[i].num = 0x0F00000000000000U; ui_test[i].expected = "1080863910568919040";
  130. i++; ui_test[i].num = 0x00F0000000000000U; ui_test[i].expected = "67553994410557440";
  131. i++; ui_test[i].num = 0x000F000000000000U; ui_test[i].expected = "4222124650659840";
  132. i++; ui_test[i].num = 0x0000F00000000000U; ui_test[i].expected = "263882790666240";
  133. i++; ui_test[i].num = 0x00000F0000000000U; ui_test[i].expected = "16492674416640";
  134. i++; ui_test[i].num = 0x000000F000000000U; ui_test[i].expected = "1030792151040";
  135. i++; ui_test[i].num = 0x0000000F00000000U; ui_test[i].expected = "64424509440";
  136. i++; ui_test[i].num = 0x00000000F0000000U; ui_test[i].expected = "4026531840";
  137. i++; ui_test[i].num = 0x000000000F000000U; ui_test[i].expected = "251658240";
  138. i++; ui_test[i].num = 0x0000000000F00000U; ui_test[i].expected = "15728640";
  139. i++; ui_test[i].num = 0x00000000000F0000U; ui_test[i].expected = "983040";
  140. i++; ui_test[i].num = 0x000000000000F000U; ui_test[i].expected = "61440";
  141. i++; ui_test[i].num = 0x0000000000000F00U; ui_test[i].expected = "3840";
  142. i++; ui_test[i].num = 0x00000000000000F0U; ui_test[i].expected = "240";
  143. i++; ui_test[i].num = 0x000000000000000FU; ui_test[i].expected = "15";
  144. i++; ui_test[i].num = 0xC000000000000000U; ui_test[i].expected = "13835058055282163712";
  145. i++; ui_test[i].num = 0x0C00000000000000U; ui_test[i].expected = "864691128455135232";
  146. i++; ui_test[i].num = 0x00C0000000000000U; ui_test[i].expected = "54043195528445952";
  147. i++; ui_test[i].num = 0x000C000000000000U; ui_test[i].expected = "3377699720527872";
  148. i++; ui_test[i].num = 0x0000C00000000000U; ui_test[i].expected = "211106232532992";
  149. i++; ui_test[i].num = 0x00000C0000000000U; ui_test[i].expected = "13194139533312";
  150. i++; ui_test[i].num = 0x000000C000000000U; ui_test[i].expected = "824633720832";
  151. i++; ui_test[i].num = 0x0000000C00000000U; ui_test[i].expected = "51539607552";
  152. i++; ui_test[i].num = 0x00000000C0000000U; ui_test[i].expected = "3221225472";
  153. i++; ui_test[i].num = 0x000000000C000000U; ui_test[i].expected = "201326592";
  154. i++; ui_test[i].num = 0x0000000000C00000U; ui_test[i].expected = "12582912";
  155. i++; ui_test[i].num = 0x00000000000C0000U; ui_test[i].expected = "786432";
  156. i++; ui_test[i].num = 0x000000000000C000U; ui_test[i].expected = "49152";
  157. i++; ui_test[i].num = 0x0000000000000C00U; ui_test[i].expected = "3072";
  158. i++; ui_test[i].num = 0x00000000000000C0U; ui_test[i].expected = "192";
  159. i++; ui_test[i].num = 0x000000000000000CU; ui_test[i].expected = "12";
  160. i++; ui_test[i].num = 0x00000001U; ui_test[i].expected = "1";
  161. i++; ui_test[i].num = 0x00000000U; ui_test[i].expected = "0";
  162. num_uint_tests = i;
  163. #endif
  164. for(i=1; i<=num_uint_tests; i++) {
  165. for(j=0; j<BUFSZ; j++)
  166. ui_test[i].result[j] = 'X';
  167. ui_test[i].result[BUFSZ-1] = '\0';
  168. (void)curl_msprintf(ui_test[i].result, "%u", ui_test[i].num);
  169. if(memcmp(ui_test[i].result,
  170. ui_test[i].expected,
  171. strlen(ui_test[i].expected))) {
  172. printf("unsigned int test #%.2d: Failed (Expected: %s Got: %s)\n",
  173. i, ui_test[i].expected, ui_test[i].result);
  174. failed++;
  175. }
  176. }
  177. if(!failed)
  178. printf("All curl_mprintf() unsigned int tests OK!\n");
  179. else
  180. printf("Some curl_mprintf() unsigned int tests Failed!\n");
  181. return failed;
  182. }
  183. static int test_signed_int_formatting(void)
  184. {
  185. int i, j;
  186. int num_sint_tests;
  187. int failed = 0;
  188. #if (SIZEOF_INT == 2)
  189. i=1; si_test[i].num = 0x7FFF; si_test[i].expected = "32767";
  190. i++; si_test[i].num = 0x7FFE; si_test[i].expected = "32766";
  191. i++; si_test[i].num = 0x7FFD; si_test[i].expected = "32765";
  192. i++; si_test[i].num = 0x7F00; si_test[i].expected = "32512";
  193. i++; si_test[i].num = 0x07F0; si_test[i].expected = "2032";
  194. i++; si_test[i].num = 0x007F; si_test[i].expected = "127";
  195. i++; si_test[i].num = 0x7000; si_test[i].expected = "28672";
  196. i++; si_test[i].num = 0x0700; si_test[i].expected = "1792";
  197. i++; si_test[i].num = 0x0070; si_test[i].expected = "112";
  198. i++; si_test[i].num = 0x0007; si_test[i].expected = "7";
  199. i++; si_test[i].num = 0x5000; si_test[i].expected = "20480";
  200. i++; si_test[i].num = 0x0500; si_test[i].expected = "1280";
  201. i++; si_test[i].num = 0x0050; si_test[i].expected = "80";
  202. i++; si_test[i].num = 0x0005; si_test[i].expected = "5";
  203. i++; si_test[i].num = 0x0001; si_test[i].expected = "1";
  204. i++; si_test[i].num = 0x0000; si_test[i].expected = "0";
  205. i++; si_test[i].num = -0x7FFF -1; si_test[i].expected = "-32768";
  206. i++; si_test[i].num = -0x7FFE -1; si_test[i].expected = "-32767";
  207. i++; si_test[i].num = -0x7FFD -1; si_test[i].expected = "-32766";
  208. i++; si_test[i].num = -0x7F00 -1; si_test[i].expected = "-32513";
  209. i++; si_test[i].num = -0x07F0 -1; si_test[i].expected = "-2033";
  210. i++; si_test[i].num = -0x007F -1; si_test[i].expected = "-128";
  211. i++; si_test[i].num = -0x7000 -1; si_test[i].expected = "-28673";
  212. i++; si_test[i].num = -0x0700 -1; si_test[i].expected = "-1793";
  213. i++; si_test[i].num = -0x0070 -1; si_test[i].expected = "-113";
  214. i++; si_test[i].num = -0x0007 -1; si_test[i].expected = "-8";
  215. i++; si_test[i].num = -0x5000 -1; si_test[i].expected = "-20481";
  216. i++; si_test[i].num = -0x0500 -1; si_test[i].expected = "-1281";
  217. i++; si_test[i].num = -0x0050 -1; si_test[i].expected = "-81";
  218. i++; si_test[i].num = -0x0005 -1; si_test[i].expected = "-6";
  219. i++; si_test[i].num = 0x0000 -1; si_test[i].expected = "-1";
  220. num_sint_tests = i;
  221. #elif (SIZEOF_INT == 4)
  222. i=1; si_test[i].num = 0x7FFFFFFF; si_test[i].expected = "2147483647";
  223. i++; si_test[i].num = 0x7FFFFFFE; si_test[i].expected = "2147483646";
  224. i++; si_test[i].num = 0x7FFFFFFD; si_test[i].expected = "2147483645";
  225. i++; si_test[i].num = 0x7FFF0000; si_test[i].expected = "2147418112";
  226. i++; si_test[i].num = 0x00007FFF; si_test[i].expected = "32767";
  227. i++; si_test[i].num = 0x7F000000; si_test[i].expected = "2130706432";
  228. i++; si_test[i].num = 0x007F0000; si_test[i].expected = "8323072";
  229. i++; si_test[i].num = 0x00007F00; si_test[i].expected = "32512";
  230. i++; si_test[i].num = 0x0000007F; si_test[i].expected = "127";
  231. i++; si_test[i].num = 0x70000000; si_test[i].expected = "1879048192";
  232. i++; si_test[i].num = 0x07000000; si_test[i].expected = "117440512";
  233. i++; si_test[i].num = 0x00700000; si_test[i].expected = "7340032";
  234. i++; si_test[i].num = 0x00070000; si_test[i].expected = "458752";
  235. i++; si_test[i].num = 0x00007000; si_test[i].expected = "28672";
  236. i++; si_test[i].num = 0x00000700; si_test[i].expected = "1792";
  237. i++; si_test[i].num = 0x00000070; si_test[i].expected = "112";
  238. i++; si_test[i].num = 0x00000007; si_test[i].expected = "7";
  239. i++; si_test[i].num = 0x50000000; si_test[i].expected = "1342177280";
  240. i++; si_test[i].num = 0x05000000; si_test[i].expected = "83886080";
  241. i++; si_test[i].num = 0x00500000; si_test[i].expected = "5242880";
  242. i++; si_test[i].num = 0x00050000; si_test[i].expected = "327680";
  243. i++; si_test[i].num = 0x00005000; si_test[i].expected = "20480";
  244. i++; si_test[i].num = 0x00000500; si_test[i].expected = "1280";
  245. i++; si_test[i].num = 0x00000050; si_test[i].expected = "80";
  246. i++; si_test[i].num = 0x00000005; si_test[i].expected = "5";
  247. i++; si_test[i].num = 0x00000001; si_test[i].expected = "1";
  248. i++; si_test[i].num = 0x00000000; si_test[i].expected = "0";
  249. i++; si_test[i].num = -0x7FFFFFFF -1; si_test[i].expected = "-2147483648";
  250. i++; si_test[i].num = -0x7FFFFFFE -1; si_test[i].expected = "-2147483647";
  251. i++; si_test[i].num = -0x7FFFFFFD -1; si_test[i].expected = "-2147483646";
  252. i++; si_test[i].num = -0x7FFF0000 -1; si_test[i].expected = "-2147418113";
  253. i++; si_test[i].num = -0x00007FFF -1; si_test[i].expected = "-32768";
  254. i++; si_test[i].num = -0x7F000000 -1; si_test[i].expected = "-2130706433";
  255. i++; si_test[i].num = -0x007F0000 -1; si_test[i].expected = "-8323073";
  256. i++; si_test[i].num = -0x00007F00 -1; si_test[i].expected = "-32513";
  257. i++; si_test[i].num = -0x0000007F -1; si_test[i].expected = "-128";
  258. i++; si_test[i].num = -0x70000000 -1; si_test[i].expected = "-1879048193";
  259. i++; si_test[i].num = -0x07000000 -1; si_test[i].expected = "-117440513";
  260. i++; si_test[i].num = -0x00700000 -1; si_test[i].expected = "-7340033";
  261. i++; si_test[i].num = -0x00070000 -1; si_test[i].expected = "-458753";
  262. i++; si_test[i].num = -0x00007000 -1; si_test[i].expected = "-28673";
  263. i++; si_test[i].num = -0x00000700 -1; si_test[i].expected = "-1793";
  264. i++; si_test[i].num = -0x00000070 -1; si_test[i].expected = "-113";
  265. i++; si_test[i].num = -0x00000007 -1; si_test[i].expected = "-8";
  266. i++; si_test[i].num = -0x50000000 -1; si_test[i].expected = "-1342177281";
  267. i++; si_test[i].num = -0x05000000 -1; si_test[i].expected = "-83886081";
  268. i++; si_test[i].num = -0x00500000 -1; si_test[i].expected = "-5242881";
  269. i++; si_test[i].num = -0x00050000 -1; si_test[i].expected = "-327681";
  270. i++; si_test[i].num = -0x00005000 -1; si_test[i].expected = "-20481";
  271. i++; si_test[i].num = -0x00000500 -1; si_test[i].expected = "-1281";
  272. i++; si_test[i].num = -0x00000050 -1; si_test[i].expected = "-81";
  273. i++; si_test[i].num = -0x00000005 -1; si_test[i].expected = "-6";
  274. i++; si_test[i].num = 0x00000000 -1; si_test[i].expected = "-1";
  275. num_sint_tests = i;
  276. #elif (SIZEOF_INT == 8)
  277. i=1; si_test[i].num = 0x7FFFFFFFFFFFFFFF; si_test[i].expected = "9223372036854775807";
  278. i++; si_test[i].num = 0x7FFFFFFFFFFFFFFE; si_test[i].expected = "9223372036854775806";
  279. i++; si_test[i].num = 0x7FFFFFFFFFFFFFFD; si_test[i].expected = "9223372036854775805";
  280. i++; si_test[i].num = 0x7FFFFFFF00000000; si_test[i].expected = "9223372032559808512";
  281. i++; si_test[i].num = 0x000000007FFFFFFF; si_test[i].expected = "2147483647";
  282. i++; si_test[i].num = 0x7FFF000000000000; si_test[i].expected = "9223090561878065152";
  283. i++; si_test[i].num = 0x00007FFF00000000; si_test[i].expected = "140733193388032";
  284. i++; si_test[i].num = 0x000000007FFF0000; si_test[i].expected = "2147418112";
  285. i++; si_test[i].num = 0x0000000000007FFF; si_test[i].expected = "32767";
  286. i++; si_test[i].num = 0x7F00000000000000; si_test[i].expected = "9151314442816847872";
  287. i++; si_test[i].num = 0x007F000000000000; si_test[i].expected = "35747322042253312";
  288. i++; si_test[i].num = 0x00007F0000000000; si_test[i].expected = "139637976727552";
  289. i++; si_test[i].num = 0x0000007F00000000; si_test[i].expected = "545460846592";
  290. i++; si_test[i].num = 0x000000007F000000; si_test[i].expected = "2130706432";
  291. i++; si_test[i].num = 0x00000000007F0000; si_test[i].expected = "8323072";
  292. i++; si_test[i].num = 0x0000000000007F00; si_test[i].expected = "32512";
  293. i++; si_test[i].num = 0x000000000000007F; si_test[i].expected = "127";
  294. i++; si_test[i].num = 0x7000000000000000; si_test[i].expected = "8070450532247928832";
  295. i++; si_test[i].num = 0x0700000000000000; si_test[i].expected = "504403158265495552";
  296. i++; si_test[i].num = 0x0070000000000000; si_test[i].expected = "31525197391593472";
  297. i++; si_test[i].num = 0x0007000000000000; si_test[i].expected = "1970324836974592";
  298. i++; si_test[i].num = 0x0000700000000000; si_test[i].expected = "123145302310912";
  299. i++; si_test[i].num = 0x0000070000000000; si_test[i].expected = "7696581394432";
  300. i++; si_test[i].num = 0x0000007000000000; si_test[i].expected = "481036337152";
  301. i++; si_test[i].num = 0x0000000700000000; si_test[i].expected = "30064771072";
  302. i++; si_test[i].num = 0x0000000070000000; si_test[i].expected = "1879048192";
  303. i++; si_test[i].num = 0x0000000007000000; si_test[i].expected = "117440512";
  304. i++; si_test[i].num = 0x0000000000700000; si_test[i].expected = "7340032";
  305. i++; si_test[i].num = 0x0000000000070000; si_test[i].expected = "458752";
  306. i++; si_test[i].num = 0x0000000000007000; si_test[i].expected = "28672";
  307. i++; si_test[i].num = 0x0000000000000700; si_test[i].expected = "1792";
  308. i++; si_test[i].num = 0x0000000000000070; si_test[i].expected = "112";
  309. i++; si_test[i].num = 0x0000000000000007; si_test[i].expected = "7";
  310. i++; si_test[i].num = 0x0000000000000001; si_test[i].expected = "1";
  311. i++; si_test[i].num = 0x0000000000000000; si_test[i].expected = "0";
  312. i++; si_test[i].num = -0x7FFFFFFFFFFFFFFF -1; si_test[i].expected = "-9223372036854775808";
  313. i++; si_test[i].num = -0x7FFFFFFFFFFFFFFE -1; si_test[i].expected = "-9223372036854775807";
  314. i++; si_test[i].num = -0x7FFFFFFFFFFFFFFD -1; si_test[i].expected = "-9223372036854775806";
  315. i++; si_test[i].num = -0x7FFFFFFF00000000 -1; si_test[i].expected = "-9223372032559808513";
  316. i++; si_test[i].num = -0x000000007FFFFFFF -1; si_test[i].expected = "-2147483648";
  317. i++; si_test[i].num = -0x7FFF000000000000 -1; si_test[i].expected = "-9223090561878065153";
  318. i++; si_test[i].num = -0x00007FFF00000000 -1; si_test[i].expected = "-140733193388033";
  319. i++; si_test[i].num = -0x000000007FFF0000 -1; si_test[i].expected = "-2147418113";
  320. i++; si_test[i].num = -0x0000000000007FFF -1; si_test[i].expected = "-32768";
  321. i++; si_test[i].num = -0x7F00000000000000 -1; si_test[i].expected = "-9151314442816847873";
  322. i++; si_test[i].num = -0x007F000000000000 -1; si_test[i].expected = "-35747322042253313";
  323. i++; si_test[i].num = -0x00007F0000000000 -1; si_test[i].expected = "-139637976727553";
  324. i++; si_test[i].num = -0x0000007F00000000 -1; si_test[i].expected = "-545460846593";
  325. i++; si_test[i].num = -0x000000007F000000 -1; si_test[i].expected = "-2130706433";
  326. i++; si_test[i].num = -0x00000000007F0000 -1; si_test[i].expected = "-8323073";
  327. i++; si_test[i].num = -0x0000000000007F00 -1; si_test[i].expected = "-32513";
  328. i++; si_test[i].num = -0x000000000000007F -1; si_test[i].expected = "-128";
  329. i++; si_test[i].num = -0x7000000000000000 -1; si_test[i].expected = "-8070450532247928833";
  330. i++; si_test[i].num = -0x0700000000000000 -1; si_test[i].expected = "-504403158265495553";
  331. i++; si_test[i].num = -0x0070000000000000 -1; si_test[i].expected = "-31525197391593473";
  332. i++; si_test[i].num = -0x0007000000000000 -1; si_test[i].expected = "-1970324836974593";
  333. i++; si_test[i].num = -0x0000700000000000 -1; si_test[i].expected = "-123145302310913";
  334. i++; si_test[i].num = -0x0000070000000000 -1; si_test[i].expected = "-7696581394433";
  335. i++; si_test[i].num = -0x0000007000000000 -1; si_test[i].expected = "-481036337153";
  336. i++; si_test[i].num = -0x0000000700000000 -1; si_test[i].expected = "-30064771073";
  337. i++; si_test[i].num = -0x0000000070000000 -1; si_test[i].expected = "-1879048193";
  338. i++; si_test[i].num = -0x0000000007000000 -1; si_test[i].expected = "-117440513";
  339. i++; si_test[i].num = -0x0000000000700000 -1; si_test[i].expected = "-7340033";
  340. i++; si_test[i].num = -0x0000000000070000 -1; si_test[i].expected = "-458753";
  341. i++; si_test[i].num = -0x0000000000007000 -1; si_test[i].expected = "-28673";
  342. i++; si_test[i].num = -0x0000000000000700 -1; si_test[i].expected = "-1793";
  343. i++; si_test[i].num = -0x0000000000000070 -1; si_test[i].expected = "-113";
  344. i++; si_test[i].num = -0x0000000000000007 -1; si_test[i].expected = "-8";
  345. i++; si_test[i].num = 0x0000000000000000 -1; si_test[i].expected = "-1";
  346. num_sint_tests = i;
  347. #endif
  348. for(i=1; i<=num_sint_tests; i++) {
  349. for(j=0; j<BUFSZ; j++)
  350. si_test[i].result[j] = 'X';
  351. si_test[i].result[BUFSZ-1] = '\0';
  352. (void)curl_msprintf(si_test[i].result, "%d", si_test[i].num);
  353. if(memcmp(si_test[i].result,
  354. si_test[i].expected,
  355. strlen(si_test[i].expected))) {
  356. printf("signed int test #%.2d: Failed (Expected: %s Got: %s)\n",
  357. i, si_test[i].expected, si_test[i].result);
  358. failed++;
  359. }
  360. }
  361. if(!failed)
  362. printf("All curl_mprintf() signed int tests OK!\n");
  363. else
  364. printf("Some curl_mprintf() signed int tests Failed!\n");
  365. return failed;
  366. }
  367. static int test_unsigned_long_formatting(void)
  368. {
  369. int i, j;
  370. int num_ulong_tests;
  371. int failed = 0;
  372. #if (CURL_SIZEOF_LONG == 2)
  373. i=1; ul_test[i].num = 0xFFFFUL; ul_test[i].expected = "65535";
  374. i++; ul_test[i].num = 0xFF00UL; ul_test[i].expected = "65280";
  375. i++; ul_test[i].num = 0x00FFUL; ul_test[i].expected = "255";
  376. i++; ul_test[i].num = 0xF000UL; ul_test[i].expected = "61440";
  377. i++; ul_test[i].num = 0x0F00UL; ul_test[i].expected = "3840";
  378. i++; ul_test[i].num = 0x00F0UL; ul_test[i].expected = "240";
  379. i++; ul_test[i].num = 0x000FUL; ul_test[i].expected = "15";
  380. i++; ul_test[i].num = 0xC000UL; ul_test[i].expected = "49152";
  381. i++; ul_test[i].num = 0x0C00UL; ul_test[i].expected = "3072";
  382. i++; ul_test[i].num = 0x00C0UL; ul_test[i].expected = "192";
  383. i++; ul_test[i].num = 0x000CUL; ul_test[i].expected = "12";
  384. i++; ul_test[i].num = 0x0001UL; ul_test[i].expected = "1";
  385. i++; ul_test[i].num = 0x0000UL; ul_test[i].expected = "0";
  386. num_ulong_tests = i;
  387. #elif (CURL_SIZEOF_LONG == 4)
  388. i=1; ul_test[i].num = 0xFFFFFFFFUL; ul_test[i].expected = "4294967295";
  389. i++; ul_test[i].num = 0xFFFF0000UL; ul_test[i].expected = "4294901760";
  390. i++; ul_test[i].num = 0x0000FFFFUL; ul_test[i].expected = "65535";
  391. i++; ul_test[i].num = 0xFF000000UL; ul_test[i].expected = "4278190080";
  392. i++; ul_test[i].num = 0x00FF0000UL; ul_test[i].expected = "16711680";
  393. i++; ul_test[i].num = 0x0000FF00UL; ul_test[i].expected = "65280";
  394. i++; ul_test[i].num = 0x000000FFUL; ul_test[i].expected = "255";
  395. i++; ul_test[i].num = 0xF0000000UL; ul_test[i].expected = "4026531840";
  396. i++; ul_test[i].num = 0x0F000000UL; ul_test[i].expected = "251658240";
  397. i++; ul_test[i].num = 0x00F00000UL; ul_test[i].expected = "15728640";
  398. i++; ul_test[i].num = 0x000F0000UL; ul_test[i].expected = "983040";
  399. i++; ul_test[i].num = 0x0000F000UL; ul_test[i].expected = "61440";
  400. i++; ul_test[i].num = 0x00000F00UL; ul_test[i].expected = "3840";
  401. i++; ul_test[i].num = 0x000000F0UL; ul_test[i].expected = "240";
  402. i++; ul_test[i].num = 0x0000000FUL; ul_test[i].expected = "15";
  403. i++; ul_test[i].num = 0xC0000000UL; ul_test[i].expected = "3221225472";
  404. i++; ul_test[i].num = 0x0C000000UL; ul_test[i].expected = "201326592";
  405. i++; ul_test[i].num = 0x00C00000UL; ul_test[i].expected = "12582912";
  406. i++; ul_test[i].num = 0x000C0000UL; ul_test[i].expected = "786432";
  407. i++; ul_test[i].num = 0x0000C000UL; ul_test[i].expected = "49152";
  408. i++; ul_test[i].num = 0x00000C00UL; ul_test[i].expected = "3072";
  409. i++; ul_test[i].num = 0x000000C0UL; ul_test[i].expected = "192";
  410. i++; ul_test[i].num = 0x0000000CUL; ul_test[i].expected = "12";
  411. i++; ul_test[i].num = 0x00000001UL; ul_test[i].expected = "1";
  412. i++; ul_test[i].num = 0x00000000UL; ul_test[i].expected = "0";
  413. num_ulong_tests = i;
  414. #elif (CURL_SIZEOF_LONG == 8)
  415. i=1; ul_test[i].num = 0xFFFFFFFFFFFFFFFFUL; ul_test[i].expected = "18446744073709551615";
  416. i++; ul_test[i].num = 0xFFFFFFFF00000000UL; ul_test[i].expected = "18446744069414584320";
  417. i++; ul_test[i].num = 0x00000000FFFFFFFFUL; ul_test[i].expected = "4294967295";
  418. i++; ul_test[i].num = 0xFFFF000000000000UL; ul_test[i].expected = "18446462598732840960";
  419. i++; ul_test[i].num = 0x0000FFFF00000000UL; ul_test[i].expected = "281470681743360";
  420. i++; ul_test[i].num = 0x00000000FFFF0000UL; ul_test[i].expected = "4294901760";
  421. i++; ul_test[i].num = 0x000000000000FFFFUL; ul_test[i].expected = "65535";
  422. i++; ul_test[i].num = 0xFF00000000000000UL; ul_test[i].expected = "18374686479671623680";
  423. i++; ul_test[i].num = 0x00FF000000000000UL; ul_test[i].expected = "71776119061217280";
  424. i++; ul_test[i].num = 0x0000FF0000000000UL; ul_test[i].expected = "280375465082880";
  425. i++; ul_test[i].num = 0x000000FF00000000UL; ul_test[i].expected = "1095216660480";
  426. i++; ul_test[i].num = 0x00000000FF000000UL; ul_test[i].expected = "4278190080";
  427. i++; ul_test[i].num = 0x0000000000FF0000UL; ul_test[i].expected = "16711680";
  428. i++; ul_test[i].num = 0x000000000000FF00UL; ul_test[i].expected = "65280";
  429. i++; ul_test[i].num = 0x00000000000000FFUL; ul_test[i].expected = "255";
  430. i++; ul_test[i].num = 0xF000000000000000UL; ul_test[i].expected = "17293822569102704640";
  431. i++; ul_test[i].num = 0x0F00000000000000UL; ul_test[i].expected = "1080863910568919040";
  432. i++; ul_test[i].num = 0x00F0000000000000UL; ul_test[i].expected = "67553994410557440";
  433. i++; ul_test[i].num = 0x000F000000000000UL; ul_test[i].expected = "4222124650659840";
  434. i++; ul_test[i].num = 0x0000F00000000000UL; ul_test[i].expected = "263882790666240";
  435. i++; ul_test[i].num = 0x00000F0000000000UL; ul_test[i].expected = "16492674416640";
  436. i++; ul_test[i].num = 0x000000F000000000UL; ul_test[i].expected = "1030792151040";
  437. i++; ul_test[i].num = 0x0000000F00000000UL; ul_test[i].expected = "64424509440";
  438. i++; ul_test[i].num = 0x00000000F0000000UL; ul_test[i].expected = "4026531840";
  439. i++; ul_test[i].num = 0x000000000F000000UL; ul_test[i].expected = "251658240";
  440. i++; ul_test[i].num = 0x0000000000F00000UL; ul_test[i].expected = "15728640";
  441. i++; ul_test[i].num = 0x00000000000F0000UL; ul_test[i].expected = "983040";
  442. i++; ul_test[i].num = 0x000000000000F000UL; ul_test[i].expected = "61440";
  443. i++; ul_test[i].num = 0x0000000000000F00UL; ul_test[i].expected = "3840";
  444. i++; ul_test[i].num = 0x00000000000000F0UL; ul_test[i].expected = "240";
  445. i++; ul_test[i].num = 0x000000000000000FUL; ul_test[i].expected = "15";
  446. i++; ul_test[i].num = 0xC000000000000000UL; ul_test[i].expected = "13835058055282163712";
  447. i++; ul_test[i].num = 0x0C00000000000000UL; ul_test[i].expected = "864691128455135232";
  448. i++; ul_test[i].num = 0x00C0000000000000UL; ul_test[i].expected = "54043195528445952";
  449. i++; ul_test[i].num = 0x000C000000000000UL; ul_test[i].expected = "3377699720527872";
  450. i++; ul_test[i].num = 0x0000C00000000000UL; ul_test[i].expected = "211106232532992";
  451. i++; ul_test[i].num = 0x00000C0000000000UL; ul_test[i].expected = "13194139533312";
  452. i++; ul_test[i].num = 0x000000C000000000UL; ul_test[i].expected = "824633720832";
  453. i++; ul_test[i].num = 0x0000000C00000000UL; ul_test[i].expected = "51539607552";
  454. i++; ul_test[i].num = 0x00000000C0000000UL; ul_test[i].expected = "3221225472";
  455. i++; ul_test[i].num = 0x000000000C000000UL; ul_test[i].expected = "201326592";
  456. i++; ul_test[i].num = 0x0000000000C00000UL; ul_test[i].expected = "12582912";
  457. i++; ul_test[i].num = 0x00000000000C0000UL; ul_test[i].expected = "786432";
  458. i++; ul_test[i].num = 0x000000000000C000UL; ul_test[i].expected = "49152";
  459. i++; ul_test[i].num = 0x0000000000000C00UL; ul_test[i].expected = "3072";
  460. i++; ul_test[i].num = 0x00000000000000C0UL; ul_test[i].expected = "192";
  461. i++; ul_test[i].num = 0x000000000000000CUL; ul_test[i].expected = "12";
  462. i++; ul_test[i].num = 0x00000001UL; ul_test[i].expected = "1";
  463. i++; ul_test[i].num = 0x00000000UL; ul_test[i].expected = "0";
  464. num_ulong_tests = i;
  465. #endif
  466. for(i=1; i<=num_ulong_tests; i++) {
  467. for(j=0; j<BUFSZ; j++)
  468. ul_test[i].result[j] = 'X';
  469. ul_test[i].result[BUFSZ-1] = '\0';
  470. (void)curl_msprintf(ul_test[i].result, "%lu", ul_test[i].num);
  471. if(memcmp(ul_test[i].result,
  472. ul_test[i].expected,
  473. strlen(ul_test[i].expected))) {
  474. printf("unsigned long test #%.2d: Failed (Expected: %s Got: %s)\n",
  475. i, ul_test[i].expected, ul_test[i].result);
  476. failed++;
  477. }
  478. }
  479. if(!failed)
  480. printf("All curl_mprintf() unsigned long tests OK!\n");
  481. else
  482. printf("Some curl_mprintf() unsigned long tests Failed!\n");
  483. return failed;
  484. }
  485. static int test_signed_long_formatting(void)
  486. {
  487. int i, j;
  488. int num_slong_tests;
  489. int failed = 0;
  490. #if (CURL_SIZEOF_LONG == 2)
  491. i=1; sl_test[i].num = 0x7FFFL; sl_test[i].expected = "32767";
  492. i++; sl_test[i].num = 0x7FFEL; sl_test[i].expected = "32766";
  493. i++; sl_test[i].num = 0x7FFDL; sl_test[i].expected = "32765";
  494. i++; sl_test[i].num = 0x7F00L; sl_test[i].expected = "32512";
  495. i++; sl_test[i].num = 0x07F0L; sl_test[i].expected = "2032";
  496. i++; sl_test[i].num = 0x007FL; sl_test[i].expected = "127";
  497. i++; sl_test[i].num = 0x7000L; sl_test[i].expected = "28672";
  498. i++; sl_test[i].num = 0x0700L; sl_test[i].expected = "1792";
  499. i++; sl_test[i].num = 0x0070L; sl_test[i].expected = "112";
  500. i++; sl_test[i].num = 0x0007L; sl_test[i].expected = "7";
  501. i++; sl_test[i].num = 0x5000L; sl_test[i].expected = "20480";
  502. i++; sl_test[i].num = 0x0500L; sl_test[i].expected = "1280";
  503. i++; sl_test[i].num = 0x0050L; sl_test[i].expected = "80";
  504. i++; sl_test[i].num = 0x0005L; sl_test[i].expected = "5";
  505. i++; sl_test[i].num = 0x0001L; sl_test[i].expected = "1";
  506. i++; sl_test[i].num = 0x0000L; sl_test[i].expected = "0";
  507. i++; sl_test[i].num = -0x7FFFL -1L; sl_test[i].expected = "-32768";
  508. i++; sl_test[i].num = -0x7FFEL -1L; sl_test[i].expected = "-32767";
  509. i++; sl_test[i].num = -0x7FFDL -1L; sl_test[i].expected = "-32766";
  510. i++; sl_test[i].num = -0x7F00L -1L; sl_test[i].expected = "-32513";
  511. i++; sl_test[i].num = -0x07F0L -1L; sl_test[i].expected = "-2033";
  512. i++; sl_test[i].num = -0x007FL -1L; sl_test[i].expected = "-128";
  513. i++; sl_test[i].num = -0x7000L -1L; sl_test[i].expected = "-28673";
  514. i++; sl_test[i].num = -0x0700L -1L; sl_test[i].expected = "-1793";
  515. i++; sl_test[i].num = -0x0070L -1L; sl_test[i].expected = "-113";
  516. i++; sl_test[i].num = -0x0007L -1L; sl_test[i].expected = "-8";
  517. i++; sl_test[i].num = -0x5000L -1L; sl_test[i].expected = "-20481";
  518. i++; sl_test[i].num = -0x0500L -1L; sl_test[i].expected = "-1281";
  519. i++; sl_test[i].num = -0x0050L -1L; sl_test[i].expected = "-81";
  520. i++; sl_test[i].num = -0x0005L -1L; sl_test[i].expected = "-6";
  521. i++; sl_test[i].num = 0x0000L -1L; sl_test[i].expected = "-1";
  522. num_slong_tests = i;
  523. #elif (CURL_SIZEOF_LONG == 4)
  524. i=1; sl_test[i].num = 0x7FFFFFFFL; sl_test[i].expected = "2147483647";
  525. i++; sl_test[i].num = 0x7FFFFFFEL; sl_test[i].expected = "2147483646";
  526. i++; sl_test[i].num = 0x7FFFFFFDL; sl_test[i].expected = "2147483645";
  527. i++; sl_test[i].num = 0x7FFF0000L; sl_test[i].expected = "2147418112";
  528. i++; sl_test[i].num = 0x00007FFFL; sl_test[i].expected = "32767";
  529. i++; sl_test[i].num = 0x7F000000L; sl_test[i].expected = "2130706432";
  530. i++; sl_test[i].num = 0x007F0000L; sl_test[i].expected = "8323072";
  531. i++; sl_test[i].num = 0x00007F00L; sl_test[i].expected = "32512";
  532. i++; sl_test[i].num = 0x0000007FL; sl_test[i].expected = "127";
  533. i++; sl_test[i].num = 0x70000000L; sl_test[i].expected = "1879048192";
  534. i++; sl_test[i].num = 0x07000000L; sl_test[i].expected = "117440512";
  535. i++; sl_test[i].num = 0x00700000L; sl_test[i].expected = "7340032";
  536. i++; sl_test[i].num = 0x00070000L; sl_test[i].expected = "458752";
  537. i++; sl_test[i].num = 0x00007000L; sl_test[i].expected = "28672";
  538. i++; sl_test[i].num = 0x00000700L; sl_test[i].expected = "1792";
  539. i++; sl_test[i].num = 0x00000070L; sl_test[i].expected = "112";
  540. i++; sl_test[i].num = 0x00000007L; sl_test[i].expected = "7";
  541. i++; sl_test[i].num = 0x50000000L; sl_test[i].expected = "1342177280";
  542. i++; sl_test[i].num = 0x05000000L; sl_test[i].expected = "83886080";
  543. i++; sl_test[i].num = 0x00500000L; sl_test[i].expected = "5242880";
  544. i++; sl_test[i].num = 0x00050000L; sl_test[i].expected = "327680";
  545. i++; sl_test[i].num = 0x00005000L; sl_test[i].expected = "20480";
  546. i++; sl_test[i].num = 0x00000500L; sl_test[i].expected = "1280";
  547. i++; sl_test[i].num = 0x00000050L; sl_test[i].expected = "80";
  548. i++; sl_test[i].num = 0x00000005L; sl_test[i].expected = "5";
  549. i++; sl_test[i].num = 0x00000001L; sl_test[i].expected = "1";
  550. i++; sl_test[i].num = 0x00000000L; sl_test[i].expected = "0";
  551. i++; sl_test[i].num = -0x7FFFFFFFL -1L; sl_test[i].expected = "-2147483648";
  552. i++; sl_test[i].num = -0x7FFFFFFEL -1L; sl_test[i].expected = "-2147483647";
  553. i++; sl_test[i].num = -0x7FFFFFFDL -1L; sl_test[i].expected = "-2147483646";
  554. i++; sl_test[i].num = -0x7FFF0000L -1L; sl_test[i].expected = "-2147418113";
  555. i++; sl_test[i].num = -0x00007FFFL -1L; sl_test[i].expected = "-32768";
  556. i++; sl_test[i].num = -0x7F000000L -1L; sl_test[i].expected = "-2130706433";
  557. i++; sl_test[i].num = -0x007F0000L -1L; sl_test[i].expected = "-8323073";
  558. i++; sl_test[i].num = -0x00007F00L -1L; sl_test[i].expected = "-32513";
  559. i++; sl_test[i].num = -0x0000007FL -1L; sl_test[i].expected = "-128";
  560. i++; sl_test[i].num = -0x70000000L -1L; sl_test[i].expected = "-1879048193";
  561. i++; sl_test[i].num = -0x07000000L -1L; sl_test[i].expected = "-117440513";
  562. i++; sl_test[i].num = -0x00700000L -1L; sl_test[i].expected = "-7340033";
  563. i++; sl_test[i].num = -0x00070000L -1L; sl_test[i].expected = "-458753";
  564. i++; sl_test[i].num = -0x00007000L -1L; sl_test[i].expected = "-28673";
  565. i++; sl_test[i].num = -0x00000700L -1L; sl_test[i].expected = "-1793";
  566. i++; sl_test[i].num = -0x00000070L -1L; sl_test[i].expected = "-113";
  567. i++; sl_test[i].num = -0x00000007L -1L; sl_test[i].expected = "-8";
  568. i++; sl_test[i].num = -0x50000000L -1L; sl_test[i].expected = "-1342177281";
  569. i++; sl_test[i].num = -0x05000000L -1L; sl_test[i].expected = "-83886081";
  570. i++; sl_test[i].num = -0x00500000L -1L; sl_test[i].expected = "-5242881";
  571. i++; sl_test[i].num = -0x00050000L -1L; sl_test[i].expected = "-327681";
  572. i++; sl_test[i].num = -0x00005000L -1L; sl_test[i].expected = "-20481";
  573. i++; sl_test[i].num = -0x00000500L -1L; sl_test[i].expected = "-1281";
  574. i++; sl_test[i].num = -0x00000050L -1L; sl_test[i].expected = "-81";
  575. i++; sl_test[i].num = -0x00000005L -1L; sl_test[i].expected = "-6";
  576. i++; sl_test[i].num = 0x00000000L -1L; sl_test[i].expected = "-1";
  577. num_slong_tests = i;
  578. #elif (CURL_SIZEOF_LONG == 8)
  579. i=1; sl_test[i].num = 0x7FFFFFFFFFFFFFFFL; sl_test[i].expected = "9223372036854775807";
  580. i++; sl_test[i].num = 0x7FFFFFFFFFFFFFFEL; sl_test[i].expected = "9223372036854775806";
  581. i++; sl_test[i].num = 0x7FFFFFFFFFFFFFFDL; sl_test[i].expected = "9223372036854775805";
  582. i++; sl_test[i].num = 0x7FFFFFFF00000000L; sl_test[i].expected = "9223372032559808512";
  583. i++; sl_test[i].num = 0x000000007FFFFFFFL; sl_test[i].expected = "2147483647";
  584. i++; sl_test[i].num = 0x7FFF000000000000L; sl_test[i].expected = "9223090561878065152";
  585. i++; sl_test[i].num = 0x00007FFF00000000L; sl_test[i].expected = "140733193388032";
  586. i++; sl_test[i].num = 0x000000007FFF0000L; sl_test[i].expected = "2147418112";
  587. i++; sl_test[i].num = 0x0000000000007FFFL; sl_test[i].expected = "32767";
  588. i++; sl_test[i].num = 0x7F00000000000000L; sl_test[i].expected = "9151314442816847872";
  589. i++; sl_test[i].num = 0x007F000000000000L; sl_test[i].expected = "35747322042253312";
  590. i++; sl_test[i].num = 0x00007F0000000000L; sl_test[i].expected = "139637976727552";
  591. i++; sl_test[i].num = 0x0000007F00000000L; sl_test[i].expected = "545460846592";
  592. i++; sl_test[i].num = 0x000000007F000000L; sl_test[i].expected = "2130706432";
  593. i++; sl_test[i].num = 0x00000000007F0000L; sl_test[i].expected = "8323072";
  594. i++; sl_test[i].num = 0x0000000000007F00L; sl_test[i].expected = "32512";
  595. i++; sl_test[i].num = 0x000000000000007FL; sl_test[i].expected = "127";
  596. i++; sl_test[i].num = 0x7000000000000000L; sl_test[i].expected = "8070450532247928832";
  597. i++; sl_test[i].num = 0x0700000000000000L; sl_test[i].expected = "504403158265495552";
  598. i++; sl_test[i].num = 0x0070000000000000L; sl_test[i].expected = "31525197391593472";
  599. i++; sl_test[i].num = 0x0007000000000000L; sl_test[i].expected = "1970324836974592";
  600. i++; sl_test[i].num = 0x0000700000000000L; sl_test[i].expected = "123145302310912";
  601. i++; sl_test[i].num = 0x0000070000000000L; sl_test[i].expected = "7696581394432";
  602. i++; sl_test[i].num = 0x0000007000000000L; sl_test[i].expected = "481036337152";
  603. i++; sl_test[i].num = 0x0000000700000000L; sl_test[i].expected = "30064771072";
  604. i++; sl_test[i].num = 0x0000000070000000L; sl_test[i].expected = "1879048192";
  605. i++; sl_test[i].num = 0x0000000007000000L; sl_test[i].expected = "117440512";
  606. i++; sl_test[i].num = 0x0000000000700000L; sl_test[i].expected = "7340032";
  607. i++; sl_test[i].num = 0x0000000000070000L; sl_test[i].expected = "458752";
  608. i++; sl_test[i].num = 0x0000000000007000L; sl_test[i].expected = "28672";
  609. i++; sl_test[i].num = 0x0000000000000700L; sl_test[i].expected = "1792";
  610. i++; sl_test[i].num = 0x0000000000000070L; sl_test[i].expected = "112";
  611. i++; sl_test[i].num = 0x0000000000000007L; sl_test[i].expected = "7";
  612. i++; sl_test[i].num = 0x0000000000000001L; sl_test[i].expected = "1";
  613. i++; sl_test[i].num = 0x0000000000000000L; sl_test[i].expected = "0";
  614. i++; sl_test[i].num = -0x7FFFFFFFFFFFFFFFL -1L; sl_test[i].expected = "-9223372036854775808";
  615. i++; sl_test[i].num = -0x7FFFFFFFFFFFFFFEL -1L; sl_test[i].expected = "-9223372036854775807";
  616. i++; sl_test[i].num = -0x7FFFFFFFFFFFFFFDL -1L; sl_test[i].expected = "-9223372036854775806";
  617. i++; sl_test[i].num = -0x7FFFFFFF00000000L -1L; sl_test[i].expected = "-9223372032559808513";
  618. i++; sl_test[i].num = -0x000000007FFFFFFFL -1L; sl_test[i].expected = "-2147483648";
  619. i++; sl_test[i].num = -0x7FFF000000000000L -1L; sl_test[i].expected = "-9223090561878065153";
  620. i++; sl_test[i].num = -0x00007FFF00000000L -1L; sl_test[i].expected = "-140733193388033";
  621. i++; sl_test[i].num = -0x000000007FFF0000L -1L; sl_test[i].expected = "-2147418113";
  622. i++; sl_test[i].num = -0x0000000000007FFFL -1L; sl_test[i].expected = "-32768";
  623. i++; sl_test[i].num = -0x7F00000000000000L -1L; sl_test[i].expected = "-9151314442816847873";
  624. i++; sl_test[i].num = -0x007F000000000000L -1L; sl_test[i].expected = "-35747322042253313";
  625. i++; sl_test[i].num = -0x00007F0000000000L -1L; sl_test[i].expected = "-139637976727553";
  626. i++; sl_test[i].num = -0x0000007F00000000L -1L; sl_test[i].expected = "-545460846593";
  627. i++; sl_test[i].num = -0x000000007F000000L -1L; sl_test[i].expected = "-2130706433";
  628. i++; sl_test[i].num = -0x00000000007F0000L -1L; sl_test[i].expected = "-8323073";
  629. i++; sl_test[i].num = -0x0000000000007F00L -1L; sl_test[i].expected = "-32513";
  630. i++; sl_test[i].num = -0x000000000000007FL -1L; sl_test[i].expected = "-128";
  631. i++; sl_test[i].num = -0x7000000000000000L -1L; sl_test[i].expected = "-8070450532247928833";
  632. i++; sl_test[i].num = -0x0700000000000000L -1L; sl_test[i].expected = "-504403158265495553";
  633. i++; sl_test[i].num = -0x0070000000000000L -1L; sl_test[i].expected = "-31525197391593473";
  634. i++; sl_test[i].num = -0x0007000000000000L -1L; sl_test[i].expected = "-1970324836974593";
  635. i++; sl_test[i].num = -0x0000700000000000L -1L; sl_test[i].expected = "-123145302310913";
  636. i++; sl_test[i].num = -0x0000070000000000L -1L; sl_test[i].expected = "-7696581394433";
  637. i++; sl_test[i].num = -0x0000007000000000L -1L; sl_test[i].expected = "-481036337153";
  638. i++; sl_test[i].num = -0x0000000700000000L -1L; sl_test[i].expected = "-30064771073";
  639. i++; sl_test[i].num = -0x0000000070000000L -1L; sl_test[i].expected = "-1879048193";
  640. i++; sl_test[i].num = -0x0000000007000000L -1L; sl_test[i].expected = "-117440513";
  641. i++; sl_test[i].num = -0x0000000000700000L -1L; sl_test[i].expected = "-7340033";
  642. i++; sl_test[i].num = -0x0000000000070000L -1L; sl_test[i].expected = "-458753";
  643. i++; sl_test[i].num = -0x0000000000007000L -1L; sl_test[i].expected = "-28673";
  644. i++; sl_test[i].num = -0x0000000000000700L -1L; sl_test[i].expected = "-1793";
  645. i++; sl_test[i].num = -0x0000000000000070L -1L; sl_test[i].expected = "-113";
  646. i++; sl_test[i].num = -0x0000000000000007L -1L; sl_test[i].expected = "-8";
  647. i++; sl_test[i].num = 0x0000000000000000L -1L; sl_test[i].expected = "-1";
  648. num_slong_tests = i;
  649. #endif
  650. for(i=1; i<=num_slong_tests; i++) {
  651. for(j=0; j<BUFSZ; j++)
  652. sl_test[i].result[j] = 'X';
  653. sl_test[i].result[BUFSZ-1] = '\0';
  654. (void)curl_msprintf(sl_test[i].result, "%ld", sl_test[i].num);
  655. if(memcmp(sl_test[i].result,
  656. sl_test[i].expected,
  657. strlen(sl_test[i].expected))) {
  658. printf("signed long test #%.2d: Failed (Expected: %s Got: %s)\n",
  659. i, sl_test[i].expected, sl_test[i].result);
  660. failed++;
  661. }
  662. }
  663. if(!failed)
  664. printf("All curl_mprintf() signed long tests OK!\n");
  665. else
  666. printf("Some curl_mprintf() signed long tests Failed!\n");
  667. return failed;
  668. }
  669. static int test_curl_off_t_formatting(void)
  670. {
  671. int i, j;
  672. int num_cofft_tests;
  673. int failed = 0;
  674. #if (CURL_SIZEOF_CURL_OFF_T == 2)
  675. i=1; co_test[i].num = MPRNT_OFF_T_C(0x7FFF); co_test[i].expected = "32767";
  676. i++; co_test[i].num = MPRNT_OFF_T_C(0x7FFE); co_test[i].expected = "32766";
  677. i++; co_test[i].num = MPRNT_OFF_T_C(0x7FFD); co_test[i].expected = "32765";
  678. i++; co_test[i].num = MPRNT_OFF_T_C(0x7F00); co_test[i].expected = "32512";
  679. i++; co_test[i].num = MPRNT_OFF_T_C(0x07F0); co_test[i].expected = "2032";
  680. i++; co_test[i].num = MPRNT_OFF_T_C(0x007F); co_test[i].expected = "127";
  681. i++; co_test[i].num = MPRNT_OFF_T_C(0x7000); co_test[i].expected = "28672";
  682. i++; co_test[i].num = MPRNT_OFF_T_C(0x0700); co_test[i].expected = "1792";
  683. i++; co_test[i].num = MPRNT_OFF_T_C(0x0070); co_test[i].expected = "112";
  684. i++; co_test[i].num = MPRNT_OFF_T_C(0x0007); co_test[i].expected = "7";
  685. i++; co_test[i].num = MPRNT_OFF_T_C(0x5000); co_test[i].expected = "20480";
  686. i++; co_test[i].num = MPRNT_OFF_T_C(0x0500); co_test[i].expected = "1280";
  687. i++; co_test[i].num = MPRNT_OFF_T_C(0x0050); co_test[i].expected = "80";
  688. i++; co_test[i].num = MPRNT_OFF_T_C(0x0005); co_test[i].expected = "5";
  689. i++; co_test[i].num = MPRNT_OFF_T_C(0x0001); co_test[i].expected = "1";
  690. i++; co_test[i].num = MPRNT_OFF_T_C(0x0000); co_test[i].expected = "0";
  691. i++; co_test[i].num = -MPRNT_OFF_T_C(0x7FFF) -MPRNT_OFF_T_C(1); co_test[i].expected = "-32768";
  692. i++; co_test[i].num = -MPRNT_OFF_T_C(0x7FFE) -MPRNT_OFF_T_C(1); co_test[i].expected = "-32767";
  693. i++; co_test[i].num = -MPRNT_OFF_T_C(0x7FFD) -MPRNT_OFF_T_C(1); co_test[i].expected = "-32766";
  694. i++; co_test[i].num = -MPRNT_OFF_T_C(0x7F00) -MPRNT_OFF_T_C(1); co_test[i].expected = "-32513";
  695. i++; co_test[i].num = -MPRNT_OFF_T_C(0x07F0) -MPRNT_OFF_T_C(1); co_test[i].expected = "-2033";
  696. i++; co_test[i].num = -MPRNT_OFF_T_C(0x007F) -MPRNT_OFF_T_C(1); co_test[i].expected = "-128";
  697. i++; co_test[i].num = -MPRNT_OFF_T_C(0x7000) -MPRNT_OFF_T_C(1); co_test[i].expected = "-28673";
  698. i++; co_test[i].num = -MPRNT_OFF_T_C(0x0700) -MPRNT_OFF_T_C(1); co_test[i].expected = "-1793";
  699. i++; co_test[i].num = -MPRNT_OFF_T_C(0x0070) -MPRNT_OFF_T_C(1); co_test[i].expected = "-113";
  700. i++; co_test[i].num = -MPRNT_OFF_T_C(0x0007) -MPRNT_OFF_T_C(1); co_test[i].expected = "-8";
  701. i++; co_test[i].num = -MPRNT_OFF_T_C(0x5000) -MPRNT_OFF_T_C(1); co_test[i].expected = "-20481";
  702. i++; co_test[i].num = -MPRNT_OFF_T_C(0x0500) -MPRNT_OFF_T_C(1); co_test[i].expected = "-1281";
  703. i++; co_test[i].num = -MPRNT_OFF_T_C(0x0050) -MPRNT_OFF_T_C(1); co_test[i].expected = "-81";
  704. i++; co_test[i].num = -MPRNT_OFF_T_C(0x0005) -MPRNT_OFF_T_C(1); co_test[i].expected = "-6";
  705. i++; co_test[i].num = MPRNT_OFF_T_C(0x0000) -MPRNT_OFF_T_C(1); co_test[i].expected = "-1";
  706. num_cofft_tests = i;
  707. #elif (CURL_SIZEOF_CURL_OFF_T == 4)
  708. i=1; co_test[i].num = MPRNT_OFF_T_C(0x7FFFFFFF); co_test[i].expected = "2147483647";
  709. i++; co_test[i].num = MPRNT_OFF_T_C(0x7FFFFFFE); co_test[i].expected = "2147483646";
  710. i++; co_test[i].num = MPRNT_OFF_T_C(0x7FFFFFFD); co_test[i].expected = "2147483645";
  711. i++; co_test[i].num = MPRNT_OFF_T_C(0x7FFF0000); co_test[i].expected = "2147418112";
  712. i++; co_test[i].num = MPRNT_OFF_T_C(0x00007FFF); co_test[i].expected = "32767";
  713. i++; co_test[i].num = MPRNT_OFF_T_C(0x7F000000); co_test[i].expected = "2130706432";
  714. i++; co_test[i].num = MPRNT_OFF_T_C(0x007F0000); co_test[i].expected = "8323072";
  715. i++; co_test[i].num = MPRNT_OFF_T_C(0x00007F00); co_test[i].expected = "32512";
  716. i++; co_test[i].num = MPRNT_OFF_T_C(0x0000007F); co_test[i].expected = "127";
  717. i++; co_test[i].num = MPRNT_OFF_T_C(0x70000000); co_test[i].expected = "1879048192";
  718. i++; co_test[i].num = MPRNT_OFF_T_C(0x07000000); co_test[i].expected = "117440512";
  719. i++; co_test[i].num = MPRNT_OFF_T_C(0x00700000); co_test[i].expected = "7340032";
  720. i++; co_test[i].num = MPRNT_OFF_T_C(0x00070000); co_test[i].expected = "458752";
  721. i++; co_test[i].num = MPRNT_OFF_T_C(0x00007000); co_test[i].expected = "28672";
  722. i++; co_test[i].num = MPRNT_OFF_T_C(0x00000700); co_test[i].expected = "1792";
  723. i++; co_test[i].num = MPRNT_OFF_T_C(0x00000070); co_test[i].expected = "112";
  724. i++; co_test[i].num = MPRNT_OFF_T_C(0x00000007); co_test[i].expected = "7";
  725. i++; co_test[i].num = MPRNT_OFF_T_C(0x50000000); co_test[i].expected = "1342177280";
  726. i++; co_test[i].num = MPRNT_OFF_T_C(0x05000000); co_test[i].expected = "83886080";
  727. i++; co_test[i].num = MPRNT_OFF_T_C(0x00500000); co_test[i].expected = "5242880";
  728. i++; co_test[i].num = MPRNT_OFF_T_C(0x00050000); co_test[i].expected = "327680";
  729. i++; co_test[i].num = MPRNT_OFF_T_C(0x00005000); co_test[i].expected = "20480";
  730. i++; co_test[i].num = MPRNT_OFF_T_C(0x00000500); co_test[i].expected = "1280";
  731. i++; co_test[i].num = MPRNT_OFF_T_C(0x00000050); co_test[i].expected = "80";
  732. i++; co_test[i].num = MPRNT_OFF_T_C(0x00000005); co_test[i].expected = "5";
  733. i++; co_test[i].num = MPRNT_OFF_T_C(0x00000001); co_test[i].expected = "1";
  734. i++; co_test[i].num = MPRNT_OFF_T_C(0x00000000); co_test[i].expected = "0";
  735. i++; co_test[i].num = -MPRNT_OFF_T_C(0x7FFFFFFF) -MPRNT_OFF_T_C(1); co_test[i].expected = "-2147483648";
  736. i++; co_test[i].num = -MPRNT_OFF_T_C(0x7FFFFFFE) -MPRNT_OFF_T_C(1); co_test[i].expected = "-2147483647";
  737. i++; co_test[i].num = -MPRNT_OFF_T_C(0x7FFFFFFD) -MPRNT_OFF_T_C(1); co_test[i].expected = "-2147483646";
  738. i++; co_test[i].num = -MPRNT_OFF_T_C(0x7FFF0000) -MPRNT_OFF_T_C(1); co_test[i].expected = "-2147418113";
  739. i++; co_test[i].num = -MPRNT_OFF_T_C(0x00007FFF) -MPRNT_OFF_T_C(1); co_test[i].expected = "-32768";
  740. i++; co_test[i].num = -MPRNT_OFF_T_C(0x7F000000) -MPRNT_OFF_T_C(1); co_test[i].expected = "-2130706433";
  741. i++; co_test[i].num = -MPRNT_OFF_T_C(0x007F0000) -MPRNT_OFF_T_C(1); co_test[i].expected = "-8323073";
  742. i++; co_test[i].num = -MPRNT_OFF_T_C(0x00007F00) -MPRNT_OFF_T_C(1); co_test[i].expected = "-32513";
  743. i++; co_test[i].num = -MPRNT_OFF_T_C(0x0000007F) -MPRNT_OFF_T_C(1); co_test[i].expected = "-128";
  744. i++; co_test[i].num = -MPRNT_OFF_T_C(0x70000000) -MPRNT_OFF_T_C(1); co_test[i].expected = "-1879048193";
  745. i++; co_test[i].num = -MPRNT_OFF_T_C(0x07000000) -MPRNT_OFF_T_C(1); co_test[i].expected = "-117440513";
  746. i++; co_test[i].num = -MPRNT_OFF_T_C(0x00700000) -MPRNT_OFF_T_C(1); co_test[i].expected = "-7340033";
  747. i++; co_test[i].num = -MPRNT_OFF_T_C(0x00070000) -MPRNT_OFF_T_C(1); co_test[i].expected = "-458753";
  748. i++; co_test[i].num = -MPRNT_OFF_T_C(0x00007000) -MPRNT_OFF_T_C(1); co_test[i].expected = "-28673";
  749. i++; co_test[i].num = -MPRNT_OFF_T_C(0x00000700) -MPRNT_OFF_T_C(1); co_test[i].expected = "-1793";
  750. i++; co_test[i].num = -MPRNT_OFF_T_C(0x00000070) -MPRNT_OFF_T_C(1); co_test[i].expected = "-113";
  751. i++; co_test[i].num = -MPRNT_OFF_T_C(0x00000007) -MPRNT_OFF_T_C(1); co_test[i].expected = "-8";
  752. i++; co_test[i].num = -MPRNT_OFF_T_C(0x50000000) -MPRNT_OFF_T_C(1); co_test[i].expected = "-1342177281";
  753. i++; co_test[i].num = -MPRNT_OFF_T_C(0x05000000) -MPRNT_OFF_T_C(1); co_test[i].expected = "-83886081";
  754. i++; co_test[i].num = -MPRNT_OFF_T_C(0x00500000) -MPRNT_OFF_T_C(1); co_test[i].expected = "-5242881";
  755. i++; co_test[i].num = -MPRNT_OFF_T_C(0x00050000) -MPRNT_OFF_T_C(1); co_test[i].expected = "-327681";
  756. i++; co_test[i].num = -MPRNT_OFF_T_C(0x00005000) -MPRNT_OFF_T_C(1); co_test[i].expected = "-20481";
  757. i++; co_test[i].num = -MPRNT_OFF_T_C(0x00000500) -MPRNT_OFF_T_C(1); co_test[i].expected = "-1281";
  758. i++; co_test[i].num = -MPRNT_OFF_T_C(0x00000050) -MPRNT_OFF_T_C(1)

Large files files are truncated, but you can click here to view the full file