Esempio n. 1
0
 /**
  * @dataProvider provideLessThanCases
  */
 function testLessThanCases($aArray, $bArray)
 {
     $a = $this->makeVersion($aArray);
     $b = $this->makeVersion($bArray);
     $actual = Version::compare($a, $b);
     $this->assertLessThan(0, $actual);
     $actual = Version::compare($b, $a);
     $this->assertGreaterThan(0, $actual);
 }
Esempio n. 2
0
 public function testCompareVersion()
 {
     // test = version
     $version = Version::VERSION;
     $this->assertEquals(0, Version::compare($version));
     // test < version
     $this->assertLessThan(0, Version::compare('0.1'));
     $this->assertLessThan(0, Version::compare($version . '-alfa'));
     $this->assertLessThan(0, Version::compare($version . '-beta'));
     $this->assertLessThan(0, Version::compare($version . '-rc1'));
     // test > version
     $this->assertGreaterThan(0, Version::compare($version . '.1'));
     $this->assertGreaterThan(0, Version::compare($version . '-1'));
 }
Esempio n. 3
0
<?php

require 'Version.class.php';
$version = '2.7.1';
$obj = new Version();
// 版本转数字
$version_code = $obj->version_to_integer($version);
echo $version_code . '<br>';
// 20701
// 数字转版本
$version = $obj->integer_to_version($version_code);
echo $version . '<br>';
// 2.7.1
// 检查版本
$version = '1.1.a';
var_dump($obj->check($version));
// false
// 比较两个版本
$version1 = '2.9.9';
$version2 = '10.0.1';
$result = $obj->compare($version1, $version2);
echo $result;
// -1
 /**
  * Choose a Package from the collection which satisfies the
  * specified selection filters. If no suitable package can
  * be found the special NullPackage is returned.
  *
  * @param platformId  (Integer) PlatformId filter.
  * @param title  (String) Symbolic name of the package to download. Default="Doomsday".
  * @param unstable  (Boolean) @c true= Only consider 'unstable' packs.
  * @param hasDownload  (Boolean) @c true= Only consider 'downloadable' packs.
  * @return  (Object) Chosen package.
  */
 private function &choosePackage($platformId = PID_ANY, $title = "Doomsday", $unstable = FALSE, $downloadable = TRUE)
 {
     $unstable = (bool) $unstable;
     $downloadable = (bool) $downloadable;
     if (isset($this->packages)) {
         $matchTitle = (bool) (strlen($title) > 0);
         $found = 0;
         foreach ($this->packages as &$pack) {
             if ($pack->platformId() !== $platformId) {
                 continue;
             }
             if ($matchTitle && strcasecmp($pack->title(), $title)) {
                 continue;
             }
             if ($unstable != $pack instanceof AbstractUnstablePackage) {
                 continue;
             }
             if ($downloadable != ($pack instanceof iDownloadable && ($pack->hasDirectDownloadUri() || $pack->hasDirectDownloadFallbackUri()))) {
                 continue;
             }
             // Found something suitable.
             if (!$found || Version::compare($pack->version(), $found->version()) > 0) {
                 $found = $pack;
             }
         }
         if ($found) {
             return $found;
         }
     }
     // Nothing suitable.
     return self::$nullPack;
 }
Esempio n. 5
0
 private static function compareVersionWithCompare(Version $aFrom = null, Version $aTo = null, $sFromCompare, $sToCompare)
 {
     if (self::isSameDirection($sFromCompare, $sToCompare)) {
         return self::INTERSECT;
     } else {
         if (null !== $aFrom and null !== $aTo) {
             $compare = $aFrom->compare($aTo);
             if ($compare > 0) {
                 if ('<' === $sFromCompare or '<=' === $sFromCompare) {
                     return self::INTERSECT;
                 } else {
                     return self::SEPARATE;
                 }
             } else {
                 if ($compare < 0) {
                     if ('<' === $sFromCompare or '<=' === $sFromCompare) {
                         return self::SEPARATE;
                     } else {
                         return self::INTERSECT;
                     }
                 } else {
                     if (0 === $compare) {
                         if (('<=' === $sFromCompare or '>=' === $sFromCompare) and ('<=' === $sToCompare or '>=' === $sToCompare)) {
                             return self::INTERSECT;
                         } else {
                             return self::SEPARATE;
                         }
                     } else {
                         throw new VersionException('compare error : `%s`', $compare);
                     }
                 }
             }
         } else {
             return self::INTERSECT;
         }
     }
 }