Skip to content

Commit 43158d3

Browse files
shmaxbighappyface
authored andcommitted
handle negative integers (#325)
1 parent d44cac0 commit 43158d3

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

src/JsonSchema/Constraints/ObjectConstraint.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ protected function toNumber($value)
184184

185185
protected function toInteger($value)
186186
{
187-
if(ctype_digit ($value)) {
187+
if(is_numeric($value) && (int)$value == $value) {
188188
return (int)$value; // cast to number
189189
}
190190

tests/Constraints/CoerciveTest.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,23 @@ public function testValidCoerceCases($input, $schema, $errors = array())
5656

5757
$this->assertTrue(gettype($value->number) == "double");
5858
$this->assertTrue(gettype($value->integer) == "integer");
59+
$this->assertTrue(gettype($value->negativeInteger) == "integer");
5960
$this->assertTrue(gettype($value->boolean) == "boolean");
6061

62+
$this->assertTrue($value->number === 1.5);
63+
$this->assertTrue($value->integer === 1);
64+
$this->assertTrue($value->negativeInteger === -2);
65+
$this->assertTrue($value->boolean === true);
66+
6167
$this->assertTrue(gettype($value->multitype1) == "boolean");
6268
$this->assertTrue(gettype($value->multitype2) == "double");
6369
$this->assertTrue(gettype($value->multitype3) == "integer");
6470

71+
$this->assertTrue($value->number === 1.5);
72+
$this->assertTrue($value->integer === 1);
73+
$this->assertTrue($value->negativeInteger === -2);
74+
$this->assertTrue($value->boolean === true);
75+
6576
$this->assertTrue($validator->isValid(), print_r($validator->getErrors(), true));
6677
}
6778

@@ -111,6 +122,7 @@ public function getValidCoerceTests()
111122
"string":"string test",
112123
"number":"1.5",
113124
"integer":"1",
125+
"negativeInteger":"-2",
114126
"boolean":"true",
115127
"object":{},
116128
"array":[],
@@ -132,6 +144,7 @@ public function getValidCoerceTests()
132144
"string":{"type":"string"},
133145
"number":{"type":"number"},
134146
"integer":{"type":"integer"},
147+
"negativeInteger":{"type":"integer"},
135148
"boolean":{"type":"boolean"},
136149
"object":{"type":"object"},
137150
"array":{"type":"array"},

0 commit comments

Comments
 (0)