/**
  * Reorder person with role
  *
  * @param Person|EmbeddedRole $person
  * @param Role\EmbeddedRole $role
  * @param boolean $up
  */
 public function reorderPersonWithRole($person, $role, $up = true)
 {
     $people = array_values($this->getPeopleByRole($role, true));
     $this->getEmbeddedRole($role)->getPeople()->clear();
     $out = array();
     foreach ($people as $key => $embeddedPerson) {
         if ($person->getId() == $embeddedPerson->getId()) {
             $out[$key * 10 + ($up ? -11 : 11)] = $embeddedPerson;
         } else {
             $out[$key * 10] = $embeddedPerson;
         }
     }
     ksort($out);
     foreach ($out as $embeddedPerson) {
         $this->getEmbeddedRole($role)->addPerson($embeddedPerson);
     }
 }
 public function testEmbeddedRole()
 {
     $role = $this->createRole('Role');
     $embeddedRole = new EmbeddedRole($role);
     $name = 'EmbeddedRole';
     $cod = 'EmbeddedRole';
     $xml = '<xml content and definition of this/>';
     $text = 'Black then white are all i see in my infancy.';
     $locale = 'en';
     $embeddedRole->setName($name);
     $embeddedRole->setCod($cod);
     $embeddedRole->setXml($xml);
     $embeddedRole->setText($text);
     $embeddedRole->setLocale($locale);
     $this->dm->persist($embeddedRole);
     $this->dm->flush();
     $this->assertEquals($name, $embeddedRole->getName());
     $this->assertEquals($cod, $embeddedRole->getCod());
     $this->assertEquals($xml, $embeddedRole->getXml());
     $this->assertEquals($text, $embeddedRole->getText());
     $this->assertEquals($locale, $embeddedRole->getLocale());
     $localeEs = 'es';
     $nameEs = 'RolEmbebido';
     $textEs = 'Blano y negro es todo lo que vi en mi infancia.';
     $nameI18n = array($locale => $name, $localeEs => $nameEs);
     $textI18n = array($locale => $text, $localeEs => $textEs);
     $embeddedRole->setI18nName($nameI18n);
     $embeddedRole->setI18nText($textI18n);
     $this->dm->persist($embeddedRole);
     $this->dm->flush();
     $this->assertEquals($nameI18n, $embeddedRole->getI18nName());
     $this->assertEquals($textI18n, $embeddedRole->getI18nText());
     $name = null;
     $text = null;
     $embeddedRole->setName($name);
     $embeddedRole->setText($text);
     $this->dm->persist($embeddedRole);
     $this->dm->flush();
     $this->assertEquals($name, $embeddedRole->getName());
     $this->assertEquals($text, $embeddedRole->getText());
     $person_ned = $this->createPerson('Ned');
     $embeddedRole->addPerson($person_ned);
     $this->assertTrue($embeddedRole->containsPerson($person_ned));
     $person_benjen = $this->createPerson('Benjen');
     $embeddedRole->addPerson($person_benjen);
     $person_mark = $this->createPerson('Mark');
     $embeddedRole->addPerson($person_mark);
     $person_cris = $this->createPerson('Cris');
     $this->dm->persist($embeddedRole);
     $this->dm->flush();
     $people1 = array($person_ned, $person_benjen, $person_mark);
     $people2 = array($person_ned, $person_benjen, $person_mark, $person_cris);
     $people3 = array($person_cris);
     $this->assertTrue($embeddedRole->containsAllPeople($people1));
     $this->assertFalse($embeddedRole->containsAllPeople($people2));
     $this->assertFalse($embeddedRole->containsAnyPerson($people1));
     $this->assertTrue($embeddedRole->containsAnyPerson($people3));
     $this->assertFalse($embeddedRole->getEmbeddedPerson($person_cris));
     $role = new Role();
     //var_dump($embeddedRole->createEmbeddedPerson($role));
 }