mirror of
https://github.com/Karaka-Management/phpOMS.git
synced 2026-01-11 09:48:40 +00:00
Add file size formatting
This commit is contained in:
parent
7275e7b475
commit
80dee41e9e
|
|
@ -15,6 +15,7 @@ declare(strict_types=1);
|
|||
namespace phpOMS\Utils\Converter;
|
||||
|
||||
use phpOMS\Stdlib\Base\Enum;
|
||||
use phpOMS\Utils\Converter\Measurement;
|
||||
|
||||
/**
|
||||
* File size type enum.
|
||||
|
|
@ -45,4 +46,26 @@ abstract class FileSizeType extends Enum
|
|||
public const KILOBIT = 'kbit';
|
||||
|
||||
public const BIT = 'bit';
|
||||
|
||||
/**
|
||||
* Auto format file size in bytes
|
||||
*
|
||||
* @param float $size File size
|
||||
*
|
||||
* @return array
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public static function autoFormat(float $size) : array
|
||||
{
|
||||
if ($size < 300) {
|
||||
return [$size, 'B'];
|
||||
} elseif ($size < 1000) {
|
||||
return [Measurement::convertFileSize($size, FileSizeType::BYTE, FileSizeType::KILOBYTE), 'KB'];
|
||||
} elseif ($size < 1000 * 1000 * 1000) {
|
||||
return [Measurement::convertFileSize($size, FileSizeType::BYTE, FileSizeType::MEGABYTE), 'MB'];
|
||||
}
|
||||
|
||||
return [Measurement::convertFileSize($size, FileSizeType::BYTE, FileSizeType::GIGABYTE), 'GB'];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@ namespace phpOMS\tests\Utils\Converter;
|
|||
use phpOMS\Utils\Converter\FileSizeType;
|
||||
|
||||
/**
|
||||
* @testdox phpOMS\tests\Utils\Converter\FileSizeTypeTest: File size types
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class FileSizeTypeTest extends \PHPUnit\Framework\TestCase
|
||||
|
|
@ -56,4 +58,32 @@ class FileSizeTypeTest extends \PHPUnit\Framework\TestCase
|
|||
self::assertEquals('kbit', FileSizeType::KILOBIT);
|
||||
self::assertEquals('bit', FileSizeType::BIT);
|
||||
}
|
||||
|
||||
/**
|
||||
* @testdox File sizes can get automatically formatted according to their size
|
||||
* @covers phpOMS\Utils\Converter\FileSizeType
|
||||
* @group framework
|
||||
*/
|
||||
public function testAutoFormat() : void
|
||||
{
|
||||
self::assertEquals(
|
||||
[250.0, 'B'],
|
||||
FileSizeType::autoFormat(250)
|
||||
);
|
||||
|
||||
self::assertEquals(
|
||||
[0.5, 'KB'],
|
||||
FileSizeType::autoFormat(500)
|
||||
);
|
||||
|
||||
self::assertEquals(
|
||||
[1.024, 'MB'],
|
||||
FileSizeType::autoFormat(1024 * 1000)
|
||||
);
|
||||
|
||||
self::assertEquals(
|
||||
[1.024, 'GB'],
|
||||
FileSizeType::autoFormat(1024 * 1000 * 1000)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user