@@ -151,6 +151,78 @@ public void ReturnEmptyConfigWhenFileIsEmpty()
151
151
Assert . Empty ( config . AsEnumerable ( ) ) ;
152
152
}
153
153
154
+ [ Fact ]
155
+ public void ShouldMergeKeysInsideAnObject ( )
156
+ {
157
+ var yaml = @"---
158
+ defaults: &defaults
159
+ A: 1
160
+ B: 2
161
+ D:
162
+ E: 78
163
+ F: 79
164
+ mapping:
165
+ << : *defaults
166
+ A: 23
167
+ C: 99
168
+ D:
169
+ E: 56
170
+ G:
171
+ - 1
172
+ - 2" ;
173
+
174
+ var yamlConfigSrc = LoadProvider ( yaml ) ;
175
+
176
+ Assert . Equal ( "23" , yamlConfigSrc . Get ( "mapping:A" ) ) ;
177
+ Assert . Equal ( "2" , yamlConfigSrc . Get ( "mapping:B" ) ) ;
178
+ Assert . Equal ( "99" , yamlConfigSrc . Get ( "mapping:C" ) ) ;
179
+ Assert . Equal ( "56" , yamlConfigSrc . Get ( "mapping:D:E" ) ) ;
180
+ Assert . Equal ( "79" , yamlConfigSrc . Get ( "mapping:D:F" ) ) ;
181
+ Assert . Equal ( "1" , yamlConfigSrc . Get ( "mapping:D:G:0" ) ) ;
182
+ Assert . Equal ( "2" , yamlConfigSrc . Get ( "mapping:D:G:1" ) ) ;
183
+ }
184
+
185
+ [ Fact ]
186
+ public void ShouldMergeKeysInsideASequence ( )
187
+ {
188
+ var yaml = @"---
189
+ defaults: &defaults
190
+ A: 1
191
+ B: 2
192
+ D:
193
+ E: 78
194
+ F: 79
195
+ mapping:
196
+ - <<: *defaults
197
+ A: 23
198
+ C: 99
199
+ - A: 2
200
+ B: 3
201
+ D:
202
+ E: 4
203
+ F: 5
204
+ - <<: *defaults" ;
205
+
206
+ var yamlConfigSrc = LoadProvider ( yaml ) ;
207
+
208
+ Assert . Equal ( "23" , yamlConfigSrc . Get ( "mapping:0:A" ) ) ;
209
+ Assert . Equal ( "2" , yamlConfigSrc . Get ( "mapping:0:B" ) ) ;
210
+ Assert . Equal ( "99" , yamlConfigSrc . Get ( "mapping:0:C" ) ) ;
211
+ Assert . Equal ( "78" , yamlConfigSrc . Get ( "mapping:0:D:E" ) ) ;
212
+ Assert . Equal ( "79" , yamlConfigSrc . Get ( "mapping:0:D:F" ) ) ;
213
+
214
+ Assert . Equal ( "2" , yamlConfigSrc . Get ( "mapping:1:A" ) ) ;
215
+ Assert . Equal ( "3" , yamlConfigSrc . Get ( "mapping:1:B" ) ) ;
216
+ Assert . Throws < InvalidOperationException > ( ( ) => yamlConfigSrc . Get ( "mapping:1:C" ) ) ;
217
+ Assert . Equal ( "4" , yamlConfigSrc . Get ( "mapping:1:D:E" ) ) ;
218
+ Assert . Equal ( "5" , yamlConfigSrc . Get ( "mapping:1:D:F" ) ) ;
219
+
220
+ Assert . Equal ( "1" , yamlConfigSrc . Get ( "mapping:2:A" ) ) ;
221
+ Assert . Equal ( "2" , yamlConfigSrc . Get ( "mapping:2:B" ) ) ;
222
+ Assert . Equal ( "78" , yamlConfigSrc . Get ( "mapping:2:D:E" ) ) ;
223
+ Assert . Equal ( "79" , yamlConfigSrc . Get ( "mapping:2:D:F" ) ) ;
224
+ }
225
+
154
226
[ Fact ]
155
227
public void ThrowExceptionWhenUnexpectedFirstCharacterInScalarValue ( )
156
228
{
0 commit comments