--- /dev/null
+<?php
+
+namespace Doctrine\Tests\ORM\Id;
+
+use Doctrine\ORM\Id\AssignedGenerator;
+
+require_once __DIR__ . '/../../TestInit.php';
+
+/**
+ * AssignedGeneratorTest
+ *
+ * @author robo
+ */
+class AssignedGeneratorTest extends \Doctrine\Tests\OrmTestCase
+{
+ private $_em;
+ private $_assignedGen;
+
+ protected function setUp()
+ {
+ $this->_em = $this->_getTestEntityManager();
+ $this->_assignedGen = new AssignedGenerator;
+ }
+
+ public function testThrowsExceptionIfIdNotAssigned()
+ {
+ try {
+ $entity = new AssignedSingleIdEntity;
+ $this->_assignedGen->generate($this->_em, $entity);
+ $this->fail('Assigned generator did not throw exception even though ID was missing.');
+ } catch (\Doctrine\ORM\ORMException $expected) {}
+
+ try {
+ $entity = new AssignedCompositeIdEntity;
+ $this->_assignedGen->generate($this->_em, $entity);
+ $this->fail('Assigned generator did not throw exception even though ID was missing.');
+ } catch (\Doctrine\ORM\ORMException $expected) {}
+ }
+
+ public function testCorrectIdGeneration()
+ {
+ $entity = new AssignedSingleIdEntity;
+ $entity->myId = 1;
+ $id = $this->_assignedGen->generate($this->_em, $entity);
+ $this->assertEquals(array('myId' => 1), $id);
+
+ $entity = new AssignedCompositeIdEntity;
+ $entity->myId2 = 2;
+ $entity->myId1 = 4;
+ $id = $this->_assignedGen->generate($this->_em, $entity);
+ $this->assertEquals(array('myId1' => 4, 'myId2' => 2), $id);
+ }
+}
+
+/** @Entity */
+class AssignedSingleIdEntity {
+ /** @Id @Column(type="integer") */
+ public $myId;
+}
+
+/** @Entity */
+class AssignedCompositeIdEntity {
+ /** @Id @Column(type="integer") */
+ public $myId1;
+ /** @Id @Column(type="integer") */
+ public $myId2;
+}