/**
  * @param File            $file
  * @param VersionProvider $versionProvider
  * @param  int              $levelsDown
  * @return string
  * @throws FilelibException
  */
 public function getRelativePathToVersion(File $file, Version $version, VersionProvider $versionProvider, $levelsDown = 0)
 {
     $relativePath = $this->getRelativePathToRoot();
     if (!$relativePath) {
         throw new LogicException('Relative path must be set!');
     }
     $relativePath = str_repeat("../", $levelsDown) . $relativePath;
     $retrieved = $this->storage->retrieveVersion($versionProvider->getApplicableVersionable($file), $version);
     $path = preg_replace("[^{$this->adapter->getRoot()}]", $relativePath, $retrieved);
     return $path;
 }
 /**
  * @test
  */
 public function defaultsShouldProvideSaneStorage()
 {
     $root = ROOT_TESTS . '/data/files';
     $storage = new FilesystemStorageAdapter($root);
     $this->assertSame(0700, $storage->getDirectoryPermission());
     $this->assertSame(0600, $storage->getFilePermission());
     $this->assertEquals($root, $storage->getRoot());
 }