public function testBuildEntities() { $descriptor1 = $this->createFileDescriptorProto('simple.proto', 'Protos', ['messages' => [['name' => 'Simple', 'fields' => []]]]); $descriptor2 = $this->createFileDescriptorProto('include.proto', 'Protos', ['messages' => [['name' => 'Include', 'fields' => []]]]); $request = new CodeGeneratorRequest(); $request->addProtoFile($descriptor1); $request->addProtoFile($descriptor2); $request->addFileToGenerate($descriptor1->getName()); $builder = new EntityBuilder($request); $entities = $builder->buildEntities(); $this->assertCount(2, $entities); $this->assertArrayhasKey('Protos.Simple', $entities); $this->assertArrayhasKey('Protos.Include', $entities); $this->assertInstanceOf(Entity::CLASS, $entities['Protos.Simple']); $this->assertInstanceOf(Entity::CLASS, $entities['Protos.Include']); $this->assertEquals('Protos.Simple', $entities['Protos.Simple']->getClass()); $this->assertEquals('Protos.Include', $entities['Protos.Include']->getClass()); $this->assertEquals(Entity::TYPE_MESSAGE, $entities['Protos.Simple']->getType()); $this->assertEquals(Entity::TYPE_MESSAGE, $entities['Protos.Include']->getType()); $this->assertTrue($entities['Protos.Simple']->isFileToGenerate()); $this->assertFalse($entities['Protos.Include']->isFileToGenerate()); }
/** * @param \google\protobuf\compiler\CodeGeneratorRequest $request * * @return array */ protected function createEntities(CodeGeneratorRequest $request) { $builder = new EntityBuilder($request); $entities = $builder->buildEntities(); return $entities; }
/** * @param array $descriptors * @param array $options * @param Configuration $Configuration * * @return \Protobuf\Compiler\Context */ protected function createContext(array $descriptors, array $options = [], Configuration $config = null) { $cfg = $config ?: $this->config; $opts = Options::fromArray($options); $request = new CodeGeneratorRequest(); foreach ($descriptors as $item) { if (is_array($item)) { $name = $item['name']; $values = $item['values']; $package = $item['package']; $item = $this->createFileDescriptorProto($name, $package, $values); } $request->addProtoFile($item); $request->addFileToGenerate($item->getName()); } $builder = new EntityBuilder($request); $entities = $builder->buildEntities(); $context = new Context($entities, $opts, $cfg); return $context; }