php_components_pack/tests/classes/VersionInfoTest.php
babaev-an a439c0d2c9 20250612
* Добавлено перечисление стадий в информации о версии VersionInfoStage.

* Добавлен новый класс, описывающий информацию о версии, VersionInfo (подробнее см. VersionInfo.md).
2025-06-12 16:09:03 +03:00

93 lines
3.1 KiB
PHP

<?php
namespace goodboyalex\php_components_pack\tests\classes;
use goodboyalex\php_components_pack\classes\VersionInfo;
use goodboyalex\php_components_pack\enums\VersionInfoStage;
use PHPUnit\Framework\TestCase;
class VersionInfoTest extends TestCase
{
public function testCompareWith ()
{
$this->PrepareForTest();
$versionInfo1 = new VersionInfo(1, 2, 3, 4, VersionInfoStage::Beta, 1);
$versionInfo2 = new VersionInfo(1, 1, 3, 4, VersionInfoStage::Alpha, 2);
$this->assertEquals(1, $versionInfo1->CompareWith($versionInfo2));
}
private function PrepareForTest (): void
{
require_once __DIR__ . '/../../sources/enums/VersionInfoStage.php';
require_once __DIR__ . '/../../sources/classes/VersionInfo.php';
}
public function test__toString ()
{
$this->PrepareForTest();
$versionInfo = new VersionInfo(1, 2, 3, 4, VersionInfoStage::Beta, 1);
$this->assertEquals('1.2.3.4 Beta 1', $versionInfo->__toString());
}
public function testToString ()
{
$this->PrepareForTest();
$versionInfo = new VersionInfo(1, 2, 3, 4, VersionInfoStage::Beta, 1);
$template = "Это #{Stage} #{StageNumber} версии #{Major}.#{Minor}.#{Release}.#{Build}";
$stageNames = [
VersionInfoStage::PreAlpha->value => 'рано',
VersionInfoStage::Alpha->value => 'начало',
VersionInfoStage::Beta->value => 'середнячок',
VersionInfoStage::ReleaseCandidate->value => 'почти',
VersionInfoStage::Stable->value => 'это релиз, детка!'
];
$this->assertEquals('Это середнячок 1 версии 1.2.3.4', $versionInfo->ToString($template, $stageNames));
}
public function testParse ()
{
$this->PrepareForTest();
$stageNames = [
VersionInfoStage::PreAlpha->value => 'pre',
VersionInfoStage::Alpha->value => 'alpha',
VersionInfoStage::Beta->value => 'beta',
VersionInfoStage::ReleaseCandidate->value => 'rc',
VersionInfoStage::Stable->value => 'stable'
];
$version = VersionInfo::Parse('1.2.3.4 beta 1', $stageNames);
$this->assertEquals(1, $version->Major);
$this->assertEquals(2, $version->Minor);
$this->assertEquals(3, $version->Release);
$this->assertEquals(4, $version->Build);
$this->assertEquals(VersionInfoStage::Beta, $version->Stage);
$this->assertEquals(1, $version->StageNumber);
}
public function test__construct ()
{
$this->PrepareForTest();
$version = new VersionInfo(1, 2, 3, 4, VersionInfoStage::Beta, 1);
$this->assertEquals(2, $version->Minor);
}
public function testCompare ()
{
$this->PrepareForTest();
$versionInfo1 = new VersionInfo(1, 2, 3, 4, VersionInfoStage::Beta, 1);
$versionInfo2 = new VersionInfo(1, 1, 3, 4, VersionInfoStage::Alpha, 2);
$this->assertEquals(1, VersionInfo::Compare($versionInfo1, $versionInfo2));
}
}