tests/unit/number_normalize_decimal.phpt
<?php
use \Tester\Assert;
use \Smuuf\Primi\Helpers\Func;
require __DIR__ . '/../bootstrap.php';
//
// Numeric string detection.
//
Assert::same('0', Func::normalize_decimal('0'));
Assert::same('0', Func::normalize_decimal('0.0'));
Assert::same('0', Func::normalize_decimal('00.0'));
Assert::same('0', Func::normalize_decimal('00000.0'));
Assert::same('0.1', Func::normalize_decimal('0.1'));
Assert::same('0.1', Func::normalize_decimal('0.10'));
Assert::same('0.1', Func::normalize_decimal('0.10000'));
Assert::same('0.1', Func::normalize_decimal('00.1'));
Assert::same('0.1', Func::normalize_decimal('000.10'));
Assert::same('0.1', Func::normalize_decimal('0000.10000'));
Assert::same('1.1', Func::normalize_decimal('001.1'));
Assert::same('1.1', Func::normalize_decimal('0001.10'));
Assert::same('1.1', Func::normalize_decimal('00001.10000'));
Assert::same('5001.1', Func::normalize_decimal('5001.1'));
Assert::same('5001.1', Func::normalize_decimal('005001.10'));
Assert::same('5001.1', Func::normalize_decimal('0000005001.10000'));
Assert::same('5001.10000001', Func::normalize_decimal('5001.10000001'));
Assert::same('5001.10000001', Func::normalize_decimal('005001.10000001'));
Assert::same('5001.10000001', Func::normalize_decimal('0000005001.10000001000'));
Assert::same('100.01', Func::normalize_decimal('+100.0100'));
Assert::same('100.01', Func::normalize_decimal('+00100.0100'));
Assert::same('-100.01', Func::normalize_decimal('-100.0100'));
Assert::same('-100.01', Func::normalize_decimal('-00100.0100'));
//
// Very long decimals.
//
Assert::same(
'456000000000012300000',
Func::normalize_decimal('0000000000000000456000000000012300000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000')
);
Assert::same(
'456000000000012300000',
Func::normalize_decimal('000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000456000000000012300000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000')
);
Assert::same(
'456000000000012300000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001',
Func::normalize_decimal('000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000456000000000012300000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001')
);
Assert::same(
'3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000456000000000012300000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001',
Func::normalize_decimal('003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000456000000000012300000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001')
);
Assert::same(
'3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000456000000000012300000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001',
Func::normalize_decimal('0000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000456000000000012300000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000')
);