public function persistRelatedEmployees()
 {
     $this->salesPerson = new \Doctrine\Tests\Models\Company\CompanyEmployee();
     $this->salesPerson->setName('Poor Sales Guy');
     $this->salesPerson->setDepartment('Sales');
     $this->salesPerson->setSalary(100);
     $engineer1 = new \Doctrine\Tests\Models\Company\CompanyEmployee();
     $engineer1->setName('Roman B.');
     $engineer1->setDepartment('IT');
     $engineer1->setSalary(100);
     $this->engineers[] = $engineer1;
     $engineer2 = new \Doctrine\Tests\Models\Company\CompanyEmployee();
     $engineer2->setName('Jonathan W.');
     $engineer2->setDepartment('IT');
     $engineer2->setSalary(100);
     $this->engineers[] = $engineer2;
     $engineer3 = new \Doctrine\Tests\Models\Company\CompanyEmployee();
     $engineer3->setName('Benjamin E.');
     $engineer3->setDepartment('IT');
     $engineer3->setSalary(100);
     $this->engineers[] = $engineer3;
     $engineer4 = new \Doctrine\Tests\Models\Company\CompanyEmployee();
     $engineer4->setName('Guilherme B.');
     $engineer4->setDepartment('IT');
     $engineer4->setSalary(100);
     $this->engineers[] = $engineer4;
     $this->_em->persist($this->salesPerson);
     $this->_em->persist($engineer1);
     $this->_em->persist($engineer2);
     $this->_em->persist($engineer3);
     $this->_em->persist($engineer4);
 }
 public function testCompanyContract()
 {
     $person = new \Doctrine\Tests\Models\Company\CompanyEmployee();
     $person->setName('Poor Sales Guy');
     $person->setDepartment('Sales');
     $person->setSalary(100);
     $this->_em->persist($person);
     for ($i = 0; $i < 33; $i++) {
         $fix = new \Doctrine\Tests\Models\Company\CompanyFixContract();
         $fix->setFixPrice(1000);
         $fix->setSalesPerson($person);
         $fix->markCompleted();
         $this->_em->persist($fix);
         $flex = new \Doctrine\Tests\Models\Company\CompanyFlexContract();
         $flex->setSalesPerson($person);
         $flex->setHoursWorked(100);
         $flex->setPricePerHour(100);
         $flex->markCompleted();
         $this->_em->persist($flex);
         $ultra = new \Doctrine\Tests\Models\Company\CompanyFlexUltraContract();
         $ultra->setSalesPerson($person);
         $ultra->setHoursWorked(150);
         $ultra->setPricePerHour(150);
         $ultra->setMaxPrice(7000);
         $this->_em->persist($ultra);
     }
     $this->_em->flush();
     $this->_em->clear();
     $start = microtime(true);
     $contracts = $this->_em->getRepository('Doctrine\\Tests\\Models\\Company\\CompanyContract')->findAll();
     echo "99 CompanyContract: " . number_format(microtime(true) - $start, 6) . "\n";
     $this->assertEquals(99, count($contracts));
     $this->_em->clear();
     $start = microtime(true);
     $contracts = $this->_em->getRepository('Doctrine\\Tests\\Models\\Company\\CompanyContract')->findAll();
     echo "99 CompanyContract: " . number_format(microtime(true) - $start, 6) . "\n";
     $this->assertEquals(99, count($contracts));
 }