public void Should_merge_with_different_options(ArrayMergeStyle style)
        {
            var sets1 = Array(null, "x1", "x2", "x3");
            var sets2 = Array(null, "x1", "x4", "x5");

            var merge = sets1.Merge(sets2, new SettingsMergeOptions {
                ArrayMergeStyle = style
            });

            switch (style)
            {
            case ArrayMergeStyle.Replace:
            case ArrayMergeStyle.PerElement:
                merge.Children.Select(c => c.Value).Should().Equal("x1", "x4", "x5");
                break;

            case ArrayMergeStyle.Concat:
                merge.Children.Select(c => c.Value).Should().Equal("x1", "x2", "x3", "x1", "x4", "x5");
                break;

            case ArrayMergeStyle.Union:
                merge.Children.Select(c => c.Value).Should().Equal("x1", "x2", "x3", "x4", "x5");
                break;
            }
        }
        public void Merge_with_null_should_keep_non_null_node([Values] ArrayMergeStyle mergeStyle)
        {
            var node = Array("a", "b", "c");

            node.Merge(null, new SettingsMergeOptions {
                ArrayMergeStyle = mergeStyle
            }).Should().BeSameAs(node);
        }