public function testLoadClasses()
 {
     $this->versionA->addContainer($fooA = new Clazz('Foo'));
     $this->versionB->addContainer($fooB = new Clazz('Foo'));
     $this->versionB->addContainer($barB = new Clazz('Bar'));
     $this->versionC->addContainer($barC = new Clazz('Bar'));
     $this->em->persist($this->package);
     $this->em->flush();
     $loadedClasses = $this->provider->loadClasses(array('Foo', 'Bar', 'baz'));
     $this->assertCount(2, $loadedClasses);
     $this->assertArrayHasKey('Foo', $loadedClasses);
     $this->assertArrayHasKey('Bar', $loadedClasses);
     $this->assertSame($fooA, $loadedClasses['Foo']);
     $this->assertSame($barB, $loadedClasses['Bar']);
     $loadedClasses = $this->provider->loadClasses(array('foo', 'bAr', 'baz'));
     $this->assertCount(2, $loadedClasses);
     $this->assertArrayHasKey('foo', $loadedClasses);
     $this->assertArrayHasKey('bAr', $loadedClasses);
     $this->assertSame($fooA, $loadedClasses['foo']);
     $this->assertSame($barB, $loadedClasses['bAr']);
     $this->provider->setPackageVersions(array($this->versionB));
     $loadedClasses = $this->provider->loadClasses(array('foo', 'bar', 'baz'));
     $this->assertCount(2, $loadedClasses);
     $this->assertArrayHasKey('foo', $loadedClasses);
     $this->assertArrayHasKey('bar', $loadedClasses);
     $this->assertSame($fooB, $loadedClasses['foo']);
     $this->assertSame($barB, $loadedClasses['bar']);
 }
 /**
  * @group packageDependencies
  */
 public function testDeletePackageVersionWhenInheritingBetweenPackages()
 {
     $this->packageVersion->addContainer($foo = new Clazz('Foo'));
     $foo->addProperty($fooProperty = new Property('foo'));
     $fooProperty->setPhpType($this->typeRegistry->getNativeType('string'));
     $this->em->persist($this->packageVersion);
     $this->otherPackageVersion->addDependency($this->packageVersion);
     $this->otherPackageVersion->addContainer($bar = new Clazz('bar'));
     $bar->addProperty($fooProperty, 'Foo');
     $this->em->persist($this->otherPackageVersion);
     $this->em->flush();
     $this->assertVersionsCount(2);
     $this->repo->deletePackageVersion($this->packageVersion);
     $this->em->clear();
     $this->assertVersionsCount(0);
 }