Skip to content

Commit c3e11be

Browse files
authored
fix(NumberConstraint): force positive value on first arg (#316)
Resolves #315 - `multipleOf` is inconsistent, fails for negative numbers
1 parent d701d8f commit c3e11be

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

src/JsonSchema/Constraints/NumberConstraint.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ public function check($element, $schema = null, JsonPointer $path = null, $i = n
6969

7070
private function fmod($number1, $number2)
7171
{
72+
$number1 = abs($number1);
7273
$modulus = fmod($number1, $number2);
7374
$precision = abs(0.0000000001);
7475
$diff = (float)($modulus - $number2);

tests/Constraints/NumberAndIntegerTypesTest.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,19 @@ public function getValidTests()
9595
"type": "object",
9696
"properties": {
9797
"number": {"type": "number"}
98+
99+
}
100+
}'
101+
),
102+
array(
103+
'{"number": -49.89}',
104+
'{
105+
"type": "object",
106+
"properties": {
107+
"number": {
108+
"type": "number",
109+
"multipleOf": 0.01
110+
}
98111
}
99112
}'
100113
)

0 commit comments

Comments
 (0)