function testSerializeComplexMessage() { $book = new Tests\AddressBook(); $person = new Tests\Person(); $person->name = 'John Doe'; $person->id = 2051; $person->email = '*****@*****.**'; $phone = new Tests\Person\PhoneNumber(); $phone->number = '1231231212'; $phone->type = Tests\Person\PhoneType::HOME; $person->addPhone($phone); $phone = new Tests\Person\PhoneNumber(); $phone->number = '55512321312'; $phone->type = Tests\Person\PhoneType::MOBILE; $person->addPhone($phone); $book->addPerson($person); $person = new Tests\Person(); $person->name = 'Iván Montes'; $person->id = 23; $person->email = '*****@*****.**'; $phone = new Tests\Person\PhoneNumber(); $phone->number = '3493123123'; $phone->type = Tests\Person\PhoneType::WORK; $person->addPhone($phone); $book->addPerson($person); $xml = Protobuf::encode($book); $xml = simplexml_load_string($xml); $this->assertEquals($xml->person[0]->name, "John Doe"); $this->assertEquals($xml->person[0]->phone[1]->number, "55512321312"); $this->assertEquals((int) $xml->person[1]->id, 23); $this->assertEquals((int) $xml->person[1]->phone[0]->type, 2); }
function testSerializeComplexMessage() { $book = new Tests\AddressBook(); $person = new Tests\Person(); $person->name = 'John Doe'; $person->id = 2051; $person->email = '*****@*****.**'; $phone = new Tests\Person\PhoneNumber(); $phone->number = '1231231212'; $phone->type = Tests\Person\PhoneType::HOME; $person->addPhone($phone); $phone = new Tests\Person\PhoneNumber(); $phone->number = '55512321312'; $phone->type = Tests\Person\PhoneType::MOBILE; $person->addPhone($phone); $book->addPerson($person); $person = new Tests\Person(); $person->name = 'Iván Montes'; $person->id = 23; $person->email = '*****@*****.**'; $phone = new Tests\Person\PhoneNumber(); $phone->number = '3493123123'; $phone->type = Tests\Person\PhoneType::WORK; $person->addPhone($phone); $book->addPerson($person); $txt = Protobuf::encode($book); $txt = str_replace(' ', '', $txt); $txt = trim($txt); $expected = ' person { name: "John Doe" id: 2051 email: "*****@*****.**" phone { number: "1231231212" type: 1 } phone { number: "55512321312" type: 0 } } person { name: "Iv\\u00e1n Montes" id: 23 email: "*****@*****.**" phone { number: "3493123123" type: 2 } } '; $expected = str_replace(' ', '', $expected); $expected = trim($expected); $this->assertEquals($txt, $expected); }
function testSerializeComplexMessage() { $book = new Tests\AddressBook(); $person = new Tests\Person(); $person->name = 'John Doe'; $person->id = 2051; $person->email = '*****@*****.**'; $phone = new Tests\Person\PhoneNumber(); $phone->number = '1231231212'; $phone->type = Tests\Person\PhoneType::HOME; $person->addPhone($phone); $phone = new Tests\Person\PhoneNumber(); $phone->number = '55512321312'; $phone->type = Tests\Person\PhoneType::MOBILE; $person->addPhone($phone); $book->addPerson($person); $person = new Tests\Person(); $person->name = 'Iván Montes'; $person->id = 23; $person->email = '*****@*****.**'; $phone = new Tests\Person\PhoneNumber(); $phone->number = '3493123123'; $phone->type = Tests\Person\PhoneType::WORK; $person->addPhone($phone); $book->addPerson($person); $json = Protobuf::encode($book); $expected = '[ "1", [ [ "1234", "John Doe", 2051, "*****@*****.**", [ ["12","1231231212",1], ["12","55512321312",0] ] ], [ "1234", "Iv\\u00e1n Montes", 23, "*****@*****.**", [ ["12","3493123123",2] ] ] ] ]'; $expected = preg_replace('/\\n\\s*/', '', $expected); $this->assertEquals($json, $expected); }