コード例 #1
0
 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);
 }
コード例 #2
0
 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);
 }
コード例 #3
0
 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);
 }