예제 #1
0
 /**
  * @group DDC-3304
  */
 public function testGeneratedImmutableEmbeddablesClass()
 {
     $this->_generator->setEmbeddablesImmutable(true);
     $embeddedMetadata = $this->generateTestEmbeddableFixture();
     $metadata = $this->generateIsbnEmbeddableFixture(array('test' => $embeddedMetadata));
     $this->loadEntityClass($embeddedMetadata);
     $this->loadEntityClass($metadata);
     $this->assertTrue(class_exists($metadata->name), "Class does not exist.");
     $this->assertTrue(method_exists($metadata->name, '__construct'), "EntityGeneratorIsbn::__construct missing.");
     $this->assertTrue(method_exists($metadata->name, 'getPrefix'), "EntityGeneratorIsbn::getPrefix() missing.");
     $this->assertFalse(method_exists($metadata->name, 'setPrefix'), "EntityGeneratorIsbn::setPrefix() present.");
     $this->assertTrue(method_exists($metadata->name, 'getGroupNumber'), "EntityGeneratorIsbn::getGroupNumber() missing.");
     $this->assertFalse(method_exists($metadata->name, 'setGroupNumber'), "EntityGeneratorIsbn::setGroupNumber() present.");
     $this->assertTrue(method_exists($metadata->name, 'getPublisherNumber'), "EntityGeneratorIsbn::getPublisherNumber() missing.");
     $this->assertFalse(method_exists($metadata->name, 'setPublisherNumber'), "EntityGeneratorIsbn::setPublisherNumber() present.");
     $this->assertTrue(method_exists($metadata->name, 'getTitleNumber'), "EntityGeneratorIsbn::getTitleNumber() missing.");
     $this->assertFalse(method_exists($metadata->name, 'setTitleNumber'), "EntityGeneratorIsbn::setTitleNumber() present.");
     $this->assertTrue(method_exists($metadata->name, 'getCheckDigit'), "EntityGeneratorIsbn::getCheckDigit() missing.");
     $this->assertFalse(method_exists($metadata->name, 'setCheckDigit'), "EntityGeneratorIsbn::setCheckDigit() present.");
     $this->assertTrue(method_exists($metadata->name, 'getTest'), "EntityGeneratorIsbn::getTest() missing.");
     $this->assertFalse(method_exists($metadata->name, 'setTest'), "EntityGeneratorIsbn::setTest() present.");
     $test = new $embeddedMetadata->name(1, new \DateTime());
     $isbn = new $metadata->name($test, 978, 3, 12, 732320, 83);
     $reflMethod = new \ReflectionMethod($isbn, '__construct');
     $reflParameters = $reflMethod->getParameters();
     $this->assertCount(6, $reflParameters);
     $this->assertSame($embeddedMetadata->name, $reflParameters[0]->getClass()->name);
     $this->assertSame('test', $reflParameters[0]->getName());
     $this->assertFalse($reflParameters[0]->isOptional());
     $this->assertSame('prefix', $reflParameters[1]->getName());
     $this->assertFalse($reflParameters[1]->isOptional());
     $this->assertSame('groupNumber', $reflParameters[2]->getName());
     $this->assertFalse($reflParameters[2]->isOptional());
     $this->assertSame('publisherNumber', $reflParameters[3]->getName());
     $this->assertFalse($reflParameters[3]->isOptional());
     $this->assertSame('titleNumber', $reflParameters[4]->getName());
     $this->assertFalse($reflParameters[4]->isOptional());
     $this->assertSame('checkDigit', $reflParameters[5]->getName());
     $this->assertFalse($reflParameters[5]->isOptional());
     $reflMethod = new \ReflectionMethod($test, '__construct');
     $reflParameters = $reflMethod->getParameters();
     $this->assertCount(4, $reflParameters);
     $this->assertSame('field1', $reflParameters[0]->getName());
     $this->assertFalse($reflParameters[0]->isOptional());
     $this->assertSame('DateTime', $reflParameters[1]->getClass()->name);
     $this->assertSame('field3', $reflParameters[1]->getName());
     $this->assertFalse($reflParameters[1]->isOptional());
     $this->assertSame('field2', $reflParameters[2]->getName());
     $this->assertTrue($reflParameters[2]->isOptional());
     $this->assertSame('DateTime', $reflParameters[3]->getClass()->name);
     $this->assertSame('field4', $reflParameters[3]->getName());
     $this->assertTrue($reflParameters[3]->isOptional());
 }