function testUnserializeComplexMessage()
 {
     $xml = new SimpleXMLElement('<root></root>');
     $p = $xml->addChild('person');
     $p->addChild('name', 'John Doe');
     $p->addChild('id', 2051);
     $p->addChild('email', '*****@*****.**');
     $p = $p->addChild('phone');
     $p->addChild('number', '1231231212');
     $p->addChild('type', 1);
     $p = $xml->addChild('person');
     $p->addChild('name', 'Iván Montes');
     $p->addChild('id', 23);
     $p->addChild('email', '*****@*****.**');
     $p = $p->addChild('phone');
     $p->addChild('number', '3493123123');
     $p->addChild('type', 2);
     $complex = Protobuf::decode('Tests\\AddressBook', $xml->asXML());
     $this->assertEquals(count($complex->person), 2);
     $this->assertEquals($complex->getPerson(0)->name, 'John Doe');
     $this->assertEquals($complex->getPerson(1)->name, 'Iván Montes');
     $this->assertEquals($complex->getPerson(1)->getPhone(0)->number, '3493123123');
 }
 function testUnserializeComplexMessage()
 {
     $json = '{
         "1":[
             {
                 "1":"John Doe",
                 "2":2051,
                 "3":"*****@*****.**",
                 "4":[
                     {"1":"1231231212","2":1},
                     {"1":"55512321312","2":0}
                 ]
             },
             {
                 "1":"Iv\\u00e1n Montes",
                 "2":23,
                 "3":"*****@*****.**",
                 "4":[{"1":"3493123123","2":2}]
             }
         ]
     }';
     $json = preg_replace('/\\n\\s*/', '', $json);
     $complex = Protobuf::decode('Tests\\AddressBook', $json);
     $this->assertEquals(count($complex->person), 2);
     $this->assertEquals($complex->getPerson(0)->name, 'John Doe');
     $this->assertEquals($complex->getPerson(1)->name, 'Iván Montes');
     $this->assertEquals($complex->getPerson(0)->getPhone(1)->number, '55512321312');
 }
 /**
  * @expectedException BadMethodCallException
  */
 function testUnserializeNotImplemented()
 {
     $txt = "foo: \"FOO\"\nbar: \"BAR\"\n";
     $simple = Protobuf::decode('Tests\\Simple', $txt);
 }