Skip to content

Commit 4c90d45

Browse files
committed
Put back the assertNumberFormat() calls.
1 parent c7cc36b commit 4c90d45

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

src/Calculator.php

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ final class Calculator
2626
*/
2727
public static function add(string $first_number, string $second_number, int $scale = 6): string
2828
{
29+
self::assertNumberFormat($first_number);
30+
self::assertNumberFormat($second_number);
2931
$result = bcadd($first_number, $second_number, $scale);
3032

3133
return self::trim($result);
@@ -44,6 +46,8 @@ public static function add(string $first_number, string $second_number, int $sca
4446
*/
4547
public static function subtract(string $first_number, string $second_number, int $scale = 6): string
4648
{
49+
self::assertNumberFormat($first_number);
50+
self::assertNumberFormat($second_number);
4751
$result = bcsub($first_number, $second_number, $scale);
4852

4953
return self::trim($result);
@@ -62,6 +66,8 @@ public static function subtract(string $first_number, string $second_number, int
6266
*/
6367
public static function multiply(string $first_number, string $second_number, int $scale = 6): string
6468
{
69+
self::assertNumberFormat($first_number);
70+
self::assertNumberFormat($second_number);
6571
$result = bcmul($first_number, $second_number, $scale);
6672

6773
return self::trim($result);
@@ -80,6 +86,8 @@ public static function multiply(string $first_number, string $second_number, int
8086
*/
8187
public static function divide(string $first_number, string $second_number, int $scale = 6): string
8288
{
89+
self::assertNumberFormat($first_number);
90+
self::assertNumberFormat($second_number);
8391
$result = bcdiv($first_number, $second_number, $scale);
8492

8593
return self::trim($result);
@@ -139,6 +147,7 @@ public static function floor(string $number): string
139147
*/
140148
public static function round(string $number, int $precision = 0, int $mode = PHP_ROUND_HALF_UP): string
141149
{
150+
self::assertNumberFormat($number);
142151
if (!is_numeric($precision) || $precision < 0) {
143152
throw new \InvalidArgumentException('The provided precision should be a positive number');
144153
}
@@ -154,7 +163,7 @@ public static function round(string $number, int $precision = 0, int $mode = PHP
154163
// The rounding direction is based on the first decimal after $precision.
155164
$number_parts = explode('.', $number);
156165
$decimals = !empty($number_parts[1]) ? $number_parts[1] : '0';
157-
$relevant_decimal = isset($decimals[$precision]) ? $decimals[$precision] : 0;
166+
$relevant_decimal = $decimals[$precision] ?? 0;
158167
if ($relevant_decimal < 5) {
159168
$number = $rounded_down;
160169
} elseif ($relevant_decimal == 5) {
@@ -190,6 +199,8 @@ public static function round(string $number, int $precision = 0, int $mode = PHP
190199
*/
191200
public static function compare(string $first_number, string $second_number, int $scale = 6): int
192201
{
202+
self::assertNumberFormat($first_number);
203+
self::assertNumberFormat($second_number);
193204
return bccomp($first_number, $second_number, $scale);
194205
}
195206

@@ -216,4 +227,18 @@ public static function trim(string $number): string
216227
return $number;
217228
}
218229

230+
/**
231+
* Assert that the given number is a numeric string value.
232+
*
233+
* @param string $number The number to check.
234+
*
235+
* @throws \InvalidArgumentException
236+
*/
237+
public static function assertNumberFormat(string $number)
238+
{
239+
if (!is_numeric($number)) {
240+
throw new \InvalidArgumentException(sprintf('The provided value "%s" is not a numeric value.', $number));
241+
}
242+
}
243+
219244
}

0 commit comments

Comments
 (0)