public function testAddMergeExtensions() { $animal1 = new Cat(); $animal2 = new Cat(); $callback = function () { }; $extensions = new ExtensionFieldMap(Animal::CLASS); $extension = new ExtensionField(Animal::CLASS, 'animal', 100, $callback, $callback, $callback); $animal1->setDeclawed(true); $extensions->add($extension, $animal1); $this->assertSame($animal1, $extensions->offsetGet($extension)); $animal2->setDeclawed(false); $extensions->add($extension, $animal2); $this->assertTrue($animal2->getDeclawed()); $this->assertSame($animal2, $extensions->offsetGet($extension)); }
public function testWriteAnimalExtensionMessage() { $cat = new Extension\Cat(); $animal = new Extension\Animal(); $cat->setDeclawed(true); $animal->setType(Extension\Animal\Type::CAT()); $animal->extensions()->put(Extension\Cat::animal(), $cat); $expected = $this->getProtoContent('extension-animal-cat.bin'); $actual = $animal->toStream(); $this->assertEquals($expected, (string) $actual); $this->assertSerializedMessageSize($expected, $animal); }