@@ -258,7 +258,7 @@ public void Should_Overwrite_String_Array_By_Default()
258258 var mockAppOptions = new Mock < IAppOptions > ( ) ;
259259 mockAppOptions . SetupAllProperties ( ) ;
260260 var appOptions = mockAppOptions . Object ;
261-
261+ appOptions . Exclude = new string [ ] { "global" } ;
262262 var stringArrayElement = XElement . Parse ( $@ "
263263<Root>
264264 <Exclude>
@@ -278,6 +278,84 @@ public void Should_Overwrite_String_Array_By_Default()
278278 Assert . AreEqual ( new string [ ] { "1" , "2" } , appOptions . Exclude ) ;
279279 }
280280
281+ [ Test ]
282+ public void Should_Overwrite_String_Array_DefaultMerge_False ( )
283+ {
284+ var mockAppOptions = new Mock < IAppOptions > ( ) ;
285+ mockAppOptions . SetupAllProperties ( ) ;
286+ var appOptions = mockAppOptions . Object ;
287+ appOptions . Exclude = new string [ ] { "global" } ;
288+ var stringArrayElement = XElement . Parse ( $@ "
289+ <Root defaultMerge='false'>
290+ <Exclude>
291+ 1
292+ 2
293+ </Exclude>
294+ </Root>
295+ " ) ;
296+
297+ var settingsMerger = new SettingsMerger ( null ) ;
298+ var mergedSettings = settingsMerger . Merge (
299+ appOptions ,
300+ new List < XElement > { } ,
301+ stringArrayElement ) ;
302+
303+ Assert . AreSame ( appOptions , mergedSettings ) ;
304+ Assert . AreEqual ( new string [ ] { "1" , "2" } , appOptions . Exclude ) ;
305+ }
306+
307+ [ Test ]
308+ public void Should_Overwrite_String_Array_DefaultMerge_True_Property_Merge_false ( )
309+ {
310+ var mockAppOptions = new Mock < IAppOptions > ( ) ;
311+ mockAppOptions . SetupAllProperties ( ) ;
312+ var appOptions = mockAppOptions . Object ;
313+ appOptions . Exclude = new string [ ] { "global" } ;
314+ var stringArrayElement = XElement . Parse ( $@ "
315+ <Root defaultMerge='true'>
316+ <Exclude merge='false'>
317+ 1
318+ 2
319+ </Exclude>
320+ </Root>
321+ " ) ;
322+
323+ var settingsMerger = new SettingsMerger ( null ) ;
324+ var mergedSettings = settingsMerger . Merge (
325+ appOptions ,
326+ new List < XElement > { } ,
327+ stringArrayElement ) ;
328+
329+ Assert . AreSame ( appOptions , mergedSettings ) ;
330+ Assert . AreEqual ( new string [ ] { "1" , "2" } , appOptions . Exclude ) ;
331+ }
332+
333+ [ Test ]
334+ public void Should_Overwrite_String_Array_DefaultMerge_Not_Bool ( )
335+ {
336+ var mockAppOptions = new Mock < IAppOptions > ( ) ;
337+ mockAppOptions . SetupAllProperties ( ) ;
338+ var appOptions = mockAppOptions . Object ;
339+ appOptions . Exclude = new string [ ] { "global" } ;
340+ var stringArrayElement = XElement . Parse ( $@ "
341+ <Root defaultMerge='xxx'>
342+ <Exclude>
343+ 1
344+ 2
345+ </Exclude>
346+ </Root>
347+ " ) ;
348+
349+ var settingsMerger = new SettingsMerger ( null ) ;
350+ var mergedSettings = settingsMerger . Merge (
351+ appOptions ,
352+ new List < XElement > { } ,
353+ stringArrayElement ) ;
354+
355+ Assert . AreSame ( appOptions , mergedSettings ) ;
356+ Assert . AreEqual ( new string [ ] { "1" , "2" } , appOptions . Exclude ) ;
357+ }
358+
281359 [ Test ]
282360 public void Should_Merge_String_Array_If_DefaultMerge ( )
283361 {
@@ -312,7 +390,7 @@ public void Should_Merge_If_Property_Element_Merge()
312390 var appOptions = mockAppOptions . Object ;
313391 appOptions . Exclude = new string [ ] { "global" } ;
314392 var stringArrayElement = XElement . Parse ( $@ "
315- <Root>
393+ <Root defaultMerge='false' >
316394 <Exclude merge='true'>
317395 1
318396 2
0 commit comments