iconv_set_encoding_variation.phpt 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. --TEST--
  2. Test iconv_set_encoding() function : error functionality
  3. --SKIPIF--
  4. <?php
  5. extension_loaded('iconv') or die('skip');
  6. function_exists('iconv_set_encoding') or die("skip iconv_set_encoding() is not available in this build");
  7. ?>
  8. --INI--
  9. error_reporting=E_ALL & ~E_DEPRECATED
  10. --FILE--
  11. <?php
  12. /* Prototype : bool iconv_set_encoding(string type, string charset)
  13. * Description: Sets internal encoding and output encoding for ob_iconv_handler()
  14. * Source code: ext/iconv/iconv.c
  15. */
  16. /*
  17. * Test Error functionality of iconv_get_encoding
  18. */
  19. echo "*** Testing iconv_set_encoding() : error functionality ***\n";
  20. //get an unset variable
  21. $unset_var = 10;
  22. unset ($unset_var);
  23. // get a class
  24. class classA
  25. {
  26. public function __toString() {
  27. return "UTF-8";
  28. }
  29. }
  30. // heredoc string
  31. $heredoc = <<<EOT
  32. Nothing
  33. EOT;
  34. // get a resource variable
  35. $fp = fopen(__FILE__, "r");
  36. // unexpected values to be passed to $encoding argument
  37. $inputs = array(
  38. // int data
  39. /*1*/ 0,
  40. 1,
  41. 12345,
  42. -2345,
  43. // float data
  44. /*5*/ 10.5,
  45. -10.5,
  46. 12.3456789000e10,
  47. 12.3456789000E-10,
  48. .5,
  49. // null data
  50. /*10*/ NULL,
  51. null,
  52. // boolean data
  53. /*12*/ true,
  54. false,
  55. TRUE,
  56. FALSE,
  57. // empty data
  58. /*16*/ "",
  59. '',
  60. // invalid string data
  61. /*18*/ "Nothing",
  62. 'Nothing',
  63. $heredoc,
  64. // object data
  65. /*21*/ new classA(),
  66. // undefined data
  67. /*22*/ @$undefined_var,
  68. // unset data
  69. /*23*/ @$unset_var,
  70. // resource variable
  71. /*24*/ $fp
  72. );
  73. // loop through each element of $inputs to check the behavior of mb_regex_encoding()
  74. $iterator = 1;
  75. foreach($inputs as $input) {
  76. echo "\n-- Iteration $iterator --\n";
  77. var_dump( iconv_set_encoding("internal_encoding", $input) );
  78. var_dump( iconv_set_encoding("input_encoding", $input) );
  79. var_dump( iconv_set_encoding("output_encoding", $input) );
  80. var_dump( iconv_get_encoding("internal_encoding") );
  81. var_dump( iconv_get_encoding("input_encoding") );
  82. var_dump( iconv_get_encoding("output_encoding") );
  83. $iterator++;
  84. };
  85. fclose($fp);
  86. echo "Done";
  87. ?>
  88. --EXPECTF--
  89. *** Testing iconv_set_encoding() : error functionality ***
  90. -- Iteration 1 --
  91. bool(true)
  92. bool(true)
  93. bool(true)
  94. string(1) "0"
  95. string(1) "0"
  96. string(1) "0"
  97. -- Iteration 2 --
  98. bool(true)
  99. bool(true)
  100. bool(true)
  101. string(1) "1"
  102. string(1) "1"
  103. string(1) "1"
  104. -- Iteration 3 --
  105. bool(true)
  106. bool(true)
  107. bool(true)
  108. string(5) "12345"
  109. string(5) "12345"
  110. string(5) "12345"
  111. -- Iteration 4 --
  112. bool(true)
  113. bool(true)
  114. bool(true)
  115. string(5) "-2345"
  116. string(5) "-2345"
  117. string(5) "-2345"
  118. -- Iteration 5 --
  119. bool(true)
  120. bool(true)
  121. bool(true)
  122. string(4) "10.5"
  123. string(4) "10.5"
  124. string(4) "10.5"
  125. -- Iteration 6 --
  126. bool(true)
  127. bool(true)
  128. bool(true)
  129. string(5) "-10.5"
  130. string(5) "-10.5"
  131. string(5) "-10.5"
  132. -- Iteration 7 --
  133. bool(true)
  134. bool(true)
  135. bool(true)
  136. string(12) "123456789000"
  137. string(12) "123456789000"
  138. string(12) "123456789000"
  139. -- Iteration 8 --
  140. bool(true)
  141. bool(true)
  142. bool(true)
  143. string(13) "1.23456789E-9"
  144. string(13) "1.23456789E-9"
  145. string(13) "1.23456789E-9"
  146. -- Iteration 9 --
  147. bool(true)
  148. bool(true)
  149. bool(true)
  150. string(3) "0.5"
  151. string(3) "0.5"
  152. string(3) "0.5"
  153. -- Iteration 10 --
  154. bool(true)
  155. bool(true)
  156. bool(true)
  157. string(5) "UTF-8"
  158. string(5) "UTF-8"
  159. string(5) "UTF-8"
  160. -- Iteration 11 --
  161. bool(true)
  162. bool(true)
  163. bool(true)
  164. string(5) "UTF-8"
  165. string(5) "UTF-8"
  166. string(5) "UTF-8"
  167. -- Iteration 12 --
  168. bool(true)
  169. bool(true)
  170. bool(true)
  171. string(1) "1"
  172. string(1) "1"
  173. string(1) "1"
  174. -- Iteration 13 --
  175. bool(true)
  176. bool(true)
  177. bool(true)
  178. string(5) "UTF-8"
  179. string(5) "UTF-8"
  180. string(5) "UTF-8"
  181. -- Iteration 14 --
  182. bool(true)
  183. bool(true)
  184. bool(true)
  185. string(1) "1"
  186. string(1) "1"
  187. string(1) "1"
  188. -- Iteration 15 --
  189. bool(true)
  190. bool(true)
  191. bool(true)
  192. string(5) "UTF-8"
  193. string(5) "UTF-8"
  194. string(5) "UTF-8"
  195. -- Iteration 16 --
  196. bool(true)
  197. bool(true)
  198. bool(true)
  199. string(5) "UTF-8"
  200. string(5) "UTF-8"
  201. string(5) "UTF-8"
  202. -- Iteration 17 --
  203. bool(true)
  204. bool(true)
  205. bool(true)
  206. string(5) "UTF-8"
  207. string(5) "UTF-8"
  208. string(5) "UTF-8"
  209. -- Iteration 18 --
  210. bool(true)
  211. bool(true)
  212. bool(true)
  213. string(7) "Nothing"
  214. string(7) "Nothing"
  215. string(7) "Nothing"
  216. -- Iteration 19 --
  217. bool(true)
  218. bool(true)
  219. bool(true)
  220. string(7) "Nothing"
  221. string(7) "Nothing"
  222. string(7) "Nothing"
  223. -- Iteration 20 --
  224. bool(true)
  225. bool(true)
  226. bool(true)
  227. string(7) "Nothing"
  228. string(7) "Nothing"
  229. string(7) "Nothing"
  230. -- Iteration 21 --
  231. bool(true)
  232. bool(true)
  233. bool(true)
  234. string(5) "UTF-8"
  235. string(5) "UTF-8"
  236. string(5) "UTF-8"
  237. -- Iteration 22 --
  238. bool(true)
  239. bool(true)
  240. bool(true)
  241. string(5) "UTF-8"
  242. string(5) "UTF-8"
  243. string(5) "UTF-8"
  244. -- Iteration 23 --
  245. bool(true)
  246. bool(true)
  247. bool(true)
  248. string(5) "UTF-8"
  249. string(5) "UTF-8"
  250. string(5) "UTF-8"
  251. -- Iteration 24 --
  252. Warning: iconv_set_encoding() expects parameter 2 to be string, resource given in %s on line %d
  253. NULL
  254. Warning: iconv_set_encoding() expects parameter 2 to be string, resource given in %s on line %d
  255. NULL
  256. Warning: iconv_set_encoding() expects parameter 2 to be string, resource given in %s on line %d
  257. NULL
  258. string(5) "UTF-8"
  259. string(5) "UTF-8"
  260. string(5) "UTF-8"
  261. Done