Skip to content

Commit

Permalink
add bcdivmod
Browse files Browse the repository at this point in the history
  • Loading branch information
Ayesh committed Sep 24, 2024
1 parent a5ae132 commit 96a8132
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 0 deletions.
19 changes: 19 additions & 0 deletions src/Php84/Php84.php
Original file line number Diff line number Diff line change
Expand Up @@ -169,4 +169,23 @@ private static function mb_internal_trim(string $regex, string $string, ?string

return mb_convert_encoding($string, $encoding, 'UTF-8');
}

public static function bcdivmod(string $num1, string $num2, ?int $scale = null): array {
if ($num2 === '0') {
throw new \DivisionByZeroError('Division by zero');
}

if (!is_numeric($num1)) {
throw new \ValueError('Argument #1 ($num1) is not well-formed');
}

if (!is_numeric($num2)) {
throw new \ValueError('Argument #2 ($num2) is not well-formed');
}

return [
\bcdiv($num1, $num2, 0),
\bcmod($num1, $num2, $scale),
];
}
}
4 changes: 4 additions & 0 deletions src/Php84/bootstrap.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,3 +60,7 @@ function mb_ltrim(string $string, ?string $characters = null, ?string $encoding
function mb_rtrim(string $string, ?string $characters = null, ?string $encoding = null): string { return p\Php84::mb_rtrim($string, $characters, $encoding); }
}
}

if (function_exists('bcdiv')) {
function bcdivmod(string $num1, string $num2, ?int $scale = null): array {return p\Php84::bcdivmod($num1, $num2, $scale); }
}
15 changes: 15 additions & 0 deletions tests/Php84/Php84Test.php
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,16 @@ public function testMbTrimCharactersEncoding()
mb_internal_encoding($old);
}

/**
* @covers \Symfony\Polyfill\Php84\Php84::bcdivmod
*
* @dataProvider bcDivModProvider
*/
public function testBcDivMod(string $num1, string $num2, ?int $scale = null, array $expected): void
{
$this->assertSame($expected, bcdivmod($num1, $num2, $scale));
}

public static function mbTrimProvider(): iterable
{
yield ['ABC', 'ABC'];
Expand Down Expand Up @@ -319,4 +329,9 @@ public static function mbRTrimProvider(): iterable

yield ["foo\n", "foo\n", 'o'];
}

public static function bcDivModProvider(): iterable
{
yield ['10', '10', null, ['1', '0']];
}
}

0 comments on commit 96a8132

Please sign in to comment.