All tested with PHP 8.4 and PHP 8.3 too Major changes: - cube root Math (cbrt) now throws InvalidArgumentException if NAN is returned instead of returning NAN - Byte convert from string to int will throw errors if value is too large (\LengthException) - new flag for returning string type but for this bcmath must be installed (\RuntimeException if no bcmath) - Updated curl class and remove close handler as not needed and deprecated as of PHP 8.5 - Curl phpunit tests: convert string to JSON convert flow for return content check (to avoid per PHP version check) - image close handler for ImageMagick removed as not needed and deprecated as of PHP 8.5 - updated all check calls too use phive tools if possible (except phpunit) and all scripts can have dynamic php version set
184 lines
5.8 KiB
PHP
184 lines
5.8 KiB
PHP
<?php // phpcs:ignore warning
|
|
|
|
/**
|
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
error_reporting(E_ALL | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
|
|
ob_start();
|
|
|
|
// basic class test file
|
|
define('USE_DATABASE', false);
|
|
// sample config
|
|
require 'config.php';
|
|
// define log file id
|
|
$LOG_FILE_ID = 'classTest-byte';
|
|
ob_end_flush();
|
|
|
|
use CoreLibs\Convert\Byte;
|
|
|
|
$log = new CoreLibs\Logging\Logging([
|
|
'log_folder' => BASE . LOG,
|
|
'log_file_id' => $LOG_FILE_ID,
|
|
'log_per_date' => true,
|
|
]);
|
|
$byte_class = 'CoreLibs\Convert\Byte';
|
|
|
|
$PAGE_NAME = 'TEST CLASS: BYTE CONVERT';
|
|
print "<!DOCTYPE html>";
|
|
print "<html><head><title>" . $PAGE_NAME . "</title></head>";
|
|
print "<body>";
|
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
|
print '<div><h1>' . $PAGE_NAME . '</h1></div>';
|
|
|
|
// class
|
|
$byte = 254779258;
|
|
$string = '242.98 MB';
|
|
// static
|
|
print "S::BYTE TO (calls as var): $byte: " . $byte_class::humanReadableByteFormat($byte) . "<br>";
|
|
print "S::BYTE TO: $byte: " . Byte::humanReadableByteFormat($byte) . "<br>";
|
|
print "S::BYTE TO: $byte: " . Byte::humanReadableByteFormat($byte, Byte::BYTE_FORMAT_SI) . "<br>";
|
|
print "S::BYTE TO: $byte: " . Byte::humanReadableByteFormat($byte, Byte::BYTE_FORMAT_ADJUST) . "<br>";
|
|
print "S::BYTE TO: $byte: " . Byte::humanReadableByteFormat($byte, Byte::BYTE_FORMAT_NOSPACE) . "<br>";
|
|
print "S::BYTE FROM: $string: " . Byte::stringByteFormat($string) . "<br>";
|
|
//
|
|
$byte = 314572800;
|
|
$string = '300 MB';
|
|
print "S::BYTE TO: $byte: " . Byte::humanReadableByteFormat($byte) . "<br>";
|
|
print "S::BYTE TO: $byte: " . Byte::humanReadableByteFormat($byte, Byte::BYTE_FORMAT_SI) . "<br>";
|
|
print "S::BYTE TO: $byte: " . Byte::humanReadableByteFormat($byte, Byte::BYTE_FORMAT_ADJUST) . "<br>";
|
|
print "S::BYTE TO: $byte: "
|
|
. Byte::humanReadableByteFormat($byte, Byte::BYTE_FORMAT_ADJUST | Byte::BYTE_FORMAT_NOSPACE) . "<br>";
|
|
print "S::BYTE TO: $byte: " . Byte::humanReadableByteFormat($byte, Byte::BYTE_FORMAT_NOSPACE) . "<br>";
|
|
print "S::BYTE FROM: $string: " . Byte::stringByteFormat($string) . "<br>";
|
|
|
|
// *** BYTES TEST ***
|
|
$bytes = [
|
|
-123123123,
|
|
999999, // KB-1
|
|
999999999, // MB-1
|
|
254779258, // MB-n
|
|
999999999999999, // TB-1
|
|
588795544887632, // TB-n
|
|
999999999999999999, // PB-1
|
|
9223372036854775807, // MAX INT
|
|
999999999999999999999, // EB-1
|
|
];
|
|
print "<b>BYTE FORMAT TESTS</b><br>";
|
|
foreach ($bytes as $byte) {
|
|
print '<div style="display: flex; border-bottom: 1px dashed gray;">';
|
|
//
|
|
print '<div style="width: 35%; text-align: right; padding-right: 2px;">';
|
|
print "(" . number_format($byte) . "/" . $byte . ") bytes :";
|
|
$_bytes = Byte::humanReadableByteFormat($byte);
|
|
print '</div>';
|
|
print '<div style="width: 10%;">' . $_bytes . '</div>';
|
|
print '<div style="width: 40%;">';
|
|
try {
|
|
print Byte::stringByteFormat($_bytes);
|
|
} catch (\LengthException $e) {
|
|
print "LengthException 1: " . $e->getMessage();
|
|
try {
|
|
print "<br>S: " . Byte::stringByteFormat($_bytes, Byte::RETURN_AS_STRING);
|
|
} catch (\LengthException $e) {
|
|
print "LengthException 2: " . $e->getMessage();
|
|
} catch (\RuntimeException $e) {
|
|
print "RuntimeException 1: " . $e->getMessage();
|
|
}
|
|
}
|
|
print "</div>";
|
|
//
|
|
print "</div>";
|
|
//
|
|
print '<div style="display: flex; border-bottom: 1px dotted red;">';
|
|
//
|
|
print '<div style="width: 35%; text-align: right; padding-right: 2px;">';
|
|
print "bytes [si]:";
|
|
$_bytes = Byte::humanReadableByteFormat($byte, Byte::BYTE_FORMAT_SI);
|
|
print '</div><div style="width: 10%;">' . $_bytes;
|
|
print '</div><div style="width: 40%;">';
|
|
try {
|
|
print Byte::stringByteFormat($_bytes);
|
|
} catch (\LengthException $e) {
|
|
print "LengthException A: " . $e->getMessage();
|
|
try {
|
|
print "<br>Ssi: " . Byte::stringByteFormat($_bytes, Byte::RETURN_AS_STRING | Byte::BYTE_FORMAT_SI);
|
|
} catch (\LengthException $e) {
|
|
print "LengthException B: " . $e->getMessage();
|
|
} catch (\RuntimeException $e) {
|
|
print "RuntimeException A: " . $e->getMessage();
|
|
}
|
|
}
|
|
print "</div>";
|
|
//
|
|
print "</div>";
|
|
}
|
|
|
|
$string_bytes = [
|
|
'-117.42 MB',
|
|
'242.98 MB',
|
|
'254.78 MiB',
|
|
'1 EiB',
|
|
'8 EB',
|
|
'867.36EB',
|
|
'1000EB',
|
|
'10000EB',
|
|
];
|
|
print "<b>BYTE STRING TO BYTES TESTS</b><br>";
|
|
foreach ($string_bytes as $string) {
|
|
print '<div style="display: flex; border-bottom: 1px dashed gray;">';
|
|
//
|
|
print '<div style="width: 35%; text-align: right; padding-right: 2px;">';
|
|
print "string byte ($string) to bytes :";
|
|
try {
|
|
$_bytes = Byte::stringByteFormat($string);
|
|
} catch (\LengthException $e) {
|
|
print "<br>LengthException A: " . $e->getMessage();
|
|
$_bytes = 0;
|
|
}
|
|
try {
|
|
$_bytes_string = Byte::stringByteFormat($string, Byte::RETURN_AS_STRING);
|
|
} catch (\LengthException $e) {
|
|
print "<br>LengthException B: " . $e->getMessage();
|
|
$_bytes_string = '';
|
|
} catch (\RuntimeException $e) {
|
|
print "<br>RuntimeException: " . $e->getMessage();
|
|
$_bytes_string = '';
|
|
}
|
|
try {
|
|
$_bytes_si = Byte::stringByteFormat($string, Byte::BYTE_FORMAT_SI);
|
|
} catch (\LengthException $e) {
|
|
print "<br>LengthException A: " . $e->getMessage();
|
|
$_bytes_si = 0;
|
|
}
|
|
try {
|
|
$_bytes_string_si = Byte::stringByteFormat($string, Byte::RETURN_AS_STRING | Byte::BYTE_FORMAT_SI);
|
|
} catch (\LengthException $e) {
|
|
print "<br>LengthException B: " . $e->getMessage();
|
|
$_bytes_string_si = '';
|
|
} catch (\RuntimeException $e) {
|
|
print "<br>RuntimeException: " . $e->getMessage();
|
|
$_bytes_string_si = '';
|
|
}
|
|
print '</div>';
|
|
print '<div style="width: 20%;">'
|
|
. "F:" . number_format((int)$_bytes)
|
|
. '<br>B: ' . $_bytes
|
|
. '<br>S: ' . $_bytes_string
|
|
. "<br>Fsi:" . number_format((int)$_bytes_si)
|
|
. '<br>Bsi: ' . $_bytes_si
|
|
. '<br>Ssi: ' . $_bytes_string_si;
|
|
print '</div>';
|
|
print '<div style="width: 10%;">';
|
|
print "B: " . Byte::humanReadableByteFormat($_bytes) . "<br>";
|
|
print "Bsi: " . Byte::humanReadableByteFormat($_bytes_si, Byte::BYTE_FORMAT_SI);
|
|
print "</div>";
|
|
print "</div>";
|
|
}
|
|
print "</body></html>";
|
|
|
|
// __END__
|