Skip to content
Snippets Groups Projects
Commit 1c19e461 authored by Michael's avatar Michael Committed by Christian Kuhn
Browse files

[FEATURE] Add method to convert integer to version number

Change-Id: I99863cca2d9e8b2add3292a8570cefb03a960af1
Resolves: #35822
Releases: 6.0
Reviewed-on: http://review.typo3.org/10210
Reviewed-by: Andy Grunwald
Tested-by: Andy Grunwald
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
parent 3adf3a2b
Branches
Tags
No related merge requests found
......@@ -24,6 +24,7 @@
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Class with helper functions for version number handling
*
......@@ -31,7 +32,6 @@
* @package TYPO3
* @subpackage t3lib
*/
final class t3lib_utility_VersionNumber {
/**
......@@ -44,6 +44,30 @@ final class t3lib_utility_VersionNumber {
$versionParts = explode('.', $versionNumber);
return intval((int) $versionParts[0] . str_pad((int) $versionParts[1], 3, '0', STR_PAD_LEFT) . str_pad((int) $versionParts[2], 3, '0', STR_PAD_LEFT));
}
/**
* Returns the three part version number (string) from an integer, eg 4012003 -> '4.12.3'
*
* @param $versionInteger integer Integer representation of version number
* @return string Version number as format x.x.x
* @throws \InvalidArgumentException if $versionInteger is not an integer
*/
public static function convertIntegerToVersionNumber($versionInteger) {
if (!is_int($versionInteger)) {
throw new \InvalidArgumentException(
't3lib_utility_VersionNumber::convertIntegerToVersionNumber() supports an integer argument only!',
1334072223
);
}
$versionString = str_pad($versionInteger, 9, '0', STR_PAD_LEFT);
$parts = array(
substr($versionString, 0, 3),
substr($versionString, 3, 3),
substr($versionString, 6, 3)
);
return intval($parts[0]) . '.' . intval($parts[1]) . '.' . intval($parts[2]);
}
}
?>
\ No newline at end of file
......@@ -26,22 +26,17 @@
* Testcase for class t3lib_utility_VersionNumber
*
* @author Susanne Moog <typo3@susanne-moog.de>
*
* @package TYPO3
* @subpackage t3lib
*/
class t3lib_utility_VersionNumberTest extends tx_phpunit_testcase {
//////////////////////////////////
// Tests concerning int_from_ver
//////////////////////////////////
/**
* Data Provider for convertVersionNumberToIntegerConvertsVersionNumbersToIntegersDataProvider
* Data Provider for convertVersionNumberToIntegerConvertsVersionNumbersToIntegers
*
* return array
*/
public function convertVersionNumberToIntegerConvertsVersionNumbersToIntegersDataProvider() {
public function validVersionNumberDataProvider() {
return array(
array('4003003', '4.3.3'),
array('4012003', '4.12.3'),
......@@ -51,14 +46,50 @@ class t3lib_utility_VersionNumberTest extends tx_phpunit_testcase {
);
}
/**
* Data Provider for convertIntegerToVersionNumberConvertsOtherTypesAsIntegerToVersionNumber
*
* @see http://php.net/manual/en/language.types.php
* return array
*/
public function invalidVersionNumberDataProvider() {
return array(
'boolean' => array(TRUE),
'float' => array(5.4),
'array' => array(array()),
'string' => array('300ABCD'),
'object' => array(new stdClass()),
'NULL' => array(NULL),
'function' => array(function(){}),
);
}
/**
* @test
* @dataProvider convertVersionNumberToIntegerConvertsVersionNumbersToIntegersDataProvider
* @dataProvider validVersionNumberDataProvider
*/
public function convertVersionNumberToIntegerConvertsVersionNumbersToIntegers($expected, $version) {
$this->assertEquals($expected, t3lib_utility_VersionNumber::convertVersionNumberToInteger($version));
}
/**
* @test
* @dataProvider validVersionNumberDataProvider
*/
public function convertIntegerToVersionNumberConvertsIntegerToVersionNumber($versionNumber, $expected) {
// Make sure incoming value is an integer
$versionNumber = (int) $versionNumber;
$this->assertEquals($expected, t3lib_utility_VersionNumber::convertIntegerToVersionNumber($versionNumber));
}
/**
* @test
* @dataProvider invalidVersionNumberDataProvider
*/
public function convertIntegerToVersionNumberConvertsOtherTypesAsIntegerToVersionNumber($version) {
$this->setExpectedException('\InvalidArgumentException', '', 1334072223);
t3lib_utility_VersionNumber::convertIntegerToVersionNumber($version);
}
}
?>
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment