mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
New utility Number::constrainInteger() (#15663)
* New utility Number::constrainInteger() Fixes a bug with Number::unsignedAsSigned() and implements signed support as well. * cleanup * Apply fixes from StyleCI * Remove default cases --------- Co-authored-by: StyleCI Bot <bot@styleci.io>
This commit is contained in:
@@ -26,6 +26,7 @@
|
||||
namespace LibreNMS\Tests;
|
||||
|
||||
use LibreNMS\Device\YamlDiscovery;
|
||||
use LibreNMS\Enum\IntegerType;
|
||||
use LibreNMS\Util\Number;
|
||||
use LibreNMS\Util\Time;
|
||||
|
||||
@@ -129,18 +130,26 @@ class FunctionsTest extends TestCase
|
||||
|
||||
public function testNumberAsUnsigned()
|
||||
{
|
||||
$this->assertSame(42, Number::unsignedAsSigned('42')); /** @phpstan-ignore-line */
|
||||
$this->assertSame(2147483647, Number::unsignedAsSigned(2147483647));
|
||||
$this->assertSame(-2147483648, Number::unsignedAsSigned(2147483648));
|
||||
$this->assertSame(-2147483647, Number::unsignedAsSigned(2147483649));
|
||||
$this->assertSame(-1, Number::unsignedAsSigned(4294967295));
|
||||
$this->assertSame(42, Number::constrainInteger('42', IntegerType::int32)); /** @phpstan-ignore-line */
|
||||
$this->assertSame(2147483647, Number::constrainInteger(2147483647, IntegerType::int32));
|
||||
$this->assertSame(-2147483648, Number::constrainInteger(2147483648, IntegerType::int32));
|
||||
$this->assertSame(-2147483647, Number::constrainInteger(2147483649, IntegerType::int32));
|
||||
$this->assertSame(-1, Number::constrainInteger(4294967295, IntegerType::int32));
|
||||
$this->assertSame(-3757, Number::constrainInteger(61779, IntegerType::int16));
|
||||
$this->assertSame(0, Number::constrainInteger(0, IntegerType::uint32));
|
||||
$this->assertSame(42, Number::constrainInteger(42, IntegerType::uint32));
|
||||
$this->assertSame(4294967252, Number::constrainInteger(-42, IntegerType::uint32));
|
||||
$this->assertSame(2147483648, Number::constrainInteger(-2147483646, IntegerType::uint32));
|
||||
$this->assertSame(2147483647, Number::constrainInteger(-2147483647, IntegerType::uint32));
|
||||
$this->assertSame(2147483646, Number::constrainInteger(-2147483648, IntegerType::uint32));
|
||||
$this->assertSame(2147483645, Number::constrainInteger(-2147483649, IntegerType::uint32));
|
||||
}
|
||||
|
||||
public function testNumberAsUnsignedValueExceedsMaxUnsignedValue()
|
||||
{
|
||||
$this->expectException(\InvalidArgumentException::class);
|
||||
|
||||
// Exceeds the maximum representable value for a 32-bit unsigned integer
|
||||
Number::unsignedAsSigned(4294967296, 32);
|
||||
// Exceeds the maximum representable value for a 16-bit unsigned integer
|
||||
Number::constrainInteger(4294967296, IntegerType::int16);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user