@@ -23,6 +23,7 @@ package
2323 it.should(' retrieve native Loom types for the non-collection JSON types' , get_native_types);
2424 it.should(' retrieve array elements via items[]' , get_array_elements_via_items);
2525 it.should(' retrieve object properties via keys[]' , get_object_props_via_keys);
26+ it.should(' provide an object merge utility' , merge_objects);
2627 }
2728
2829
@@ -162,5 +163,32 @@ package
162163 it.expects(json.keys[' key_object' ].keys[' object_1' ].value).toEqual(1 );
163164 it.expects(json.keys[' key_nested_multitype_object' ].keys[' nested_2' ].keys[' c' ].keys[' z' ].value).toEqual(' Z' );
164165 }
166+
167+ private static function merge_objects(): void
168+ {
169+ var jsonObject1: Dictionary.< String, Object> = {};
170+ var jsonObject2: Dictionary.< String, Object> = {};
171+
172+ jsonObject1[' key_string' ] = ' original value' ;
173+
174+ jsonObject2[' key_string' ] = ' overridden value' ;
175+ jsonObject2[' key_merged_array' ] = [" merged_array" ];
176+ jsonObject2[' key_merged_object' ] = {" merged_object" : true };
177+
178+ var j1: Json = Json.fromObject(jsonObject1);
179+ var j2: Json = Json.fromObject(jsonObject2);
180+
181+ it.asserts(j1).isNotNull();
182+ it.asserts(j2).isNotNull();
183+
184+ it.expects(j1.keys.length).toEqual(1 );
185+ it.expects(j1.keys[' key_string' ].value).toEqual(' original value' );
186+
187+ Json.merge(j1, j2);
188+ it.expects(j1.keys.length).toEqual(3 );
189+ it.expects(j1.keys[' key_string' ].value).toEqual(' overridden value' );
190+ it.expects(j1.keys[' key_merged_array' ].value).toBeA(Vector);
191+ it.expects(j1.keys[' key_merged_object' ].value).toBeA(Dictionary);
192+ }
165193 }
166194}
0 commit comments