/**
  * Returns the Project Descriptor from the cache.
  *
  * @param ProjectDescriptor $projectDescriptor
  *
  * @return void
  */
 public function populate(ProjectDescriptor $projectDescriptor)
 {
     /** @var IteratorInterface $iteratorInterface */
     $iteratorInterface = $this->getCache()->getIterator();
     // load the settings object
     try {
         $settings = $this->getCache()->getItem(self::KEY_SETTINGS);
     } catch (\Exception $e) {
         $settings = $this->igBinaryCompatibleCacheClear(self::KEY_SETTINGS, $e);
     }
     if ($settings) {
         $projectDescriptor->setSettings($settings);
     }
     // FIXME: Workaround for: https://github.com/zendframework/zf2/pull/4154
     if ($iteratorInterface->valid()) {
         foreach ($this->getCache() as $key) {
             try {
                 $item = $this->getCache()->getItem($key);
             } catch (\Exception $e) {
                 $this->igBinaryCompatibleCacheClear($key, $e);
             }
             if ($item instanceof FileDescriptor) {
                 $projectDescriptor->getFiles()->set($item->getPath(), $item);
             }
         }
     }
 }
 /**
  * @covers phpDocumentor\Descriptor\ProjectDescriptor::isVisibilityAllowed
  */
 public function testIsVisibilityAllowed()
 {
     $this->assertTrue($this->fixture->isVisibilityAllowed(Settings::VISIBILITY_PUBLIC));
     $this->assertTrue($this->fixture->isVisibilityAllowed(Settings::VISIBILITY_PROTECTED));
     $this->assertTrue($this->fixture->isVisibilityAllowed(Settings::VISIBILITY_PRIVATE));
     $this->assertFalse($this->fixture->isVisibilityAllowed(Settings::VISIBILITY_INTERNAL));
     $settings = new Settings();
     $settings->setVisibility(Settings::VISIBILITY_PROTECTED);
     $this->fixture->setSettings($settings);
     $this->assertFalse($this->fixture->isVisibilityAllowed(Settings::VISIBILITY_PUBLIC));
     $this->assertTrue($this->fixture->isVisibilityAllowed(Settings::VISIBILITY_PROTECTED));
     $this->assertFalse($this->fixture->isVisibilityAllowed(Settings::VISIBILITY_PRIVATE));
     $this->assertFalse($this->fixture->isVisibilityAllowed(Settings::VISIBILITY_INTERNAL));
     $settings->setVisibility(Settings::VISIBILITY_PROTECTED | Settings::VISIBILITY_INTERNAL);
     $this->fixture->setSettings($settings);
     $this->assertFalse($this->fixture->isVisibilityAllowed(Settings::VISIBILITY_PUBLIC));
     $this->assertTrue($this->fixture->isVisibilityAllowed(Settings::VISIBILITY_PROTECTED));
     $this->assertFalse($this->fixture->isVisibilityAllowed(Settings::VISIBILITY_PRIVATE));
     $this->assertTrue($this->fixture->isVisibilityAllowed(Settings::VISIBILITY_INTERNAL));
 }