diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 6f5ecc7711b..bba253bcaf8 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -11369,7 +11369,7 @@ function isVisibleToUserType($type_user, &$menuentry, &$listofmodulesforexternal */ function roundUpToNextMultiple($n, $x = 5) { - $result = (ceil($n) % $x === 0) ? ceil($n) : round(($n + $x / 2) / $x) * $x; + $result = (ceil($n) % $x === 0) ? ceil($n) : (round(($n + $x / 2) / $x) * $x); return (int) $result; } diff --git a/test/phpunit/FunctionsLibTest.php b/test/phpunit/FunctionsLibTest.php index ce34604cc32..b28e945e28d 100644 --- a/test/phpunit/FunctionsLibTest.php +++ b/test/phpunit/FunctionsLibTest.php @@ -1797,4 +1797,29 @@ class FunctionsLibTest extends PHPUnit\Framework\TestCase return true; } + + + /** + * testRoundUpToNextMultiple + * + * @return void; + */ + public function testRoundUpToNextMultiple() + { + $this->assertEquals(roundUpToNextMultiple(39.5), 40); + $this->assertEquals(roundUpToNextMultiple(40), 40); + $this->assertEquals(roundUpToNextMultiple(40.4), 45); + $this->assertEquals(roundUpToNextMultiple(40.5), 45); + $this->assertEquals(roundUpToNextMultiple(44.5), 45); + + $this->assertEquals(roundUpToNextMultiple(39.5, 10), 40); + $this->assertEquals(roundUpToNextMultiple(40, 10), 40); + $this->assertEquals(roundUpToNextMultiple(40.5, 10), 50); + $this->assertEquals(roundUpToNextMultiple(44.5, 10), 50); + + $this->assertEquals(roundUpToNextMultiple(39.5, 6), 42); + $this->assertEquals(roundUpToNextMultiple(40, 6), 42); + $this->assertEquals(roundUpToNextMultiple(40.5, 6), 42); + $this->assertEquals(roundUpToNextMultiple(44.5, 6), 48); + } }