1--TEST-- 2Test >> operator : 64bit long tests 3--SKIPIF-- 4<?php 5if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only"); 6?> 7--FILE-- 8<?php 9 10define("MAX_64Bit", 9223372036854775807); 11define("MAX_32Bit", 2147483647); 12define("MIN_64Bit", -9223372036854775807 - 1); 13define("MIN_32Bit", -2147483647 - 1); 14 15$longVals = array( 16 MAX_64Bit, MIN_64Bit, MAX_32Bit, MIN_32Bit, MAX_64Bit - MAX_32Bit, MIN_64Bit - MIN_32Bit, 17 MAX_32Bit + 1, MIN_32Bit - 1, MAX_32Bit * 2, (MAX_32Bit * 2) + 1, (MAX_32Bit * 2) - 1, 18 MAX_64Bit -1, MAX_64Bit + 1, MIN_64Bit + 1, MIN_64Bit - 1 19); 20 21$otherVals = array(0, 1, -1, 7, 9, 65, -44, MAX_32Bit, MAX_64Bit); 22 23error_reporting(E_ERROR); 24 25foreach ($longVals as $longVal) { 26 foreach($otherVals as $otherVal) { 27 echo "--- testing: $longVal >> $otherVal ---\n"; 28 try { 29 var_dump($longVal>>$otherVal); 30 } catch (ArithmeticError $e) { 31 echo "Exception: " . $e->getMessage() . "\n"; 32 } 33 } 34} 35 36foreach ($otherVals as $otherVal) { 37 foreach($longVals as $longVal) { 38 echo "--- testing: $otherVal >> $longVal ---\n"; 39 try { 40 var_dump($otherVal>>$longVal); 41 } catch (ArithmeticError $e) { 42 echo "Exception: " . $e->getMessage() . "\n"; 43 } 44 } 45} 46 47?> 48===DONE=== 49--EXPECT-- 50--- testing: 9223372036854775807 >> 0 --- 51int(9223372036854775807) 52--- testing: 9223372036854775807 >> 1 --- 53int(4611686018427387903) 54--- testing: 9223372036854775807 >> -1 --- 55Exception: Bit shift by negative number 56--- testing: 9223372036854775807 >> 7 --- 57int(72057594037927935) 58--- testing: 9223372036854775807 >> 9 --- 59int(18014398509481983) 60--- testing: 9223372036854775807 >> 65 --- 61int(0) 62--- testing: 9223372036854775807 >> -44 --- 63Exception: Bit shift by negative number 64--- testing: 9223372036854775807 >> 2147483647 --- 65int(0) 66--- testing: 9223372036854775807 >> 9223372036854775807 --- 67int(0) 68--- testing: -9223372036854775808 >> 0 --- 69int(-9223372036854775808) 70--- testing: -9223372036854775808 >> 1 --- 71int(-4611686018427387904) 72--- testing: -9223372036854775808 >> -1 --- 73Exception: Bit shift by negative number 74--- testing: -9223372036854775808 >> 7 --- 75int(-72057594037927936) 76--- testing: -9223372036854775808 >> 9 --- 77int(-18014398509481984) 78--- testing: -9223372036854775808 >> 65 --- 79int(-1) 80--- testing: -9223372036854775808 >> -44 --- 81Exception: Bit shift by negative number 82--- testing: -9223372036854775808 >> 2147483647 --- 83int(-1) 84--- testing: -9223372036854775808 >> 9223372036854775807 --- 85int(-1) 86--- testing: 2147483647 >> 0 --- 87int(2147483647) 88--- testing: 2147483647 >> 1 --- 89int(1073741823) 90--- testing: 2147483647 >> -1 --- 91Exception: Bit shift by negative number 92--- testing: 2147483647 >> 7 --- 93int(16777215) 94--- testing: 2147483647 >> 9 --- 95int(4194303) 96--- testing: 2147483647 >> 65 --- 97int(0) 98--- testing: 2147483647 >> -44 --- 99Exception: Bit shift by negative number 100--- testing: 2147483647 >> 2147483647 --- 101int(0) 102--- testing: 2147483647 >> 9223372036854775807 --- 103int(0) 104--- testing: -2147483648 >> 0 --- 105int(-2147483648) 106--- testing: -2147483648 >> 1 --- 107int(-1073741824) 108--- testing: -2147483648 >> -1 --- 109Exception: Bit shift by negative number 110--- testing: -2147483648 >> 7 --- 111int(-16777216) 112--- testing: -2147483648 >> 9 --- 113int(-4194304) 114--- testing: -2147483648 >> 65 --- 115int(-1) 116--- testing: -2147483648 >> -44 --- 117Exception: Bit shift by negative number 118--- testing: -2147483648 >> 2147483647 --- 119int(-1) 120--- testing: -2147483648 >> 9223372036854775807 --- 121int(-1) 122--- testing: 9223372034707292160 >> 0 --- 123int(9223372034707292160) 124--- testing: 9223372034707292160 >> 1 --- 125int(4611686017353646080) 126--- testing: 9223372034707292160 >> -1 --- 127Exception: Bit shift by negative number 128--- testing: 9223372034707292160 >> 7 --- 129int(72057594021150720) 130--- testing: 9223372034707292160 >> 9 --- 131int(18014398505287680) 132--- testing: 9223372034707292160 >> 65 --- 133int(0) 134--- testing: 9223372034707292160 >> -44 --- 135Exception: Bit shift by negative number 136--- testing: 9223372034707292160 >> 2147483647 --- 137int(0) 138--- testing: 9223372034707292160 >> 9223372036854775807 --- 139int(0) 140--- testing: -9223372034707292160 >> 0 --- 141int(-9223372034707292160) 142--- testing: -9223372034707292160 >> 1 --- 143int(-4611686017353646080) 144--- testing: -9223372034707292160 >> -1 --- 145Exception: Bit shift by negative number 146--- testing: -9223372034707292160 >> 7 --- 147int(-72057594021150720) 148--- testing: -9223372034707292160 >> 9 --- 149int(-18014398505287680) 150--- testing: -9223372034707292160 >> 65 --- 151int(-1) 152--- testing: -9223372034707292160 >> -44 --- 153Exception: Bit shift by negative number 154--- testing: -9223372034707292160 >> 2147483647 --- 155int(-1) 156--- testing: -9223372034707292160 >> 9223372036854775807 --- 157int(-1) 158--- testing: 2147483648 >> 0 --- 159int(2147483648) 160--- testing: 2147483648 >> 1 --- 161int(1073741824) 162--- testing: 2147483648 >> -1 --- 163Exception: Bit shift by negative number 164--- testing: 2147483648 >> 7 --- 165int(16777216) 166--- testing: 2147483648 >> 9 --- 167int(4194304) 168--- testing: 2147483648 >> 65 --- 169int(0) 170--- testing: 2147483648 >> -44 --- 171Exception: Bit shift by negative number 172--- testing: 2147483648 >> 2147483647 --- 173int(0) 174--- testing: 2147483648 >> 9223372036854775807 --- 175int(0) 176--- testing: -2147483649 >> 0 --- 177int(-2147483649) 178--- testing: -2147483649 >> 1 --- 179int(-1073741825) 180--- testing: -2147483649 >> -1 --- 181Exception: Bit shift by negative number 182--- testing: -2147483649 >> 7 --- 183int(-16777217) 184--- testing: -2147483649 >> 9 --- 185int(-4194305) 186--- testing: -2147483649 >> 65 --- 187int(-1) 188--- testing: -2147483649 >> -44 --- 189Exception: Bit shift by negative number 190--- testing: -2147483649 >> 2147483647 --- 191int(-1) 192--- testing: -2147483649 >> 9223372036854775807 --- 193int(-1) 194--- testing: 4294967294 >> 0 --- 195int(4294967294) 196--- testing: 4294967294 >> 1 --- 197int(2147483647) 198--- testing: 4294967294 >> -1 --- 199Exception: Bit shift by negative number 200--- testing: 4294967294 >> 7 --- 201int(33554431) 202--- testing: 4294967294 >> 9 --- 203int(8388607) 204--- testing: 4294967294 >> 65 --- 205int(0) 206--- testing: 4294967294 >> -44 --- 207Exception: Bit shift by negative number 208--- testing: 4294967294 >> 2147483647 --- 209int(0) 210--- testing: 4294967294 >> 9223372036854775807 --- 211int(0) 212--- testing: 4294967295 >> 0 --- 213int(4294967295) 214--- testing: 4294967295 >> 1 --- 215int(2147483647) 216--- testing: 4294967295 >> -1 --- 217Exception: Bit shift by negative number 218--- testing: 4294967295 >> 7 --- 219int(33554431) 220--- testing: 4294967295 >> 9 --- 221int(8388607) 222--- testing: 4294967295 >> 65 --- 223int(0) 224--- testing: 4294967295 >> -44 --- 225Exception: Bit shift by negative number 226--- testing: 4294967295 >> 2147483647 --- 227int(0) 228--- testing: 4294967295 >> 9223372036854775807 --- 229int(0) 230--- testing: 4294967293 >> 0 --- 231int(4294967293) 232--- testing: 4294967293 >> 1 --- 233int(2147483646) 234--- testing: 4294967293 >> -1 --- 235Exception: Bit shift by negative number 236--- testing: 4294967293 >> 7 --- 237int(33554431) 238--- testing: 4294967293 >> 9 --- 239int(8388607) 240--- testing: 4294967293 >> 65 --- 241int(0) 242--- testing: 4294967293 >> -44 --- 243Exception: Bit shift by negative number 244--- testing: 4294967293 >> 2147483647 --- 245int(0) 246--- testing: 4294967293 >> 9223372036854775807 --- 247int(0) 248--- testing: 9223372036854775806 >> 0 --- 249int(9223372036854775806) 250--- testing: 9223372036854775806 >> 1 --- 251int(4611686018427387903) 252--- testing: 9223372036854775806 >> -1 --- 253Exception: Bit shift by negative number 254--- testing: 9223372036854775806 >> 7 --- 255int(72057594037927935) 256--- testing: 9223372036854775806 >> 9 --- 257int(18014398509481983) 258--- testing: 9223372036854775806 >> 65 --- 259int(0) 260--- testing: 9223372036854775806 >> -44 --- 261Exception: Bit shift by negative number 262--- testing: 9223372036854775806 >> 2147483647 --- 263int(0) 264--- testing: 9223372036854775806 >> 9223372036854775807 --- 265int(0) 266--- testing: 9.2233720368548E+18 >> 0 --- 267int(-9223372036854775808) 268--- testing: 9.2233720368548E+18 >> 1 --- 269int(-4611686018427387904) 270--- testing: 9.2233720368548E+18 >> -1 --- 271Exception: Bit shift by negative number 272--- testing: 9.2233720368548E+18 >> 7 --- 273int(-72057594037927936) 274--- testing: 9.2233720368548E+18 >> 9 --- 275int(-18014398509481984) 276--- testing: 9.2233720368548E+18 >> 65 --- 277int(-1) 278--- testing: 9.2233720368548E+18 >> -44 --- 279Exception: Bit shift by negative number 280--- testing: 9.2233720368548E+18 >> 2147483647 --- 281int(-1) 282--- testing: 9.2233720368548E+18 >> 9223372036854775807 --- 283int(-1) 284--- testing: -9223372036854775807 >> 0 --- 285int(-9223372036854775807) 286--- testing: -9223372036854775807 >> 1 --- 287int(-4611686018427387904) 288--- testing: -9223372036854775807 >> -1 --- 289Exception: Bit shift by negative number 290--- testing: -9223372036854775807 >> 7 --- 291int(-72057594037927936) 292--- testing: -9223372036854775807 >> 9 --- 293int(-18014398509481984) 294--- testing: -9223372036854775807 >> 65 --- 295int(-1) 296--- testing: -9223372036854775807 >> -44 --- 297Exception: Bit shift by negative number 298--- testing: -9223372036854775807 >> 2147483647 --- 299int(-1) 300--- testing: -9223372036854775807 >> 9223372036854775807 --- 301int(-1) 302--- testing: -9.2233720368548E+18 >> 0 --- 303int(-9223372036854775808) 304--- testing: -9.2233720368548E+18 >> 1 --- 305int(-4611686018427387904) 306--- testing: -9.2233720368548E+18 >> -1 --- 307Exception: Bit shift by negative number 308--- testing: -9.2233720368548E+18 >> 7 --- 309int(-72057594037927936) 310--- testing: -9.2233720368548E+18 >> 9 --- 311int(-18014398509481984) 312--- testing: -9.2233720368548E+18 >> 65 --- 313int(-1) 314--- testing: -9.2233720368548E+18 >> -44 --- 315Exception: Bit shift by negative number 316--- testing: -9.2233720368548E+18 >> 2147483647 --- 317int(-1) 318--- testing: -9.2233720368548E+18 >> 9223372036854775807 --- 319int(-1) 320--- testing: 0 >> 9223372036854775807 --- 321int(0) 322--- testing: 0 >> -9223372036854775808 --- 323Exception: Bit shift by negative number 324--- testing: 0 >> 2147483647 --- 325int(0) 326--- testing: 0 >> -2147483648 --- 327Exception: Bit shift by negative number 328--- testing: 0 >> 9223372034707292160 --- 329int(0) 330--- testing: 0 >> -9223372034707292160 --- 331Exception: Bit shift by negative number 332--- testing: 0 >> 2147483648 --- 333int(0) 334--- testing: 0 >> -2147483649 --- 335Exception: Bit shift by negative number 336--- testing: 0 >> 4294967294 --- 337int(0) 338--- testing: 0 >> 4294967295 --- 339int(0) 340--- testing: 0 >> 4294967293 --- 341int(0) 342--- testing: 0 >> 9223372036854775806 --- 343int(0) 344--- testing: 0 >> 9.2233720368548E+18 --- 345Exception: Bit shift by negative number 346--- testing: 0 >> -9223372036854775807 --- 347Exception: Bit shift by negative number 348--- testing: 0 >> -9.2233720368548E+18 --- 349Exception: Bit shift by negative number 350--- testing: 1 >> 9223372036854775807 --- 351int(0) 352--- testing: 1 >> -9223372036854775808 --- 353Exception: Bit shift by negative number 354--- testing: 1 >> 2147483647 --- 355int(0) 356--- testing: 1 >> -2147483648 --- 357Exception: Bit shift by negative number 358--- testing: 1 >> 9223372034707292160 --- 359int(0) 360--- testing: 1 >> -9223372034707292160 --- 361Exception: Bit shift by negative number 362--- testing: 1 >> 2147483648 --- 363int(0) 364--- testing: 1 >> -2147483649 --- 365Exception: Bit shift by negative number 366--- testing: 1 >> 4294967294 --- 367int(0) 368--- testing: 1 >> 4294967295 --- 369int(0) 370--- testing: 1 >> 4294967293 --- 371int(0) 372--- testing: 1 >> 9223372036854775806 --- 373int(0) 374--- testing: 1 >> 9.2233720368548E+18 --- 375Exception: Bit shift by negative number 376--- testing: 1 >> -9223372036854775807 --- 377Exception: Bit shift by negative number 378--- testing: 1 >> -9.2233720368548E+18 --- 379Exception: Bit shift by negative number 380--- testing: -1 >> 9223372036854775807 --- 381int(-1) 382--- testing: -1 >> -9223372036854775808 --- 383Exception: Bit shift by negative number 384--- testing: -1 >> 2147483647 --- 385int(-1) 386--- testing: -1 >> -2147483648 --- 387Exception: Bit shift by negative number 388--- testing: -1 >> 9223372034707292160 --- 389int(-1) 390--- testing: -1 >> -9223372034707292160 --- 391Exception: Bit shift by negative number 392--- testing: -1 >> 2147483648 --- 393int(-1) 394--- testing: -1 >> -2147483649 --- 395Exception: Bit shift by negative number 396--- testing: -1 >> 4294967294 --- 397int(-1) 398--- testing: -1 >> 4294967295 --- 399int(-1) 400--- testing: -1 >> 4294967293 --- 401int(-1) 402--- testing: -1 >> 9223372036854775806 --- 403int(-1) 404--- testing: -1 >> 9.2233720368548E+18 --- 405Exception: Bit shift by negative number 406--- testing: -1 >> -9223372036854775807 --- 407Exception: Bit shift by negative number 408--- testing: -1 >> -9.2233720368548E+18 --- 409Exception: Bit shift by negative number 410--- testing: 7 >> 9223372036854775807 --- 411int(0) 412--- testing: 7 >> -9223372036854775808 --- 413Exception: Bit shift by negative number 414--- testing: 7 >> 2147483647 --- 415int(0) 416--- testing: 7 >> -2147483648 --- 417Exception: Bit shift by negative number 418--- testing: 7 >> 9223372034707292160 --- 419int(0) 420--- testing: 7 >> -9223372034707292160 --- 421Exception: Bit shift by negative number 422--- testing: 7 >> 2147483648 --- 423int(0) 424--- testing: 7 >> -2147483649 --- 425Exception: Bit shift by negative number 426--- testing: 7 >> 4294967294 --- 427int(0) 428--- testing: 7 >> 4294967295 --- 429int(0) 430--- testing: 7 >> 4294967293 --- 431int(0) 432--- testing: 7 >> 9223372036854775806 --- 433int(0) 434--- testing: 7 >> 9.2233720368548E+18 --- 435Exception: Bit shift by negative number 436--- testing: 7 >> -9223372036854775807 --- 437Exception: Bit shift by negative number 438--- testing: 7 >> -9.2233720368548E+18 --- 439Exception: Bit shift by negative number 440--- testing: 9 >> 9223372036854775807 --- 441int(0) 442--- testing: 9 >> -9223372036854775808 --- 443Exception: Bit shift by negative number 444--- testing: 9 >> 2147483647 --- 445int(0) 446--- testing: 9 >> -2147483648 --- 447Exception: Bit shift by negative number 448--- testing: 9 >> 9223372034707292160 --- 449int(0) 450--- testing: 9 >> -9223372034707292160 --- 451Exception: Bit shift by negative number 452--- testing: 9 >> 2147483648 --- 453int(0) 454--- testing: 9 >> -2147483649 --- 455Exception: Bit shift by negative number 456--- testing: 9 >> 4294967294 --- 457int(0) 458--- testing: 9 >> 4294967295 --- 459int(0) 460--- testing: 9 >> 4294967293 --- 461int(0) 462--- testing: 9 >> 9223372036854775806 --- 463int(0) 464--- testing: 9 >> 9.2233720368548E+18 --- 465Exception: Bit shift by negative number 466--- testing: 9 >> -9223372036854775807 --- 467Exception: Bit shift by negative number 468--- testing: 9 >> -9.2233720368548E+18 --- 469Exception: Bit shift by negative number 470--- testing: 65 >> 9223372036854775807 --- 471int(0) 472--- testing: 65 >> -9223372036854775808 --- 473Exception: Bit shift by negative number 474--- testing: 65 >> 2147483647 --- 475int(0) 476--- testing: 65 >> -2147483648 --- 477Exception: Bit shift by negative number 478--- testing: 65 >> 9223372034707292160 --- 479int(0) 480--- testing: 65 >> -9223372034707292160 --- 481Exception: Bit shift by negative number 482--- testing: 65 >> 2147483648 --- 483int(0) 484--- testing: 65 >> -2147483649 --- 485Exception: Bit shift by negative number 486--- testing: 65 >> 4294967294 --- 487int(0) 488--- testing: 65 >> 4294967295 --- 489int(0) 490--- testing: 65 >> 4294967293 --- 491int(0) 492--- testing: 65 >> 9223372036854775806 --- 493int(0) 494--- testing: 65 >> 9.2233720368548E+18 --- 495Exception: Bit shift by negative number 496--- testing: 65 >> -9223372036854775807 --- 497Exception: Bit shift by negative number 498--- testing: 65 >> -9.2233720368548E+18 --- 499Exception: Bit shift by negative number 500--- testing: -44 >> 9223372036854775807 --- 501int(-1) 502--- testing: -44 >> -9223372036854775808 --- 503Exception: Bit shift by negative number 504--- testing: -44 >> 2147483647 --- 505int(-1) 506--- testing: -44 >> -2147483648 --- 507Exception: Bit shift by negative number 508--- testing: -44 >> 9223372034707292160 --- 509int(-1) 510--- testing: -44 >> -9223372034707292160 --- 511Exception: Bit shift by negative number 512--- testing: -44 >> 2147483648 --- 513int(-1) 514--- testing: -44 >> -2147483649 --- 515Exception: Bit shift by negative number 516--- testing: -44 >> 4294967294 --- 517int(-1) 518--- testing: -44 >> 4294967295 --- 519int(-1) 520--- testing: -44 >> 4294967293 --- 521int(-1) 522--- testing: -44 >> 9223372036854775806 --- 523int(-1) 524--- testing: -44 >> 9.2233720368548E+18 --- 525Exception: Bit shift by negative number 526--- testing: -44 >> -9223372036854775807 --- 527Exception: Bit shift by negative number 528--- testing: -44 >> -9.2233720368548E+18 --- 529Exception: Bit shift by negative number 530--- testing: 2147483647 >> 9223372036854775807 --- 531int(0) 532--- testing: 2147483647 >> -9223372036854775808 --- 533Exception: Bit shift by negative number 534--- testing: 2147483647 >> 2147483647 --- 535int(0) 536--- testing: 2147483647 >> -2147483648 --- 537Exception: Bit shift by negative number 538--- testing: 2147483647 >> 9223372034707292160 --- 539int(0) 540--- testing: 2147483647 >> -9223372034707292160 --- 541Exception: Bit shift by negative number 542--- testing: 2147483647 >> 2147483648 --- 543int(0) 544--- testing: 2147483647 >> -2147483649 --- 545Exception: Bit shift by negative number 546--- testing: 2147483647 >> 4294967294 --- 547int(0) 548--- testing: 2147483647 >> 4294967295 --- 549int(0) 550--- testing: 2147483647 >> 4294967293 --- 551int(0) 552--- testing: 2147483647 >> 9223372036854775806 --- 553int(0) 554--- testing: 2147483647 >> 9.2233720368548E+18 --- 555Exception: Bit shift by negative number 556--- testing: 2147483647 >> -9223372036854775807 --- 557Exception: Bit shift by negative number 558--- testing: 2147483647 >> -9.2233720368548E+18 --- 559Exception: Bit shift by negative number 560--- testing: 9223372036854775807 >> 9223372036854775807 --- 561int(0) 562--- testing: 9223372036854775807 >> -9223372036854775808 --- 563Exception: Bit shift by negative number 564--- testing: 9223372036854775807 >> 2147483647 --- 565int(0) 566--- testing: 9223372036854775807 >> -2147483648 --- 567Exception: Bit shift by negative number 568--- testing: 9223372036854775807 >> 9223372034707292160 --- 569int(0) 570--- testing: 9223372036854775807 >> -9223372034707292160 --- 571Exception: Bit shift by negative number 572--- testing: 9223372036854775807 >> 2147483648 --- 573int(0) 574--- testing: 9223372036854775807 >> -2147483649 --- 575Exception: Bit shift by negative number 576--- testing: 9223372036854775807 >> 4294967294 --- 577int(0) 578--- testing: 9223372036854775807 >> 4294967295 --- 579int(0) 580--- testing: 9223372036854775807 >> 4294967293 --- 581int(0) 582--- testing: 9223372036854775807 >> 9223372036854775806 --- 583int(0) 584--- testing: 9223372036854775807 >> 9.2233720368548E+18 --- 585Exception: Bit shift by negative number 586--- testing: 9223372036854775807 >> -9223372036854775807 --- 587Exception: Bit shift by negative number 588--- testing: 9223372036854775807 >> -9.2233720368548E+18 --- 589Exception: Bit shift by negative number 590===DONE=== 591