strval.phpt 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317
  1. --TEST--
  2. Test strval() function
  3. --INI--
  4. precision=14
  5. --FILE--
  6. <?php
  7. /* Prototype: string strval ( mixed $var );
  8. * Description: Returns the string value of var
  9. */
  10. echo "*** Testing str_val() with scalar values***\n";
  11. $heredoc_string = <<<EOD
  12. This is a multiline heredoc
  13. string. Numeric = 1232455.
  14. EOD;
  15. /* heredoc string with only numeric values */
  16. $heredoc_numeric_string = <<<EOD
  17. 12345
  18. 2345
  19. EOD;
  20. /* null heredoc string */
  21. $heredoc_empty_string = <<<EOD
  22. EOD;
  23. /* heredoc string with NULL */
  24. $heredoc_NULL_string = <<<EOD
  25. NULL
  26. EOD;
  27. // different valid scalar vlaues
  28. $scalars = array(
  29. /* integers */
  30. 0,
  31. 1,
  32. -1,
  33. -2147483648, // max negative integer value
  34. -2147483647,
  35. 2147483647, // max positive integer value
  36. 2147483640,
  37. 0x123B, // integer as hexadecimal
  38. 0x12ab,
  39. 0Xfff,
  40. 0XFA,
  41. /* floats */
  42. -0x80000000, // max negative integer as hexadecimal
  43. 0x7fffffff, // max postive integer as hexadecimal
  44. 0x7FFFFFFF, // max postive integer as hexadecimal
  45. 0123, // integer as octal
  46. 01912, // should be quivalent to octal 1
  47. -020000000000, // max negative integer as octal
  48. 017777777777, // max positive integer as octal
  49. -2147483649, // float value
  50. 2147483648, // float value
  51. -0x80000001, // float value, beyond max negative int
  52. 0x800000001, // float value, beyond max positive int
  53. 020000000001, // float value, beyond max positive int
  54. -020000000001, // float value, beyond max negative int
  55. 0.0,
  56. -0.1,
  57. 10.0000000000000000005,
  58. 10.5e+5,
  59. 1e-5,
  60. .5e+7,
  61. .6e-19,
  62. .05E+44,
  63. .0034E-30,
  64. /* booleans */
  65. true,
  66. TRUE,
  67. FALSE,
  68. false,
  69. /* strings */
  70. "",
  71. '',
  72. " ",
  73. ' ',
  74. '0',
  75. "0",
  76. "testing",
  77. "0x564",
  78. "0123",
  79. "new\n",
  80. 'new\n',
  81. "@#$$%^&&*()",
  82. " ",
  83. "null",
  84. 'null',
  85. 'true',
  86. "true",
  87. /*"\0123",
  88. "\0x12FF",*/
  89. $heredoc_string,
  90. $heredoc_numeric_string,
  91. $heredoc_empty_string
  92. );
  93. /* loop to check that strval() recognizes different
  94. scalar values and retuns the string conversion of same */
  95. $loop_counter = 1;
  96. foreach ($scalars as $scalar ) {
  97. echo "-- Iteration $loop_counter --\n"; $loop_counter++;
  98. var_dump( strval($scalar) );
  99. }
  100. echo "\n*** Testing strval() with non_scalar values ***\n";
  101. // get a resource type variable
  102. $fp = fopen(__FILE__, "r");
  103. $dfp = opendir( dirname(__FILE__) );
  104. // unset variable
  105. $unset_var = 10;
  106. unset ($unset_var);
  107. // non_scalar values, objects, arrays, resources and boolean
  108. class foo
  109. {
  110. function __toString() {
  111. return "Object";
  112. }
  113. }
  114. $not_scalars = array (
  115. new foo, //object
  116. $fp, // resource
  117. $dfp,
  118. array(), // arrays
  119. array(NULL),
  120. array(1,2,3,4),
  121. array("string"),
  122. NULL, // nulls
  123. null,
  124. @$unset_var, // unset variable
  125. @$undefined_var
  126. );
  127. /* loop through the $not_scalars to see working of
  128. strval() on objects, arrays, boolean and others */
  129. $loop_counter = 1;
  130. foreach ($not_scalars as $value ) {
  131. echo "-- Iteration $loop_counter --\n"; $loop_counter++;
  132. var_dump( strval($value) );
  133. }
  134. echo "\n*** Testing error conditions ***\n";
  135. //Zero argument
  136. var_dump( strval() );
  137. //arguments more than expected
  138. var_dump( strval( $scalars[0], $scalars[1]) );
  139. echo "Done\n";
  140. // close the resources used
  141. fclose($fp);
  142. closedir($dfp);
  143. ?>
  144. --EXPECTF--
  145. *** Testing str_val() with scalar values***
  146. -- Iteration 1 --
  147. string(1) "0"
  148. -- Iteration 2 --
  149. string(1) "1"
  150. -- Iteration 3 --
  151. string(2) "-1"
  152. -- Iteration 4 --
  153. string(11) "-2147483648"
  154. -- Iteration 5 --
  155. string(11) "-2147483647"
  156. -- Iteration 6 --
  157. string(10) "2147483647"
  158. -- Iteration 7 --
  159. string(10) "2147483640"
  160. -- Iteration 8 --
  161. string(4) "4667"
  162. -- Iteration 9 --
  163. string(4) "4779"
  164. -- Iteration 10 --
  165. string(4) "4095"
  166. -- Iteration 11 --
  167. string(3) "250"
  168. -- Iteration 12 --
  169. string(11) "-2147483648"
  170. -- Iteration 13 --
  171. string(10) "2147483647"
  172. -- Iteration 14 --
  173. string(10) "2147483647"
  174. -- Iteration 15 --
  175. string(2) "83"
  176. -- Iteration 16 --
  177. string(1) "1"
  178. -- Iteration 17 --
  179. string(11) "-2147483648"
  180. -- Iteration 18 --
  181. string(10) "2147483647"
  182. -- Iteration 19 --
  183. string(11) "-2147483649"
  184. -- Iteration 20 --
  185. string(10) "2147483648"
  186. -- Iteration 21 --
  187. string(11) "-2147483649"
  188. -- Iteration 22 --
  189. string(11) "34359738369"
  190. -- Iteration 23 --
  191. string(10) "2147483649"
  192. -- Iteration 24 --
  193. string(11) "-2147483649"
  194. -- Iteration 25 --
  195. string(1) "0"
  196. -- Iteration 26 --
  197. string(4) "-0.1"
  198. -- Iteration 27 --
  199. string(2) "10"
  200. -- Iteration 28 --
  201. string(7) "1050000"
  202. -- Iteration 29 --
  203. string(6) "1.0E-5"
  204. -- Iteration 30 --
  205. string(7) "5000000"
  206. -- Iteration 31 --
  207. string(7) "6.0E-20"
  208. -- Iteration 32 --
  209. string(7) "5.0E+42"
  210. -- Iteration 33 --
  211. string(7) "3.4E-33"
  212. -- Iteration 34 --
  213. string(1) "1"
  214. -- Iteration 35 --
  215. string(1) "1"
  216. -- Iteration 36 --
  217. string(0) ""
  218. -- Iteration 37 --
  219. string(0) ""
  220. -- Iteration 38 --
  221. string(0) ""
  222. -- Iteration 39 --
  223. string(0) ""
  224. -- Iteration 40 --
  225. string(1) " "
  226. -- Iteration 41 --
  227. string(1) " "
  228. -- Iteration 42 --
  229. string(1) "0"
  230. -- Iteration 43 --
  231. string(1) "0"
  232. -- Iteration 44 --
  233. string(7) "testing"
  234. -- Iteration 45 --
  235. string(5) "0x564"
  236. -- Iteration 46 --
  237. string(4) "0123"
  238. -- Iteration 47 --
  239. string(4) "new
  240. "
  241. -- Iteration 48 --
  242. string(5) "new\n"
  243. -- Iteration 49 --
  244. string(11) "@#$$%^&&*()"
  245. -- Iteration 50 --
  246. string(8) " "
  247. -- Iteration 51 --
  248. string(4) "null"
  249. -- Iteration 52 --
  250. string(4) "null"
  251. -- Iteration 53 --
  252. string(4) "true"
  253. -- Iteration 54 --
  254. string(4) "true"
  255. -- Iteration 55 --
  256. string(5%d) "This is a multiline heredoc
  257. string. Numeric = 1232455."
  258. -- Iteration 56 --
  259. string(1%d) "12345
  260. 2345"
  261. -- Iteration 57 --
  262. string(0) ""
  263. *** Testing strval() with non_scalar values ***
  264. -- Iteration 1 --
  265. string(6) "Object"
  266. -- Iteration 2 --
  267. string(14) "Resource id #%d"
  268. -- Iteration 3 --
  269. string(14) "Resource id #%d"
  270. -- Iteration 4 --
  271. Notice: Array to string conversion in %sstrval.php on line %d
  272. string(5) "Array"
  273. -- Iteration 5 --
  274. Notice: Array to string conversion in %sstrval.php on line %d
  275. string(5) "Array"
  276. -- Iteration 6 --
  277. Notice: Array to string conversion in %sstrval.php on line %d
  278. string(5) "Array"
  279. -- Iteration 7 --
  280. Notice: Array to string conversion in %sstrval.php on line %d
  281. string(5) "Array"
  282. -- Iteration 8 --
  283. string(0) ""
  284. -- Iteration 9 --
  285. string(0) ""
  286. -- Iteration 10 --
  287. string(0) ""
  288. -- Iteration 11 --
  289. string(0) ""
  290. *** Testing error conditions ***
  291. Warning: strval() expects exactly 1 parameter, 0 given in %s on line %d
  292. NULL
  293. Warning: strval() expects exactly 1 parameter, 2 given in %s on line %d
  294. NULL
  295. Done