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());
 }
示例#2
0
 /**
  * @param \google\protobuf\compiler\CodeGeneratorRequest $request
  *
  * @return array
  */
 protected function createEntities(CodeGeneratorRequest $request)
 {
     $builder = new EntityBuilder($request);
     $entities = $builder->buildEntities();
     return $entities;
 }
示例#3
0
 /**
  * @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;
 }