|
7 | 7 | * file that was distributed with this source code. |
8 | 8 | */ |
9 | 9 |
|
10 | | -namespace JsonSchema\Tests; |
| 10 | +namespace JsonSchema; |
11 | 11 |
|
12 | 12 | class RefResolverTest extends \PHPUnit_Framework_TestCase |
13 | 13 | { |
@@ -184,4 +184,71 @@ public function refProvider() { |
184 | 184 | ), |
185 | 185 | ); |
186 | 186 | } |
| 187 | + |
| 188 | + public function testMerge() { |
| 189 | + $a = (object) array('a' => '1'); |
| 190 | + $b = new \stdClass; |
| 191 | + RefResolver::merge($a, $b); |
| 192 | + $this->assertEquals((object)array('a'=>'1'), $a); |
| 193 | + |
| 194 | + $a = (object) array('a' => '1'); |
| 195 | + $b = (object) array('a' => '2'); |
| 196 | + RefResolver::merge($a, $b); |
| 197 | + $this->assertEquals((object)array('a'=>'1'), $a); |
| 198 | + |
| 199 | + $a = (object) array('a' => array(1,2,3)); |
| 200 | + $b = (object) array('a' => array(4)); |
| 201 | + RefResolver::merge($a, $b); |
| 202 | + $this->assertEquals((object)array('a'=>array(4,1,2,3)), $a); // $b values are prependet :( not nice but no issue |
| 203 | + |
| 204 | + $a = new \stdClass; |
| 205 | + $b = (object) array('a' => array(4)); |
| 206 | + RefResolver::merge($a, $b); |
| 207 | + $this->assertEquals((object)array('a'=>array(4)), $a); |
| 208 | + |
| 209 | + $a = (object) array('a' => array(1,2,3)); |
| 210 | + $b = new \stdClass; |
| 211 | + RefResolver::merge($a, $b); |
| 212 | + $this->assertEquals((object)array('a'=>array(1,2,3)), $a); |
| 213 | + |
| 214 | + $a = (object) array('a' => 'in a'); |
| 215 | + $b = (object) array('b' => 'from b'); |
| 216 | + RefResolver::merge($a, $b); |
| 217 | + $this->assertEquals((object)array('a' => 'in a', 'b' => 'from b'), $a); |
| 218 | + |
| 219 | + $a = null; |
| 220 | + $b = (object) array('b' => 'from b'); |
| 221 | + RefResolver::merge($a, $b); |
| 222 | + $this->assertEquals(null, $a); |
| 223 | + |
| 224 | + $a = (object) array('a' => 'in a'); |
| 225 | + $b = null; |
| 226 | + RefResolver::merge($a, $b); |
| 227 | + $this->assertEquals((object) array('a' => 'in a'), $a); |
| 228 | + |
| 229 | + $a = (object) array('a' => '1', 'c'=>(object)array('d'=>'from a')); |
| 230 | + $b = (object) array('a' => '1', 'c'=>(object)array('d'=>'from b')); |
| 231 | + RefResolver::merge($a, $b); |
| 232 | + $this->assertEquals((object) array('a' => '1', 'c'=>(object)array('d'=>'from a')), $a); |
| 233 | + |
| 234 | + $a = (object) array('a' => '1'); |
| 235 | + $b = (object) array('a' => '1', 'c'=>(object)array('d'=>'from b')); |
| 236 | + RefResolver::merge($a, $b); |
| 237 | + $this->assertEquals((object) array('a' => '1', 'c'=>(object)array('d'=>'from b')), $a); |
| 238 | + |
| 239 | + $a = (object) array('a' => '1'); |
| 240 | + $b = (object) array('a' => '1', 'c'=>'from b'); |
| 241 | + RefResolver::merge($a, $b); |
| 242 | + $this->assertEquals((object) array('a' => '1', 'c'=>'from b'), $a); |
| 243 | + |
| 244 | + $a = (object) array('a' => '1', 'c'=>'from a'); |
| 245 | + $b = (object) array('a' => '1'); |
| 246 | + RefResolver::merge($a, $b); |
| 247 | + $this->assertEquals((object) array('a' => '1', 'c'=>'from a'), $a); |
| 248 | + |
| 249 | + $a = (object) array('fields' => array('1 from a', '2 from a')); |
| 250 | + $b = (object) array('fields' => array('1 from b', '2 from b')); |
| 251 | + RefResolver::merge($a, $b); |
| 252 | + $this->assertEquals((object) array('fields' => array('1 from b', '2 from b', '1 from a', '2 from a')), $a); |
| 253 | + } |
187 | 254 | } |
0 commit comments