Annotation of embedaddon/php/ext/standard/tests/serialize/serialization_miscTypes_001.phpt, revision 1.1.1.2

1.1       misho       1: --TEST--
                      2: Test serialize() & unserialize() functions: many types
1.1.1.2 ! misho       3: --INI--
        !             4: serialize_precision=17
1.1       misho       5: --SKIPIF--
                      6: <?php
                      7: if (PHP_INT_SIZE != 4) {
                      8:            die("skip this test is for 32bit platform only");
                      9: }
                     10: ?>
                     11: --FILE--
                     12: <?php 
                     13: /* Prototype  : proto string serialize(mixed variable)
                     14:  * Description: Returns a string representation of variable (which can later be unserialized) 
                     15:  * Source code: ext/standard/var.c
                     16:  * Alias to functions: 
                     17:  */
                     18: /* Prototype  : proto mixed unserialize(string variable_representation)
                     19:  * Description: Takes a string representation of variable and recreates it 
                     20:  * Source code: ext/standard/var.c
                     21:  * Alias to functions: 
                     22:  */
                     23: 
                     24: 
                     25: echo "--- Testing Various Types ---\n";
                     26: 
                     27: /* unset variable */
                     28: $unset_var = 10;
                     29: unset($unset_var);
                     30: /* array declaration */
                     31: $arr_var = array(0, 1, -2, 3.333333, "a", array(), array(NULL));
                     32: 
                     33: $Variation_arr = array( 
                     34:    /* Integers */
                     35:    2147483647,
                     36:    -2147483647,
                     37:    2147483648,
                     38:    -2147483648,
                     39: 
                     40:    0xFF00123,  // hex integers
                     41:    -0xFF00123,
                     42:    0x7FFFFFFF,
                     43:    -0x7FFFFFFF, 
                     44:    0x80000000,
                     45:    -0x80000000,
                     46: 
                     47:    01234567,  // octal integers
                     48:    -01234567,
                     49: 
                     50:    /* arrays */
                     51:    array(),  // zero elements
                     52:    array(1, 2, 3, 12345666, -2344),
                     53:    array(0, 1, 2, 3.333, -4, -5.555, TRUE, FALSE, NULL, "", '', " ", 
                     54:          array(), array(1,2,array()), "string", new stdclass
                     55:         ),
                     56:    &$arr_var,  // Reference to an array
                     57:  
                     58:   /* nulls */
                     59:    NULL,
                     60:    null,
                     61: 
                     62:   /* strings */
                     63:    "",
                     64:    '',
                     65:    " ",
                     66:    ' ',
                     67:    "a",
                     68:    "string",
                     69:    'string',
                     70:    "hello\0",
                     71:    'hello\0',
                     72:    "123",
                     73:    '123',
                     74:    '\t',
                     75:    "\t",
                     76: 
                     77:    /* booleans */
                     78:    TRUE,
                     79:    true,
                     80:    FALSE,
                     81:    false,
                     82: 
                     83:    /* Mixed types */
                     84:    @TRUE123,
                     85:    "123string",
                     86:    "string123",
                     87:    "NULLstring",
                     88: 
                     89:    /* unset/undefined  vars */
                     90:    @$unset_var,
                     91:    @$undefined_var,
                     92: );
                     93: 
                     94: /* Loop through to test each element in the above array */
                     95: for( $i = 0; $i < count($Variation_arr); $i++ ) {
                     96: 
                     97:   echo "\n-- Iteration $i --\n";
                     98:   echo "after serialization => "; 
                     99:   $serialize_data = serialize($Variation_arr[$i]);
                    100:   var_dump( $serialize_data );
                    101: 
                    102:   echo "after unserialization => "; 
                    103:   $unserialize_data = unserialize($serialize_data);
                    104:   var_dump( $unserialize_data );
                    105: }
                    106: 
                    107: echo "\nDone";
                    108: ?>
                    109: --EXPECTF--
                    110: --- Testing Various Types ---
                    111: 
                    112: -- Iteration 0 --
                    113: after serialization => string(13) "i:2147483647;"
                    114: after unserialization => int(2147483647)
                    115: 
                    116: -- Iteration 1 --
                    117: after serialization => string(14) "i:-2147483647;"
                    118: after unserialization => int(-2147483647)
                    119: 
                    120: -- Iteration 2 --
                    121: after serialization => string(13) "d:2147483648;"
                    122: after unserialization => float(2147483648)
                    123: 
                    124: -- Iteration 3 --
                    125: after serialization => string(14) "d:-2147483648;"
                    126: after unserialization => float(-2147483648)
                    127: 
                    128: -- Iteration 4 --
                    129: after serialization => string(12) "i:267387171;"
                    130: after unserialization => int(267387171)
                    131: 
                    132: -- Iteration 5 --
                    133: after serialization => string(13) "i:-267387171;"
                    134: after unserialization => int(-267387171)
                    135: 
                    136: -- Iteration 6 --
                    137: after serialization => string(13) "i:2147483647;"
                    138: after unserialization => int(2147483647)
                    139: 
                    140: -- Iteration 7 --
                    141: after serialization => string(14) "i:-2147483647;"
                    142: after unserialization => int(-2147483647)
                    143: 
                    144: -- Iteration 8 --
                    145: after serialization => string(13) "d:2147483648;"
                    146: after unserialization => float(2147483648)
                    147: 
                    148: -- Iteration 9 --
                    149: after serialization => string(14) "d:-2147483648;"
                    150: after unserialization => float(-2147483648)
                    151: 
                    152: -- Iteration 10 --
                    153: after serialization => string(9) "i:342391;"
                    154: after unserialization => int(342391)
                    155: 
                    156: -- Iteration 11 --
                    157: after serialization => string(10) "i:-342391;"
                    158: after unserialization => int(-342391)
                    159: 
                    160: -- Iteration 12 --
                    161: after serialization => string(6) "a:0:{}"
                    162: after unserialization => array(0) {
                    163: }
                    164: 
                    165: -- Iteration 13 --
                    166: after serialization => string(57) "a:5:{i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:12345666;i:4;i:-2344;}"
                    167: after unserialization => array(5) {
                    168:   [0]=>
                    169:   int(1)
                    170:   [1]=>
                    171:   int(2)
                    172:   [2]=>
                    173:   int(3)
                    174:   [3]=>
                    175:   int(12345666)
                    176:   [4]=>
                    177:   int(-2344)
                    178: }
                    179: 
                    180: -- Iteration 14 --
                    181: after serialization => string(239) "a:16:{i:0;i:0;i:1;i:1;i:2;i:2;i:3;d:3.3330000000000002;i:4;i:-4;i:5;d:-5.5549999999999997;i:6;b:1;i:7;b:0;i:8;N;i:9;s:0:"";i:10;s:0:"";i:11;s:1:" ";i:12;a:0:{}i:13;a:3:{i:0;i:1;i:1;i:2;i:2;a:0:{}}i:14;s:6:"string";i:15;O:8:"stdClass":0:{}}"
                    182: after unserialization => array(16) {
                    183:   [0]=>
                    184:   int(0)
                    185:   [1]=>
                    186:   int(1)
                    187:   [2]=>
                    188:   int(2)
                    189:   [3]=>
                    190:   float(3.333)
                    191:   [4]=>
                    192:   int(-4)
                    193:   [5]=>
                    194:   float(-5.555)
                    195:   [6]=>
                    196:   bool(true)
                    197:   [7]=>
                    198:   bool(false)
                    199:   [8]=>
                    200:   NULL
                    201:   [9]=>
                    202:   string(0) ""
                    203:   [10]=>
                    204:   string(0) ""
                    205:   [11]=>
                    206:   string(1) " "
                    207:   [12]=>
                    208:   array(0) {
                    209:   }
                    210:   [13]=>
                    211:   array(3) {
                    212:     [0]=>
                    213:     int(1)
                    214:     [1]=>
                    215:     int(2)
                    216:     [2]=>
                    217:     array(0) {
                    218:     }
                    219:   }
                    220:   [14]=>
                    221:   string(6) "string"
                    222:   [15]=>
                    223:   object(stdClass)#2 (0) {
                    224:   }
                    225: }
                    226: 
                    227: -- Iteration 15 --
                    228: after serialization => string(94) "a:7:{i:0;i:0;i:1;i:1;i:2;i:-2;i:3;d:3.3333330000000001;i:4;s:1:"a";i:5;a:0:{}i:6;a:1:{i:0;N;}}"
                    229: after unserialization => array(7) {
                    230:   [0]=>
                    231:   int(0)
                    232:   [1]=>
                    233:   int(1)
                    234:   [2]=>
                    235:   int(-2)
                    236:   [3]=>
                    237:   float(3.333333)
                    238:   [4]=>
                    239:   string(1) "a"
                    240:   [5]=>
                    241:   array(0) {
                    242:   }
                    243:   [6]=>
                    244:   array(1) {
                    245:     [0]=>
                    246:     NULL
                    247:   }
                    248: }
                    249: 
                    250: -- Iteration 16 --
                    251: after serialization => string(2) "N;"
                    252: after unserialization => NULL
                    253: 
                    254: -- Iteration 17 --
                    255: after serialization => string(2) "N;"
                    256: after unserialization => NULL
                    257: 
                    258: -- Iteration 18 --
                    259: after serialization => string(7) "s:0:"";"
                    260: after unserialization => string(0) ""
                    261: 
                    262: -- Iteration 19 --
                    263: after serialization => string(7) "s:0:"";"
                    264: after unserialization => string(0) ""
                    265: 
                    266: -- Iteration 20 --
                    267: after serialization => string(8) "s:1:" ";"
                    268: after unserialization => string(1) " "
                    269: 
                    270: -- Iteration 21 --
                    271: after serialization => string(8) "s:1:" ";"
                    272: after unserialization => string(1) " "
                    273: 
                    274: -- Iteration 22 --
                    275: after serialization => string(8) "s:1:"a";"
                    276: after unserialization => string(1) "a"
                    277: 
                    278: -- Iteration 23 --
                    279: after serialization => string(13) "s:6:"string";"
                    280: after unserialization => string(6) "string"
                    281: 
                    282: -- Iteration 24 --
                    283: after serialization => string(13) "s:6:"string";"
                    284: after unserialization => string(6) "string"
                    285: 
                    286: -- Iteration 25 --
                    287: after serialization => string(13) "s:6:"hello";"
                    288: after unserialization => string(6) "hello"
                    289: 
                    290: -- Iteration 26 --
                    291: after serialization => string(14) "s:7:"hello\0";"
                    292: after unserialization => string(7) "hello\0"
                    293: 
                    294: -- Iteration 27 --
                    295: after serialization => string(10) "s:3:"123";"
                    296: after unserialization => string(3) "123"
                    297: 
                    298: -- Iteration 28 --
                    299: after serialization => string(10) "s:3:"123";"
                    300: after unserialization => string(3) "123"
                    301: 
                    302: -- Iteration 29 --
                    303: after serialization => string(9) "s:2:"\t";"
                    304: after unserialization => string(2) "\t"
                    305: 
                    306: -- Iteration 30 --
                    307: after serialization => string(8) "s:1:"        ";"
                    308: after unserialization => string(1) "   "
                    309: 
                    310: -- Iteration 31 --
                    311: after serialization => string(4) "b:1;"
                    312: after unserialization => bool(true)
                    313: 
                    314: -- Iteration 32 --
                    315: after serialization => string(4) "b:1;"
                    316: after unserialization => bool(true)
                    317: 
                    318: -- Iteration 33 --
                    319: after serialization => string(4) "b:0;"
                    320: after unserialization => bool(false)
                    321: 
                    322: -- Iteration 34 --
                    323: after serialization => string(4) "b:0;"
                    324: after unserialization => bool(false)
                    325: 
                    326: -- Iteration 35 --
                    327: after serialization => string(14) "s:7:"TRUE123";"
                    328: after unserialization => string(7) "TRUE123"
                    329: 
                    330: -- Iteration 36 --
                    331: after serialization => string(16) "s:9:"123string";"
                    332: after unserialization => string(9) "123string"
                    333: 
                    334: -- Iteration 37 --
                    335: after serialization => string(16) "s:9:"string123";"
                    336: after unserialization => string(9) "string123"
                    337: 
                    338: -- Iteration 38 --
                    339: after serialization => string(18) "s:10:"NULLstring";"
                    340: after unserialization => string(10) "NULLstring"
                    341: 
                    342: -- Iteration 39 --
                    343: after serialization => string(2) "N;"
                    344: after unserialization => NULL
                    345: 
                    346: -- Iteration 40 --
                    347: after serialization => string(2) "N;"
                    348: after unserialization => NULL
                    349: 
                    350: Done

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