2024-04-30 07:40:08 -05:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace LibreNMS\Tests\Unit\Util;
|
|
|
|
|
|
|
|
|
|
use LibreNMS\Tests\TestCase;
|
|
|
|
|
use LibreNMS\Util\Number;
|
|
|
|
|
|
|
|
|
|
class NumberTest extends TestCase
|
|
|
|
|
{
|
|
|
|
|
public function testToBytes(): void
|
|
|
|
|
{
|
|
|
|
|
$this->assertEquals(2147483648, Number::toBytes('2GiB'));
|
|
|
|
|
$this->assertEquals(2147483648, Number::toBytes('2GiBytes'));
|
|
|
|
|
$this->assertEquals(2147483648, Number::toBytes('2Gib'));
|
|
|
|
|
$this->assertEquals(2000000000, Number::toBytes('2GB'));
|
|
|
|
|
$this->assertEquals(2000000000, Number::toBytes('2 Gbps')); // match Number::formatSI() output
|
|
|
|
|
$this->assertEquals(2000000000, Number::toBytes('2Gb'));
|
|
|
|
|
$this->assertEquals(2000000000, Number::toBytes('2G'));
|
|
|
|
|
$this->assertEquals(3145728, Number::toBytes('3MiB'));
|
|
|
|
|
$this->assertEquals(3000000, Number::toBytes('3M'));
|
|
|
|
|
$this->assertEquals(4398046511104, Number::toBytes('4TiB'));
|
|
|
|
|
$this->assertEquals(4000000000000, Number::toBytes('4TB'));
|
|
|
|
|
$this->assertEquals(5629499534213120, Number::toBytes('5PiB'));
|
|
|
|
|
$this->assertEquals(5000000000000000, Number::toBytes('5PB'));
|
|
|
|
|
$this->assertEquals(12000, Number::toBytes('12k'));
|
|
|
|
|
$this->assertEquals(12000, Number::toBytes('12Kb'));
|
|
|
|
|
$this->assertEquals(12288, Number::toBytes('12Ki'));
|
|
|
|
|
$this->assertEquals(12288, Number::toBytes('12KiB'));
|
|
|
|
|
$this->assertEquals(12288, Number::toBytes('12kiB')); // not technically valid, but allowed
|
|
|
|
|
$this->assertEquals(12, Number::toBytes('12B'));
|
|
|
|
|
$this->assertEquals(1234, Number::toBytes('1234'));
|
|
|
|
|
$this->assertSame(0, (int) Number::toBytes('garbage')); // NAN cast to int is 0
|
|
|
|
|
$this->assertNan(Number::toBytes('1m'));
|
|
|
|
|
$this->assertNan(Number::toBytes('1234a'));
|
|
|
|
|
$this->assertNan(Number::toBytes('1234as'));
|
|
|
|
|
$this->assertNan(Number::toBytes('1234asd'));
|
|
|
|
|
$this->assertNan(Number::toBytes('fluff'));
|
|
|
|
|
}
|
2024-09-06 13:27:39 -05:00
|
|
|
|
|
|
|
|
public function testPercentCalculation(): void
|
|
|
|
|
{
|
|
|
|
|
$this->assertEquals(99, Number::calculatePercent(99, 100));
|
|
|
|
|
$this->assertEquals(0.03, Number::calculatePercent(345, 1023450));
|
|
|
|
|
$this->assertEquals(0.0337, Number::calculatePercent(345, 1023450, 4));
|
|
|
|
|
$this->assertEquals(0, Number::calculatePercent(-1, 43));
|
|
|
|
|
$this->assertEquals(0, Number::calculatePercent(-1, -43));
|
|
|
|
|
$this->assertEquals(0, Number::calculatePercent(43, -43));
|
|
|
|
|
$this->assertEquals(29394.26, Number::calculatePercent(12639.53, 43));
|
|
|
|
|
}
|
2024-04-30 07:40:08 -05:00
|
|
|
}
|