overloading.phpt 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  1. --TEST--
  2. GMP operator overloading
  3. --SKIPIF--
  4. <?php if (!extension_loaded("gmp")) print "skip"; ?>
  5. --FILE--
  6. <?php
  7. $a = gmp_init(42);
  8. $b = gmp_init(17);
  9. var_dump($a + $b);
  10. var_dump($a + 17);
  11. var_dump(42 + $b);
  12. var_dump($a - $b);
  13. var_dump($a - 17);
  14. var_dump(42 - $b);
  15. var_dump($a * $b);
  16. var_dump($a * 17);
  17. var_dump(42 * $b);
  18. var_dump($a / $b);
  19. var_dump($a / 17);
  20. var_dump(42 / $b);
  21. var_dump($a / 0);
  22. var_dump($a % $b);
  23. var_dump($a % 17);
  24. var_dump(42 % $b);
  25. var_dump($a % 0);
  26. var_dump($a ** $b);
  27. var_dump($a ** 17);
  28. var_dump(42 ** $b);
  29. var_dump($a | $b);
  30. var_dump($a | 17);
  31. var_dump(42 | $b);
  32. var_dump($a & $b);
  33. var_dump($a & 17);
  34. var_dump(42 & $b);
  35. var_dump($a ^ $b);
  36. var_dump($a ^ 17);
  37. var_dump(42 ^ $b);
  38. var_dump($a << $b);
  39. var_dump($a << 17);
  40. var_dump(42 << $b);
  41. var_dump($a >> 2);
  42. var_dump(-$a >> 2);
  43. var_dump($a << -1);
  44. var_dump($a >> -1);
  45. var_dump(~$a);
  46. var_dump(-$a);
  47. var_dump(+$a);
  48. var_dump($a == $b);
  49. var_dump($a != $b);
  50. var_dump($a < $b);
  51. var_dump($a <= $b);
  52. var_dump($a > $b);
  53. var_dump($a >= $b);
  54. var_dump($a == $a);
  55. var_dump($a != $a);
  56. var_dump($a == 42);
  57. var_dump($a != 42);
  58. var_dump($a < 42);
  59. var_dump($a <= 42);
  60. var_dump($a > 42);
  61. var_dump($a >= 42);
  62. var_dump($a == new stdClass);
  63. $a += 1;
  64. var_dump($a);
  65. $a -= 1;
  66. var_dump($a);
  67. var_dump(++$a);
  68. var_dump($a++);
  69. var_dump($a);
  70. var_dump(--$a);
  71. var_dump($a--);
  72. var_dump($a);
  73. // Test operator that was not overloaded
  74. var_dump($a . $b);
  75. var_dump($a . '17');
  76. var_dump('42' . $b);
  77. $a .= '17';
  78. var_dump($a);
  79. ?>
  80. --EXPECTF--
  81. object(GMP)#%d (1) {
  82. ["num"]=>
  83. string(2) "59"
  84. }
  85. object(GMP)#%d (1) {
  86. ["num"]=>
  87. string(2) "59"
  88. }
  89. object(GMP)#%d (1) {
  90. ["num"]=>
  91. string(2) "59"
  92. }
  93. object(GMP)#%d (1) {
  94. ["num"]=>
  95. string(2) "25"
  96. }
  97. object(GMP)#%d (1) {
  98. ["num"]=>
  99. string(2) "25"
  100. }
  101. object(GMP)#%d (1) {
  102. ["num"]=>
  103. string(2) "25"
  104. }
  105. object(GMP)#%d (1) {
  106. ["num"]=>
  107. string(3) "714"
  108. }
  109. object(GMP)#%d (1) {
  110. ["num"]=>
  111. string(3) "714"
  112. }
  113. object(GMP)#%d (1) {
  114. ["num"]=>
  115. string(3) "714"
  116. }
  117. object(GMP)#%d (1) {
  118. ["num"]=>
  119. string(1) "2"
  120. }
  121. object(GMP)#%d (1) {
  122. ["num"]=>
  123. string(1) "2"
  124. }
  125. object(GMP)#%d (1) {
  126. ["num"]=>
  127. string(1) "2"
  128. }
  129. Warning: main(): Zero operand not allowed in %s on line %d
  130. bool(false)
  131. object(GMP)#%d (1) {
  132. ["num"]=>
  133. string(1) "8"
  134. }
  135. object(GMP)#%d (1) {
  136. ["num"]=>
  137. string(1) "8"
  138. }
  139. object(GMP)#%d (1) {
  140. ["num"]=>
  141. string(1) "8"
  142. }
  143. Warning: main(): Zero operand not allowed in %s on line %d
  144. bool(false)
  145. object(GMP)#%d (1) {
  146. ["num"]=>
  147. string(28) "3937657486715347520027492352"
  148. }
  149. object(GMP)#%d (1) {
  150. ["num"]=>
  151. string(28) "3937657486715347520027492352"
  152. }
  153. object(GMP)#%d (1) {
  154. ["num"]=>
  155. string(28) "3937657486715347520027492352"
  156. }
  157. object(GMP)#%d (1) {
  158. ["num"]=>
  159. string(2) "59"
  160. }
  161. object(GMP)#%d (1) {
  162. ["num"]=>
  163. string(2) "59"
  164. }
  165. object(GMP)#%d (1) {
  166. ["num"]=>
  167. string(2) "59"
  168. }
  169. object(GMP)#%d (1) {
  170. ["num"]=>
  171. string(1) "0"
  172. }
  173. object(GMP)#%d (1) {
  174. ["num"]=>
  175. string(1) "0"
  176. }
  177. object(GMP)#%d (1) {
  178. ["num"]=>
  179. string(1) "0"
  180. }
  181. object(GMP)#%d (1) {
  182. ["num"]=>
  183. string(2) "59"
  184. }
  185. object(GMP)#%d (1) {
  186. ["num"]=>
  187. string(2) "59"
  188. }
  189. object(GMP)#%d (1) {
  190. ["num"]=>
  191. string(2) "59"
  192. }
  193. object(GMP)#%d (1) {
  194. ["num"]=>
  195. string(7) "5505024"
  196. }
  197. object(GMP)#%d (1) {
  198. ["num"]=>
  199. string(7) "5505024"
  200. }
  201. object(GMP)#%d (1) {
  202. ["num"]=>
  203. string(7) "5505024"
  204. }
  205. object(GMP)#%d (1) {
  206. ["num"]=>
  207. string(2) "10"
  208. }
  209. object(GMP)#%d (1) {
  210. ["num"]=>
  211. string(3) "-11"
  212. }
  213. Warning: main(): Shift cannot be negative in %s on line %d
  214. bool(false)
  215. Warning: main(): Shift cannot be negative in %s on line %d
  216. bool(false)
  217. object(GMP)#%d (1) {
  218. ["num"]=>
  219. string(3) "-43"
  220. }
  221. object(GMP)#%d (1) {
  222. ["num"]=>
  223. string(3) "-42"
  224. }
  225. object(GMP)#%d (1) {
  226. ["num"]=>
  227. string(2) "42"
  228. }
  229. bool(false)
  230. bool(true)
  231. bool(false)
  232. bool(false)
  233. bool(true)
  234. bool(true)
  235. bool(true)
  236. bool(false)
  237. bool(true)
  238. bool(false)
  239. bool(false)
  240. bool(true)
  241. bool(false)
  242. bool(true)
  243. Warning: main(): Unable to convert variable to GMP - wrong type in %s on line %d
  244. bool(false)
  245. object(GMP)#%d (1) {
  246. ["num"]=>
  247. string(2) "43"
  248. }
  249. object(GMP)#%d (1) {
  250. ["num"]=>
  251. string(2) "42"
  252. }
  253. object(GMP)#%d (1) {
  254. ["num"]=>
  255. string(2) "43"
  256. }
  257. object(GMP)#%d (1) {
  258. ["num"]=>
  259. string(2) "43"
  260. }
  261. object(GMP)#%d (1) {
  262. ["num"]=>
  263. string(2) "44"
  264. }
  265. object(GMP)#%d (1) {
  266. ["num"]=>
  267. string(2) "43"
  268. }
  269. object(GMP)#%d (1) {
  270. ["num"]=>
  271. string(2) "43"
  272. }
  273. object(GMP)#%d (1) {
  274. ["num"]=>
  275. string(2) "42"
  276. }
  277. string(4) "4217"
  278. string(4) "4217"
  279. string(4) "4217"
  280. string(4) "4217"