2018-10-05 06:26:05 +02:00
|
|
|
<?php
|
2020-09-14 13:11:46 +02:00
|
|
|
/**
|
|
|
|
* Invoice Ninja (https://invoiceninja.com).
|
|
|
|
*
|
|
|
|
* @link https://github.com/invoiceninja/invoiceninja source repository
|
|
|
|
*
|
2021-01-03 22:54:54 +01:00
|
|
|
* @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
|
2020-09-14 13:11:46 +02:00
|
|
|
*
|
2022-06-21 11:57:17 +02:00
|
|
|
* @license https://www.elastic.co/licensing/elastic-license
|
2020-09-14 13:11:46 +02:00
|
|
|
*/
|
2022-06-21 11:57:17 +02:00
|
|
|
|
2018-10-05 06:26:05 +02:00
|
|
|
namespace Tests\Unit;
|
|
|
|
|
2019-08-28 04:36:53 +02:00
|
|
|
use App\Utils\Number;
|
2018-10-05 06:26:05 +02:00
|
|
|
use Tests\TestCase;
|
|
|
|
|
2018-10-08 11:38:45 +02:00
|
|
|
/**
|
|
|
|
* @test
|
2019-08-28 04:36:53 +02:00
|
|
|
* @covers App\Utils\Number
|
2018-10-08 11:38:45 +02:00
|
|
|
*/
|
2018-10-05 06:26:05 +02:00
|
|
|
class NumberTest extends TestCase
|
|
|
|
{
|
2022-08-16 00:02:48 +02:00
|
|
|
public function testFloatPrecision()
|
|
|
|
{
|
|
|
|
$value = 1.1;
|
|
|
|
|
|
|
|
$precision = (int) strpos(strrev($value), ".");
|
|
|
|
|
|
|
|
$result = round($value, $precision);
|
|
|
|
|
|
|
|
$this->assertEquals(1.1, $result);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public function testFloatPrecision1()
|
|
|
|
{
|
|
|
|
$value = "1.1";
|
|
|
|
|
|
|
|
$precision = (int) strpos(strrev($value), ".");
|
|
|
|
|
|
|
|
$result = round($value, $precision);
|
|
|
|
|
|
|
|
$this->assertEquals(1.1, $result);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public function testFloatPrecision2()
|
|
|
|
{
|
|
|
|
$value = 9.975;
|
|
|
|
|
|
|
|
$precision = (int) strpos(strrev($value), ".");
|
|
|
|
|
|
|
|
$result = round($value, $precision);
|
|
|
|
|
|
|
|
$this->assertEquals(9.975, $result);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testFloatPrecision3()
|
|
|
|
{
|
|
|
|
$value = "9.975";
|
|
|
|
|
|
|
|
$precision = (int) strpos(strrev($value), ".");
|
|
|
|
|
|
|
|
$result = round($value, $precision);
|
|
|
|
|
|
|
|
$this->assertEquals(9.975, $result);
|
|
|
|
}
|
|
|
|
|
2018-10-05 06:26:05 +02:00
|
|
|
public function testRoundingThreeLow()
|
|
|
|
{
|
2019-08-28 04:36:53 +02:00
|
|
|
$rounded = Number::roundValue(3.144444444444, 3);
|
2018-10-05 06:26:05 +02:00
|
|
|
|
|
|
|
$this->assertEquals(3.144, $rounded);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testRoundingThreeHigh()
|
|
|
|
{
|
2019-08-28 04:36:53 +02:00
|
|
|
$rounded = Number::roundValue(3.144944444444, 3);
|
2018-10-05 06:26:05 +02:00
|
|
|
|
|
|
|
$this->assertEquals(3.145, $rounded);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testRoundingTwoLow()
|
|
|
|
{
|
2019-08-28 04:36:53 +02:00
|
|
|
$rounded = Number::roundValue(2.145);
|
2018-10-05 06:26:05 +02:00
|
|
|
|
|
|
|
$this->assertEquals(2.15, $rounded);
|
|
|
|
}
|
2020-08-26 02:47:50 +02:00
|
|
|
|
2021-08-29 23:53:51 +02:00
|
|
|
public function testParsingStringCurrency()
|
|
|
|
{
|
|
|
|
$amount = '€7,99';
|
|
|
|
|
|
|
|
$converted_amount = Number::parseFloat($amount);
|
|
|
|
|
|
|
|
$this->assertEquals(7.99, $converted_amount);
|
|
|
|
}
|
2018-10-05 06:26:05 +02:00
|
|
|
}
|