@@ -48,31 +48,75 @@ public function testValidCoerceCases($input, $schema, $errors = array())
48
48
$ validator = new Validator (new Factory ($ schemaStorage , null , $ checkMode ));
49
49
$ value = json_decode ($ input );
50
50
51
+ $ this ->assertTrue (gettype ($ value ->string ) == 'string ' );
52
+ $ this ->assertTrue (gettype ($ value ->numberString ) == 'integer ' );
53
+ $ this ->assertTrue (gettype ($ value ->boolString ) == 'boolean ' );
54
+ $ this ->assertTrue (gettype ($ value ->boolFalseString ) == 'boolean ' );
55
+ $ this ->assertTrue (gettype ($ value ->nullString ) == 'NULL ' );
56
+ $ this ->assertTrue (gettype ($ value ->arrayString ) == 'array ' );
51
57
$ this ->assertTrue (gettype ($ value ->number ) == 'string ' );
58
+ $ this ->assertTrue (gettype ($ value ->boolNumber ) == 'boolean ' );
59
+ $ this ->assertTrue (gettype ($ value ->nullNumber ) == 'NULL ' );
60
+ $ this ->assertTrue (gettype ($ value ->arrayNumber ) == 'array ' );
52
61
$ this ->assertTrue (gettype ($ value ->integer ) == 'string ' );
62
+ $ this ->assertTrue (gettype ($ value ->negativeInteger ) == 'string ' );
53
63
$ this ->assertTrue (gettype ($ value ->boolean ) == 'string ' );
64
+ $ this ->assertTrue (gettype ($ value ->numberBoolean ) == 'integer ' );
65
+ $ this ->assertTrue (gettype ($ value ->nullBoolean ) == 'NULL ' );
66
+ $ this ->assertTrue (gettype ($ value ->arrayBoolean ) == 'array ' );
67
+ $ this ->assertTrue (gettype ($ value ->array ) == 'string ' );
68
+ $ this ->assertTrue (gettype ($ value ->numberArray ) == 'integer ' );
69
+ $ this ->assertTrue (gettype ($ value ->boolArray ) == 'boolean ' );
70
+ $ this ->assertTrue (gettype ($ value ->nullArray ) == 'NULL ' );
54
71
55
72
$ validator ->validate ($ value , $ schema , $ checkMode );
56
73
74
+ $ this ->assertTrue (gettype ($ value ->string ) == 'string ' );
75
+ $ this ->assertTrue (gettype ($ value ->numberString ) == 'string ' );
76
+ $ this ->assertTrue (gettype ($ value ->boolString ) == 'string ' );
77
+ $ this ->assertTrue (gettype ($ value ->boolFalseString ) == 'string ' );
78
+ $ this ->assertTrue (gettype ($ value ->nullString ) == 'string ' );
79
+ $ this ->assertTrue (gettype ($ value ->arrayString ) == 'string ' );
57
80
$ this ->assertTrue (gettype ($ value ->number ) == 'double ' );
81
+ $ this ->assertTrue (gettype ($ value ->boolNumber ) == 'integer ' );
82
+ $ this ->assertTrue (gettype ($ value ->nullNumber ) == 'integer ' );
83
+ $ this ->assertTrue (gettype ($ value ->arrayNumber ) == 'double ' );
58
84
$ this ->assertTrue (gettype ($ value ->integer ) == 'integer ' );
59
85
$ this ->assertTrue (gettype ($ value ->negativeInteger ) == 'integer ' );
60
86
$ this ->assertTrue (gettype ($ value ->boolean ) == 'boolean ' );
61
-
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 );
87
+ $ this ->assertTrue (gettype ($ value ->numberBoolean ) == 'boolean ' );
88
+ $ this ->assertTrue (gettype ($ value ->nullBoolean ) == 'boolean ' );
89
+ $ this ->assertTrue (gettype ($ value ->arrayBoolean ) == 'boolean ' );
90
+ $ this ->assertTrue (gettype ($ value ->array ) == 'array ' );
91
+ $ this ->assertTrue (gettype ($ value ->numberArray ) == 'array ' );
92
+ $ this ->assertTrue (gettype ($ value ->boolArray ) == 'array ' );
93
+ $ this ->assertTrue (gettype ($ value ->nullArray ) == 'array ' );
66
94
67
95
$ this ->assertTrue (gettype ($ value ->multitype1 ) == 'boolean ' );
68
96
$ this ->assertTrue (gettype ($ value ->multitype2 ) == 'double ' );
69
97
$ this ->assertTrue (gettype ($ value ->multitype3 ) == 'integer ' );
70
98
$ this ->assertTrue (gettype ($ value ->multitype4 ) == 'string ' );
71
99
100
+ $ this ->assertTrue ($ value ->string === 'string test ' );
101
+ $ this ->assertTrue ($ value ->numberString === '45 ' );
102
+ $ this ->assertTrue ($ value ->boolString === 'true ' );
103
+ $ this ->assertTrue ($ value ->boolFalseString === 'false ' );
104
+ $ this ->assertTrue ($ value ->nullString === '' );
105
+ $ this ->assertTrue ($ value ->arrayString === '45 ' );
72
106
$ this ->assertTrue ($ value ->number === 1.5 );
107
+ $ this ->assertTrue ($ value ->boolNumber === 1 );
108
+ $ this ->assertTrue ($ value ->nullNumber === 0 );
109
+ $ this ->assertTrue ($ value ->arrayNumber === 1.5 );
73
110
$ this ->assertTrue ($ value ->integer === 1 );
74
111
$ this ->assertTrue ($ value ->negativeInteger === -2 );
75
112
$ this ->assertTrue ($ value ->boolean === true );
113
+ $ this ->assertTrue ($ value ->numberBoolean === true );
114
+ $ this ->assertTrue ($ value ->nullBoolean === false );
115
+ $ this ->assertTrue ($ value ->arrayBoolean === true );
116
+ $ this ->assertTrue ($ value ->array === array ('string ' ));
117
+ $ this ->assertTrue ($ value ->numberArray === array (45 ));
118
+ $ this ->assertTrue ($ value ->boolArray === array (true ));
119
+ $ this ->assertTrue ($ value ->nullArray === array (null ));
76
120
77
121
$ this ->assertTrue ($ validator ->isValid (), print_r ($ validator ->getErrors (), true ));
78
122
}
@@ -123,12 +167,26 @@ public function getValidCoerceTests()
123
167
array (
124
168
'{
125
169
"string":"string test",
170
+ "numberString":45,
171
+ "boolString":true,
172
+ "boolFalseString":false,
173
+ "nullString":null,
174
+ "arrayString":[45],
126
175
"number":"1.5",
176
+ "boolNumber":true,
177
+ "nullNumber":null,
178
+ "arrayNumber":["1.5"],
127
179
"integer":"1",
128
180
"negativeInteger":"-2",
129
181
"boolean":"true",
182
+ "numberBoolean":1,
183
+ "nullBoolean":null,
184
+ "arrayBoolean":["true"],
130
185
"object":{},
131
- "array":[],
186
+ "array":"string",
187
+ "numberArray":45,
188
+ "boolArray":true,
189
+ "nullArray":null,
132
190
"null":null,
133
191
"any": "string",
134
192
"allOf": "1",
@@ -149,12 +207,26 @@ public function getValidCoerceTests()
149
207
"type":"object",
150
208
"properties":{
151
209
"string":{"type":"string"},
210
+ "numberString":{"type":"string"},
211
+ "boolString":{"type":"string"},
212
+ "boolFalseString":{"type":"string"},
213
+ "nullString":{"type":"string"},
214
+ "arrayString":{"type":"string"},
152
215
"number":{"type":"number"},
216
+ "boolNumber":{"type":"number"},
217
+ "nullNumber":{"type":"number"},
218
+ "arrayNumber":{"type":"number"},
153
219
"integer":{"type":"integer"},
154
220
"negativeInteger":{"type":"integer"},
155
221
"boolean":{"type":"boolean"},
222
+ "numberBoolean":{"type":"boolean"},
223
+ "nullBoolean":{"type":"boolean"},
224
+ "arrayBoolean":{"type":"boolean"},
156
225
"object":{"type":"object"},
157
226
"array":{"type":"array"},
227
+ "numberArray":{"type":"array"},
228
+ "boolArray":{"type":"array"},
229
+ "nullArray":{"type":"array"},
158
230
"null":{"type":"null"},
159
231
"any": {"type":"any"},
160
232
"allOf" : {"allOf":[{
@@ -195,9 +267,11 @@ public function getValidCoerceTests()
195
267
public function getInvalidCoerceTests ()
196
268
{
197
269
return array (
198
- array (
270
+ array ( // #0
199
271
'{
200
- "string":null
272
+ "string":{
273
+ "I am":"an object!"
274
+ }
201
275
} ' ,
202
276
'{
203
277
"type":"object",
@@ -207,7 +281,7 @@ public function getInvalidCoerceTests()
207
281
"additionalProperties":false
208
282
} ' ,
209
283
),
210
- array (
284
+ array ( // #1
211
285
'{
212
286
"number":"five"
213
287
} ' ,
@@ -219,7 +293,7 @@ public function getInvalidCoerceTests()
219
293
"additionalProperties":false
220
294
} ' ,
221
295
),
222
- array (
296
+ array ( // #2
223
297
'{
224
298
"integer":"5.2"
225
299
} ' ,
@@ -231,7 +305,7 @@ public function getInvalidCoerceTests()
231
305
"additionalProperties":false
232
306
} ' ,
233
307
),
234
- array (
308
+ array ( // #3
235
309
'{
236
310
"boolean":"0"
237
311
} ' ,
@@ -243,7 +317,7 @@ public function getInvalidCoerceTests()
243
317
"additionalProperties":false
244
318
} ' ,
245
319
),
246
- array (
320
+ array ( // #4
247
321
'{
248
322
"object":null
249
323
} ' ,
@@ -255,9 +329,11 @@ public function getInvalidCoerceTests()
255
329
"additionalProperties":false
256
330
} ' ,
257
331
),
258
- array (
332
+ array ( // #5
259
333
'{
260
- "array":null
334
+ "array":{
335
+ "string":"string"
336
+ }
261
337
} ' ,
262
338
'{
263
339
"type":"object",
@@ -267,7 +343,7 @@ public function getInvalidCoerceTests()
267
343
"additionalProperties":false
268
344
} ' ,
269
345
),
270
- array (
346
+ array ( // #6
271
347
'{
272
348
"null":1
273
349
} ' ,
@@ -279,6 +355,18 @@ public function getInvalidCoerceTests()
279
355
"additionalProperties":false
280
356
} ' ,
281
357
),
358
+ array ( // #7
359
+ '{
360
+ "integer":"5f"
361
+ } ' ,
362
+ '{
363
+ "type":"object",
364
+ "properties": {
365
+ "integer":{"type":"integer"}
366
+ },
367
+ "additionalProperties":false
368
+ } ' ,
369
+ ),
282
370
);
283
371
}
284
372
}
0 commit comments