Annotation of embedaddon/php/ext/json/tests/serialize.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: json_encode() Serialization tests
                      3: --SKIPIF--
                      4: <?php if (!extension_loaded("json")) print "skip"; ?>
                      5: --FILE--
                      6: <?php
                      7: 
                      8: class NonSerializingTest
                      9: {
                     10:        public $data;
                     11: 
                     12:        public function __construct($data)
                     13:        {
                     14:                $this->data = $data;
                     15:        }
                     16: }
                     17: 
                     18: class SerializingTest extends NonSerializingTest implements JsonSerializable
                     19: {
                     20:        public function jsonSerialize()
                     21:        {
                     22:                return $this->data;
                     23:        }
                     24: }
                     25: 
                     26: class ValueSerializingTest extends SerializingTest
                     27: {
                     28:        public function jsonSerialize()
                     29:        {
                     30:                return array_values(is_array($this->data) ? $this->data : get_object_vars($this->data));
                     31:        }
                     32: }
                     33: 
                     34: class SelfSerializingTest extends SerializingTest
                     35: {
                     36:        public function jsonSerialize()
                     37:        {
                     38:                return $this;
                     39:        }
                     40: }
                     41: 
                     42: $adata = array(
                     43:        'str'   => 'foo',
                     44:        'int'   => 1,
                     45:        'float' => 2.3,
                     46:        'bool'  => false,
                     47:        'nil'   => null,
                     48:        'arr'   => array(1,2,3),
                     49:        'obj'   => new StdClass,
                     50: );
                     51: 
                     52: $ndata = array_values($adata);
                     53: 
                     54: $odata = (object)$adata;
                     55: 
                     56: foreach(array('NonSerializingTest','SerializingTest','ValueSerializingTest','SelfSerializingTest') as $class) {
                     57:        echo "==$class==\n";
                     58:        echo json_encode(new $class($adata)), "\n";
                     59:        echo json_encode(new $class($ndata)), "\n";
                     60:        echo json_encode(new $class($odata)), "\n";
                     61: }
                     62: --EXPECT--
                     63: ==NonSerializingTest==
                     64: {"data":{"str":"foo","int":1,"float":2.3,"bool":false,"nil":null,"arr":[1,2,3],"obj":{}}}
                     65: {"data":["foo",1,2.3,false,null,[1,2,3],{}]}
                     66: {"data":{"str":"foo","int":1,"float":2.3,"bool":false,"nil":null,"arr":[1,2,3],"obj":{}}}
                     67: ==SerializingTest==
                     68: {"str":"foo","int":1,"float":2.3,"bool":false,"nil":null,"arr":[1,2,3],"obj":{}}
                     69: ["foo",1,2.3,false,null,[1,2,3],{}]
                     70: {"str":"foo","int":1,"float":2.3,"bool":false,"nil":null,"arr":[1,2,3],"obj":{}}
                     71: ==ValueSerializingTest==
                     72: ["foo",1,2.3,false,null,[1,2,3],{}]
                     73: ["foo",1,2.3,false,null,[1,2,3],{}]
                     74: ["foo",1,2.3,false,null,[1,2,3],{}]
                     75: ==SelfSerializingTest==
                     76: {"data":{"str":"foo","int":1,"float":2.3,"bool":false,"nil":null,"arr":[1,2,3],"obj":{}}}
                     77: {"data":["foo",1,2.3,false,null,[1,2,3],{}]}
                     78: {"data":{"str":"foo","int":1,"float":2.3,"bool":false,"nil":null,"arr":[1,2,3],"obj":{}}}
                     79: 
                     80: 

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