示例#1
0
 /**
  * @test
  */
 public function canNotAddModifierTwice()
 {
     $version = new Version('tenhunen', array('suuruus' => 'ylistetty'), array('x5'));
     $this->assertEquals(array('x5'), $version->getModifiers());
     $ret = $version->addModifier('x5');
     $this->assertEquals(array('x5'), $ret->getModifiers());
     $this->assertNotSame($version, $ret);
 }
 /**
  * @param Version $version
  * @return Version
  * @throws InvalidVersionException
  */
 public function ensureValidVersion(Version $version)
 {
     $version = parent::ensureValidVersion($version);
     $unknownParams = array_map(function ($param) {
         return '\'' . $param . '\'';
     }, array_diff(array_keys($version->getParams()), call_user_func($this->allowedParamsGetter)));
     if (count($unknownParams)) {
         throw new InvalidVersionException(sprintf("Unknown version parameters: %s", implode(', ', $unknownParams)));
     }
     $unknownModifiers = array_map(function ($param) {
         return '\'' . $param . '\'';
     }, array_diff($version->getModifiers(), call_user_func($this->allowedModifiersGetter)));
     if (count($unknownModifiers)) {
         throw new InvalidVersionException(sprintf("Unknown version modifiers: %s", implode(', ', $unknownModifiers)));
     }
     $newParams = array_merge(call_user_func($this->defaultParamsGetter), $version->getParams());
     $version = new Version($version->getVersion(), $newParams, $version->getModifiers());
     $isValid = call_user_func_array($this->versionValidityChecker, array($version));
     if (!$isValid) {
         throw new InvalidVersionException(sprintf("Invalid version '%s'", $version->toString()));
     }
     return $version;
 }