public function testReadMessageWithUnknownField() { $message = new PhpBuf_Message_Example_Compatible_NewAPI(); $writer = new PhpBuf_IO_Writer(); $message->a = 150; $message->b = "Old API should ignore this field value"; $message->write($writer); $reader = PhpBuf_IO_Reader::createFromWriter($writer); $message = new PhpBuf_Message_Example_Compatible_OldAPI(); $message->read($reader, false); // disable the strict reading mode $this->assertEquals($message->a, 150); }
public function testNestedMessages() { $messageTest1 = new PhpBuf_Message_Example_Test1(); $messageTest1->a = 150; $message = new PhpBuf_Message_Example_Test3(); $message->c = $messageTest1; $writer = new PhpBuf_IO_Writer(); $message->write($writer); $reader = PhpBuf_IO_Reader::createFromWriter($writer); $message = new PhpBuf_Message_Example_Test3(); $message->read($reader); $this->assertType("PhpBuf_Message_Example_Test1", $message->c); $this->assertEquals(150, $message->c->a); $message->c->a = 130; $writer = new PhpBuf_IO_Writer(); $message->write($writer); $this->assertEquals("1a 03 08 82 01", $this->bytesToHexString($writer->getData())); }
public function testMessageWriterReader() { $messagesArray = array(); $namesArray = array(); $main = new PhpBuf_Message_ExampleRepeat(); $writer = new PhpBuf_IO_Writer(); for ($i = 0; $i < 5; $i++) { $nested = new PhpBuf_Message_Example(); $nested->id = $i; $nested->balance = -12345 + $i * 10; $nested->isAdmin = false; $nested->status = "deleted"; $nested->name = "name for {$i}"; $nested->bytes = "Some bytes for {$i}"; $messagesArray[] = $nested; } for ($i = 0; $i < 3; $i++) { $namesArray[] = "name # {$i}"; } $main->messages = $messagesArray; $main->name = $namesArray; $main->write($writer); $reader = PhpBuf_IO_Reader::createFromWriter($writer); $main = new PhpBuf_Message_ExampleRepeat(); $main->read($reader); /** * Проверка */ //print_r($main); $this->assertEquals("0a 28 08 00 10 f1 c0 01 18 00 20 02 2a 0a 6e 61 6d 65 20 66 6f 72 20 30 32 10 53 6f 6d 65 20 62 79 74 65 73 20 66 6f 72 20 30 0a 28 08 01 10 dd c0 01 18 00 20 02 2a 0a 6e 61 6d 65 20 66 6f 72 20 31 32 10 53 6f 6d 65 20 62 79 74 65 73 20 66 6f 72 20 31 0a 28 08 02 10 c9 c0 01 18 00 20 02 2a 0a 6e 61 6d 65 20 66 6f 72 20 32 32 10 53 6f 6d 65 20 62 79 74 65 73 20 66 6f 72 20 32 0a 28 08 03 10 b5 c0 01 18 00 20 02 2a 0a 6e 61 6d 65 20 66 6f 72 20 33 32 10 53 6f 6d 65 20 62 79 74 65 73 20 66 6f 72 20 33 0a 28 08 04 10 a1 c0 01 18 00 20 02 2a 0a 6e 61 6d 65 20 66 6f 72 20 34 32 10 53 6f 6d 65 20 62 79 74 65 73 20 66 6f 72 20 34 12 08 6e 61 6d 65 20 23 20 30 12 08 6e 61 6d 65 20 23 20 31 12 08 6e 61 6d 65 20 23 20 32", $this->bytesToHexString($writer->getData())); $this->assertEquals(5, count($main->messages)); $this->assertEquals(3, count($main->name)); for ($i = 0; $i < 3; $i++) { $this->assertEquals("name # {$i}", $main->name[$i]); } }
echo ord($byte) . "\n"; } $reader = PhpBuf_IO_Reader::createFromWriter($writer); $message = new PhpBuf_Message_Example(); $message->read($reader); echo "id: " . $message->id . "\n"; echo "balance: " . $message->balance . "\n"; if ($message->isAdmin === true) { echo "isAdmin: true\n"; } echo "status: " . $message->status . "\n"; echo "name: " . $message->name . "\n"; $messagesArray = array(); $main = new PhpBuf_Message_ExampleRepeat(); $writer = new PhpBuf_IO_Writer(); for ($i = 0; $i < 5; $i++) { $nested = new PhpBuf_Message_Example(); $nested->id = $i; $nested->balance = -12345 + $i * 10; $nested->isAdmin = false; $nested->status = "deleted"; $nested->name = "name for {$i}"; $nested->bytes = "Some bytes for {$i}"; $messagesArray[] = $nested; } $main->messages = $messagesArray; $main->write($writer); $reader = PhpBuf_IO_Reader::createFromWriter($writer); $main = new PhpBuf_Message_ExampleRepeat(); $main->read($reader); print_r($main);
public function testReaderGet() { $reader = new PhpBuf_IO_Reader("String for test"); $this->assertEquals("S", $reader->getByte()); $this->assertEquals(1, $reader->getPosition()); $this->assertEquals("t", $reader->getByte()); $this->assertEquals(2, $reader->getPosition()); $this->assertEquals("ring", $reader->getBytes(4)); $this->assertEquals(6, $reader->getPosition()); $reader->setPosition(7); $this->assertEquals(7, $reader->getPosition()); $this->assertEquals("for", $reader->getBytes(3)); $this->assertEquals(10, $reader->getPosition()); $reader->redo(); $this->assertEquals(7, $reader->getPosition()); $this->assertEquals("for", $reader->getBytes(3)); $this->assertEquals(10, $reader->getPosition()); }