Annotation of embedaddon/php/ext/standard/tests/general_functions/strval.phpt, revision 1.1.1.1

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>