Return to var_export-locale.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / standard / tests / general_functions |
1.1 misho 1: --TEST-- 2: Test var_export() function with locale 3: --INI-- 4: precision=14 5: --SKIPIF-- 6: <?php 7: if (!setlocale(LC_ALL, "german", "de","de_DE","de_DE.ISO8859-1","de_DE.ISO_8859-1","de_DE.UTF-8")) { 8: die("skip locale needed for this test is not supported on this platform"); 9: } 10: ?> 11: --FILE-- 12: <?php 13: setlocale(LC_ALL, "german", "de","de_DE","de_DE.ISO8859-1","de_DE.ISO_8859-1","de_DE.UTF-8"); 14: /* Prototype: mixed var_export( mixed expression [, bool return]); 15: * Description: Returns the variable representation when the return parameter is used and evaluates to TRUE. Otherwise, this function will return NULL. 16: 17: */ 18: 19: echo "*** Testing var_export() with integer values ***\n"; 20: // different integer vlaues 21: $valid_ints = array( 22: '0', 23: '1', 24: '-1', 25: '-2147483648', // max negative integer value 26: '-2147483647', 27: 2147483647, // max positive integer value 28: 2147483640, 29: 0x123B, // integer as hexadecimal 30: '0x12ab', 31: '0Xfff', 32: '0XFA', 33: -0x80000000, // max negative integer as hexadecimal 34: '0x7fffffff', // max postive integer as hexadecimal 35: 0x7FFFFFFF, // max postive integer as hexadecimal 36: '0123', // integer as octal 37: 01912, // should be quivalent to octal 1 38: -020000000000, // max negative integer as octal 39: 017777777777, // max positive integer as octal 40: ); 41: $counter = 1; 42: /* Loop to check for above integer values with var_export() */ 43: echo "\n*** Output for integer values ***\n"; 44: foreach($valid_ints as $int_value) { 45: echo "\nIteration ".$counter."\n"; 46: var_export( $int_value ); 47: echo "\n"; 48: var_export( $int_value, FALSE); 49: echo "\n"; 50: var_dump( var_export( $int_value, TRUE) ); 51: echo "\n"; 52: $counter++; 53: } 54: 55: echo "*** Testing var_export() with valid boolean values ***\n"; 56: // different valid boolean vlaues 57: $valid_bool = array( 58: 1, 59: TRUE, 60: true, 61: 0, 62: FALSE, 63: false 64: ); 65: $counter = 1; 66: /* Loop to check for above boolean values with var_export() */ 67: echo "\n*** Output for boolean values ***\n"; 68: foreach($valid_bool as $bool_value) { 69: echo "\nIteration ".$counter."\n"; 70: var_export( $bool_value ); 71: echo "\n"; 72: var_export( $bool_value, FALSE); 73: echo "\n"; 74: var_dump( var_export( $bool_value, TRUE) ); 75: echo "\n"; 76: $counter++; 77: } 78: 79: echo "*** Testing var_export() with valid float values ***\n"; 80: // different valid float vlaues 81: $valid_floats = array( 82: -2147483649, // float value 83: 2147483648, // float value 84: -0x80000001, // float value, beyond max negative int 85: 0x800000001, // float value, beyond max positive int 86: 020000000001, // float value, beyond max positive int 87: -020000000001, // float value, beyond max negative int 88: 0.0, 89: -0.1, 90: 10.0000000000000000005, 91: 10.5e+5, 92: 1e5, 93: 1e-5, 94: 1e+5, 95: 1E5, 96: 1E+5, 97: 1E-5, 98: .5e+7, 99: .6e-19, 100: .05E+44, 101: .0034E-30 102: ); 103: $counter = 1; 104: /* Loop to check for above float values with var_export() */ 105: echo "\n*** Output for float values ***\n"; 106: foreach($valid_bool as $float_value) { 107: echo "\nIteration ".$counter."\n"; 108: var_export( $float_value ); 109: echo "\n"; 110: var_export( $float_value, FALSE); 111: echo "\n"; 112: var_dump( var_export( $float_value, TRUE) ); 113: echo "\n"; 114: $counter++; 115: } 116: 117: echo "*** Testing var_export() with valid strings ***\n"; 118: // different valid string 119: $valid_strings = array( 120: "", 121: " ", 122: '', 123: ' ', 124: "string", 125: 'string', 126: "NULL", 127: 'null', 128: "FALSE", 129: 'false', 130: "\x0b", 131: "\0", 132: '\0', 133: '\060', 134: "\070" 135: ); 136: $counter = 1; 137: /* Loop to check for above strings with var_export() */ 138: echo "\n*** Output for strings ***\n"; 139: foreach($valid_strings as $str) { 140: echo "\nIteration ".$counter."\n"; 141: var_export( $str ); 142: echo "\n"; 143: var_export( $str, FALSE); 144: echo "\n"; 145: var_dump( var_export( $str, TRUE) ); 146: echo "\n"; 147: $counter++; 148: } 149: 150: echo "*** Testing var_export() with valid arrays ***\n"; 151: // different valid arrays 152: $valid_arrays = array( 153: array(), 154: array(NULL), 155: array(null), 156: array(true), 157: array(""), 158: array(''), 159: array(array(), array()), 160: array(array(1, 2), array('a', 'b')), 161: array(1 => 'One'), 162: array("test" => "is_array"), 163: array(0), 164: array(-1), 165: array(10.5, 5.6), 166: array("string", "test"), 167: array('string', 'test') 168: ); 169: $counter = 1; 170: /* Loop to check for above arrays with var_export() */ 171: echo "\n*** Output for arrays ***\n"; 172: foreach($valid_arrays as $arr) { 173: echo "\nIteration ".$counter."\n"; 174: var_export( $arr ); 175: echo "\n"; 176: var_export( $arr, FALSE); 177: echo "\n"; 178: var_dump( var_export( $arr, TRUE) ); 179: echo "\n"; 180: $counter++; 181: } 182: 183: echo "*** Testing var_export() with valid objects ***\n"; 184: 185: // class with no members 186: class foo 187: { 188: // no members 189: } 190: 191: // abstract class 192: abstract class abstractClass 193: { 194: abstract protected function getClassName(); 195: public function printClassName () { 196: echo $this->getClassName() . "\n"; 197: } 198: } 199: // implement abstract class 200: class concreteClass extends abstractClass 201: { 202: protected function getClassName() { 203: return "concreteClass"; 204: } 205: } 206: 207: // interface class 208: interface iValue 209: { 210: public function setVal ($name, $val); 211: public function dumpVal (); 212: } 213: // implement the interface 214: class Value implements iValue 215: { 216: private $vars = array (); 217: 218: public function setVal ( $name, $val ) { 219: $this->vars[$name] = $val; 220: } 221: 222: public function dumpVal () { 223: var_export ( $vars ); 224: } 225: } 226: 227: // a gereral class 228: class myClass 229: { 230: var $foo_object; 231: public $public_var; 232: public $public_var1; 233: private $private_var; 234: protected $protected_var; 235: 236: function myClass ( ) { 237: $this->foo_object = new foo(); 238: $this->public_var = 10; 239: $this->public_var1 = new foo(); 240: $this->private_var = new foo(); 241: $this->proected_var = new foo(); 242: } 243: } 244: 245: // create a object of each class defined above 246: $myClass_object = new myClass(); 247: $foo_object = new foo(); 248: $Value_object = new Value(); 249: $concreteClass_object = new concreteClass(); 250: 251: $valid_objects = array( 252: new stdclass, 253: new foo, 254: new concreteClass, 255: new Value, 256: new myClass, 257: $myClass_object, 258: $myClass_object->foo_object, 259: $myClass_object->public_var1, 260: $foo_object, 261: $Value_object, 262: $concreteClass_object 263: ); 264: $counter = 1; 265: /* Loop to check for above objects with var_export() */ 266: echo "\n*** Output for objects ***\n"; 267: foreach($valid_objects as $obj) { 268: echo "\nIteration ".$counter."\n"; 269: var_export( $obj ); 270: echo "\n"; 271: var_export( $obj, FALSE); 272: echo "\n"; 273: var_dump( var_export( $obj, TRUE) ); 274: echo "\n"; 275: $counter++; 276: } 277: 278: echo "*** Testing var_export() with valid null values ***\n"; 279: // different valid null vlaues 280: $unset_var = array(); 281: unset ($unset_var); // now a null 282: $null_var = NULL; 283: 284: $valid_nulls = array( 285: NULL, 286: null, 287: $null_var, 288: ); 289: $counter = 1; 290: /* Loop to check for above null values with var_export() */ 291: echo "\n*** Output for null values ***\n"; 292: foreach($valid_nulls as $null_value) { 293: echo "\nIteration ".$counter."\n"; 294: var_export( $null_value ); 295: echo "\n"; 296: var_export( $null_value, FALSE); 297: echo "\n"; 298: var_dump( var_export( $null_value, true) ); 299: echo "\n"; 300: $counter++; 301: } 302: 303: echo "\n*** Testing error conditions ***\n"; 304: //Zero argument 305: var_export( var_export() ); 306: 307: //arguments more than expected 308: var_export( var_export(TRUE, FALSE, TRUE) ); 309: 310: echo "\n\nDone"; 311: 312: 313: ?> 314: --EXPECTF-- 315: *** Testing var_export() with integer values *** 316: 317: *** Output for integer values *** 318: 319: Iteration 1 320: '0' 321: '0' 322: string(3) "'0'" 323: 324: 325: Iteration 2 326: '1' 327: '1' 328: string(3) "'1'" 329: 330: 331: Iteration 3 332: '-1' 333: '-1' 334: string(4) "'-1'" 335: 336: 337: Iteration 4 338: '-2147483648' 339: '-2147483648' 340: string(13) "'-2147483648'" 341: 342: 343: Iteration 5 344: '-2147483647' 345: '-2147483647' 346: string(13) "'-2147483647'" 347: 348: 349: Iteration 6 350: 2147483647 351: 2147483647 352: string(10) "2147483647" 353: 354: 355: Iteration 7 356: 2147483640 357: 2147483640 358: string(10) "2147483640" 359: 360: 361: Iteration 8 362: 4667 363: 4667 364: string(4) "4667" 365: 366: 367: Iteration 9 368: '0x12ab' 369: '0x12ab' 370: string(8) "'0x12ab'" 371: 372: 373: Iteration 10 374: '0Xfff' 375: '0Xfff' 376: string(7) "'0Xfff'" 377: 378: 379: Iteration 11 380: '0XFA' 381: '0XFA' 382: string(6) "'0XFA'" 383: 384: 385: Iteration 12 386: -2147483648 387: -2147483648 388: string(11) "-2147483648" 389: 390: 391: Iteration 13 392: '0x7fffffff' 393: '0x7fffffff' 394: string(12) "'0x7fffffff'" 395: 396: 397: Iteration 14 398: 2147483647 399: 2147483647 400: string(10) "2147483647" 401: 402: 403: Iteration 15 404: '0123' 405: '0123' 406: string(6) "'0123'" 407: 408: 409: Iteration 16 410: 1 411: 1 412: string(1) "1" 413: 414: 415: Iteration 17 416: -2147483648 417: -2147483648 418: string(11) "-2147483648" 419: 420: 421: Iteration 18 422: 2147483647 423: 2147483647 424: string(10) "2147483647" 425: 426: *** Testing var_export() with valid boolean values *** 427: 428: *** Output for boolean values *** 429: 430: Iteration 1 431: 1 432: 1 433: string(1) "1" 434: 435: 436: Iteration 2 437: true 438: true 439: string(4) "true" 440: 441: 442: Iteration 3 443: true 444: true 445: string(4) "true" 446: 447: 448: Iteration 4 449: 0 450: 0 451: string(1) "0" 452: 453: 454: Iteration 5 455: false 456: false 457: string(5) "false" 458: 459: 460: Iteration 6 461: false 462: false 463: string(5) "false" 464: 465: *** Testing var_export() with valid float values *** 466: 467: *** Output for float values *** 468: 469: Iteration 1 470: 1 471: 1 472: string(1) "1" 473: 474: 475: Iteration 2 476: true 477: true 478: string(4) "true" 479: 480: 481: Iteration 3 482: true 483: true 484: string(4) "true" 485: 486: 487: Iteration 4 488: 0 489: 0 490: string(1) "0" 491: 492: 493: Iteration 5 494: false 495: false 496: string(5) "false" 497: 498: 499: Iteration 6 500: false 501: false 502: string(5) "false" 503: 504: *** Testing var_export() with valid strings *** 505: 506: *** Output for strings *** 507: 508: Iteration 1 509: '' 510: '' 511: string(2) "''" 512: 513: 514: Iteration 2 515: ' ' 516: ' ' 517: string(3) "' '" 518: 519: 520: Iteration 3 521: '' 522: '' 523: string(2) "''" 524: 525: 526: Iteration 4 527: ' ' 528: ' ' 529: string(3) "' '" 530: 531: 532: Iteration 5 533: 'string' 534: 'string' 535: string(8) "'string'" 536: 537: 538: Iteration 6 539: 'string' 540: 'string' 541: string(8) "'string'" 542: 543: 544: Iteration 7 545: 'NULL' 546: 'NULL' 547: string(6) "'NULL'" 548: 549: 550: Iteration 8 551: 'null' 552: 'null' 553: string(6) "'null'" 554: 555: 556: Iteration 9 557: 'FALSE' 558: 'FALSE' 559: string(7) "'FALSE'" 560: 561: 562: Iteration 10 563: 'false' 564: 'false' 565: string(7) "'false'" 566: 567: 568: Iteration 11 569: '' 570: '' 571: string(3) "''" 572: 573: 574: Iteration 12 575: '' . "\0" . '' 576: '' . "\0" . '' 577: string(14) "'' . "\0" . ''" 578: 579: 580: Iteration 13 581: '\\0' 582: '\\0' 583: string(5) "'\\0'" 584: 585: 586: Iteration 14 587: '\\060' 588: '\\060' 589: string(7) "'\\060'" 590: 591: 592: Iteration 15 593: '8' 594: '8' 595: string(3) "'8'" 596: 597: *** Testing var_export() with valid arrays *** 598: 599: *** Output for arrays *** 600: 601: Iteration 1 602: array ( 603: ) 604: array ( 605: ) 606: string(9) "array ( 607: )" 608: 609: 610: Iteration 2 611: array ( 612: 0 => NULL, 613: ) 614: array ( 615: 0 => NULL, 616: ) 617: string(22) "array ( 618: 0 => NULL, 619: )" 620: 621: 622: Iteration 3 623: array ( 624: 0 => NULL, 625: ) 626: array ( 627: 0 => NULL, 628: ) 629: string(22) "array ( 630: 0 => NULL, 631: )" 632: 633: 634: Iteration 4 635: array ( 636: 0 => true, 637: ) 638: array ( 639: 0 => true, 640: ) 641: string(22) "array ( 642: 0 => true, 643: )" 644: 645: 646: Iteration 5 647: array ( 648: 0 => '', 649: ) 650: array ( 651: 0 => '', 652: ) 653: string(20) "array ( 654: 0 => '', 655: )" 656: 657: 658: Iteration 6 659: array ( 660: 0 => '', 661: ) 662: array ( 663: 0 => '', 664: ) 665: string(20) "array ( 666: 0 => '', 667: )" 668: 669: 670: Iteration 7 671: array ( 672: 0 => 673: array ( 674: ), 675: 1 => 676: array ( 677: ), 678: ) 679: array ( 680: 0 => 681: array ( 682: ), 683: 1 => 684: array ( 685: ), 686: ) 687: string(55) "array ( 688: 0 => 689: array ( 690: ), 691: 1 => 692: array ( 693: ), 694: )" 695: 696: 697: Iteration 8 698: array ( 699: 0 => 700: array ( 701: 0 => 1, 702: 1 => 2, 703: ), 704: 1 => 705: array ( 706: 0 => 'a', 707: 1 => 'b', 708: ), 709: ) 710: array ( 711: 0 => 712: array ( 713: 0 => 1, 714: 1 => 2, 715: ), 716: 1 => 717: array ( 718: 0 => 'a', 719: 1 => 'b', 720: ), 721: ) 722: string(107) "array ( 723: 0 => 724: array ( 725: 0 => 1, 726: 1 => 2, 727: ), 728: 1 => 729: array ( 730: 0 => 'a', 731: 1 => 'b', 732: ), 733: )" 734: 735: 736: Iteration 9 737: array ( 738: 1 => 'One', 739: ) 740: array ( 741: 1 => 'One', 742: ) 743: string(23) "array ( 744: 1 => 'One', 745: )" 746: 747: 748: Iteration 10 749: array ( 750: 'test' => 'is_array', 751: ) 752: array ( 753: 'test' => 'is_array', 754: ) 755: string(33) "array ( 756: 'test' => 'is_array', 757: )" 758: 759: 760: Iteration 11 761: array ( 762: 0 => 0, 763: ) 764: array ( 765: 0 => 0, 766: ) 767: string(19) "array ( 768: 0 => 0, 769: )" 770: 771: 772: Iteration 12 773: array ( 774: 0 => -1, 775: ) 776: array ( 777: 0 => -1, 778: ) 779: string(20) "array ( 780: 0 => -1, 781: )" 782: 783: 784: Iteration 13 785: array ( 786: 0 => 10.5, 787: 1 => 5.6, 788: ) 789: array ( 790: 0 => 10.5, 791: 1 => 5.6, 792: ) 793: string(34) "array ( 794: 0 => 10.5, 795: 1 => 5.6, 796: )" 797: 798: 799: Iteration 14 800: array ( 801: 0 => 'string', 802: 1 => 'test', 803: ) 804: array ( 805: 0 => 'string', 806: 1 => 'test', 807: ) 808: string(41) "array ( 809: 0 => 'string', 810: 1 => 'test', 811: )" 812: 813: 814: Iteration 15 815: array ( 816: 0 => 'string', 817: 1 => 'test', 818: ) 819: array ( 820: 0 => 'string', 821: 1 => 'test', 822: ) 823: string(41) "array ( 824: 0 => 'string', 825: 1 => 'test', 826: )" 827: 828: *** Testing var_export() with valid objects *** 829: 830: *** Output for objects *** 831: 832: Iteration 1 833: stdClass::__set_state(array( 834: )) 835: stdClass::__set_state(array( 836: )) 837: string(31) "stdClass::__set_state(array( 838: ))" 839: 840: 841: Iteration 2 842: foo::__set_state(array( 843: )) 844: foo::__set_state(array( 845: )) 846: string(26) "foo::__set_state(array( 847: ))" 848: 849: 850: Iteration 3 851: concreteClass::__set_state(array( 852: )) 853: concreteClass::__set_state(array( 854: )) 855: string(36) "concreteClass::__set_state(array( 856: ))" 857: 858: 859: Iteration 4 860: Value::__set_state(array( 861: 'vars' => 862: array ( 863: ), 864: )) 865: Value::__set_state(array( 866: 'vars' => 867: array ( 868: ), 869: )) 870: string(57) "Value::__set_state(array( 871: 'vars' => 872: array ( 873: ), 874: ))" 875: 876: 877: Iteration 5 878: myClass::__set_state(array( 879: 'foo_object' => 880: foo::__set_state(array( 881: )), 882: 'public_var' => 10, 883: 'public_var1' => 884: foo::__set_state(array( 885: )), 886: 'private_var' => 887: foo::__set_state(array( 888: )), 889: 'protected_var' => NULL, 890: 'proected_var' => 891: foo::__set_state(array( 892: )), 893: )) 894: myClass::__set_state(array( 895: 'foo_object' => 896: foo::__set_state(array( 897: )), 898: 'public_var' => 10, 899: 'public_var1' => 900: foo::__set_state(array( 901: )), 902: 'private_var' => 903: foo::__set_state(array( 904: )), 905: 'protected_var' => NULL, 906: 'proected_var' => 907: foo::__set_state(array( 908: )), 909: )) 910: string(293) "myClass::__set_state(array( 911: 'foo_object' => 912: foo::__set_state(array( 913: )), 914: 'public_var' => 10, 915: 'public_var1' => 916: foo::__set_state(array( 917: )), 918: 'private_var' => 919: foo::__set_state(array( 920: )), 921: 'protected_var' => NULL, 922: 'proected_var' => 923: foo::__set_state(array( 924: )), 925: ))" 926: 927: 928: Iteration 6 929: myClass::__set_state(array( 930: 'foo_object' => 931: foo::__set_state(array( 932: )), 933: 'public_var' => 10, 934: 'public_var1' => 935: foo::__set_state(array( 936: )), 937: 'private_var' => 938: foo::__set_state(array( 939: )), 940: 'protected_var' => NULL, 941: 'proected_var' => 942: foo::__set_state(array( 943: )), 944: )) 945: myClass::__set_state(array( 946: 'foo_object' => 947: foo::__set_state(array( 948: )), 949: 'public_var' => 10, 950: 'public_var1' => 951: foo::__set_state(array( 952: )), 953: 'private_var' => 954: foo::__set_state(array( 955: )), 956: 'protected_var' => NULL, 957: 'proected_var' => 958: foo::__set_state(array( 959: )), 960: )) 961: string(293) "myClass::__set_state(array( 962: 'foo_object' => 963: foo::__set_state(array( 964: )), 965: 'public_var' => 10, 966: 'public_var1' => 967: foo::__set_state(array( 968: )), 969: 'private_var' => 970: foo::__set_state(array( 971: )), 972: 'protected_var' => NULL, 973: 'proected_var' => 974: foo::__set_state(array( 975: )), 976: ))" 977: 978: 979: Iteration 7 980: foo::__set_state(array( 981: )) 982: foo::__set_state(array( 983: )) 984: string(26) "foo::__set_state(array( 985: ))" 986: 987: 988: Iteration 8 989: foo::__set_state(array( 990: )) 991: foo::__set_state(array( 992: )) 993: string(26) "foo::__set_state(array( 994: ))" 995: 996: 997: Iteration 9 998: foo::__set_state(array( 999: )) 1000: foo::__set_state(array( 1001: )) 1002: string(26) "foo::__set_state(array( 1003: ))" 1004: 1005: 1006: Iteration 10 1007: Value::__set_state(array( 1008: 'vars' => 1009: array ( 1010: ), 1011: )) 1012: Value::__set_state(array( 1013: 'vars' => 1014: array ( 1015: ), 1016: )) 1017: string(57) "Value::__set_state(array( 1018: 'vars' => 1019: array ( 1020: ), 1021: ))" 1022: 1023: 1024: Iteration 11 1025: concreteClass::__set_state(array( 1026: )) 1027: concreteClass::__set_state(array( 1028: )) 1029: string(36) "concreteClass::__set_state(array( 1030: ))" 1031: 1032: *** Testing var_export() with valid null values *** 1033: 1034: *** Output for null values *** 1035: 1036: Iteration 1 1037: NULL 1038: NULL 1039: string(4) "NULL" 1040: 1041: 1042: Iteration 2 1043: NULL 1044: NULL 1045: string(4) "NULL" 1046: 1047: 1048: Iteration 3 1049: NULL 1050: NULL 1051: string(4) "NULL" 1052: 1053: 1054: *** Testing error conditions *** 1055: 1056: Warning: var_export() expects at least 1 parameter, 0 given in %s on line %d 1057: NULL 1058: Warning: var_export() expects at most 2 parameters, 3 given in %s on line %d 1059: NULL 1060: 1061: Done