public function testEncodeAndDecodeNestedMessageComparingWithProtoc()
{
$proto = 'complex';
$complex = new Complex();
$nested = new Complex\Nested();
$input = 'nested { foo: "FOO" }';
$class = 'ProtobufTest.Protos.Complex';
$nested->setFoo('FOO');
$complex->setNested($nested);
$encoded = $complex->toStream();
$expected = $this->executeProtoc($input, $class, $proto);
$decoded = Complex::fromStream(Stream::wrap($expected));
$this->assertInstanceOf(Complex::CLASS, $decoded);
$this->assertInstanceOf(Complex\Nested::CLASS, $complex->getNested());
$this->assertEquals(bin2hex($encoded), bin2hex($expected));
$this->assertEquals($complex->getNested()->getFoo(), 'FOO');
}