public void DeepMerge_DifferentDocTypes_ThrowsException()
    {
        var emptyDoc      = new ComposedDocNode(DocNodeType.List);
        var otherEmptyDoc = new ComposedDocNode(DocNodeType.Dictionary);

        Assert.That(() => DocNode.DeepMerge(emptyDoc, otherEmptyDoc),
                    Throws.TypeOf <ArgumentException>());
    }
    public void DeepMerge_DictsWithIdenticallyKeyedLists_ListsCombined()
    {
        var doc      = CreateDictNode(Pair("A", CreateListNode("foo", "bar")));
        var otherDoc = CreateDictNode(Pair("A", CreateListNode("wiggle", "waggle")));

        var merged = DocNode.DeepMerge(doc, otherDoc);

        var ideal = CreateDictNode(Pair("A", CreateListNode("foo", "bar", "wiggle", "waggle")));

        Assert.AreEqual(ideal, merged);
    }
    public void DeepMerge_DictsWithSameKeys_OtherKeysPreferred()
    {
        var doc      = CreateDictNode(Pair("A", "1"), Pair("B", "2"));
        var otherDoc = CreateDictNode(Pair("A", "9"), Pair("Y", "10"));

        var merged = DocNode.DeepMerge(doc, otherDoc);

        var ideal = CreateDictNode(Pair("A", "9"), Pair("B", "2"), Pair("Y", "10"));

        Assert.AreEqual(ideal, merged);
    }
    public void DeepMerge_DictsWithDifferentKeys_KeysCombined()
    {
        var doc      = CreateDictNode(Pair("A", "1"), Pair("B", "2"));
        var otherDoc = CreateDictNode(Pair("X", "9"), Pair("Y", "10"));

        var merged = DocNode.DeepMerge(doc, otherDoc);

        var ideal = CreateDictNode(Pair("A", "1"), Pair("B", "2"), Pair("X", "9"), Pair("Y", "10"));

        Assert.AreEqual(ideal, merged);
    }
    public void DeepMerge_Lists_ListsMerged()
    {
        var doc      = CreateListNode("foo", "bar");
        var otherDoc = CreateListNode("wiggle", "waggle");

        var merged = DocNode.DeepMerge(doc, otherDoc);

        var ideal = CreateListNode("foo", "bar", "wiggle", "waggle");

        Assert.AreEqual(ideal, merged);
    }
    public void DeepMerge_ScalarDocs_ReturnsSecondScalar()
    {
        var emptyDoc      = CreateScalarNode("foo");
        var otherEmptyDoc = CreateScalarNode("bar");

        var merged = DocNode.DeepMerge(emptyDoc, otherEmptyDoc);

        var ideal = CreateScalarNode("bar");

        Assert.AreEqual(ideal, merged);
    }
    public void DeepMerge_EmptyListDocs_ReturnsEmptyListDoc()
    {
        var emptyDoc      = new ComposedDocNode(DocNodeType.List);
        var otherEmptyDoc = new ComposedDocNode(DocNodeType.List);

        var merged = DocNode.DeepMerge(emptyDoc, otherEmptyDoc);

        var idealEmpty = new ComposedDocNode(DocNodeType.List);

        Assert.AreEqual(idealEmpty, merged);
    }
    public void DeepMerge_EmptyListDocs_ReturnsEmptyListDoc()
    {
        var emptyDoc      = new ComposedDocNode(DocNodeType.List, sourceInformation: "e1");
        var otherEmptyDoc = new ComposedDocNode(DocNodeType.List, sourceInformation: "e2");

        var merged = DocNode.DeepMerge(emptyDoc, otherEmptyDoc);

        var idealEmpty = new ComposedDocNode(DocNodeType.List);

        Assert.AreEqual(idealEmpty, merged);
        Assert.AreEqual("Combination of: [e1, e2]", merged.SourceInformation);
    }
    public void DeepMerge_EmptyDictDocs_ReturnsEmptyDictDoc()
    {
        var emptyDoc      = new ComposedDocNode(DocNodeType.Dictionary);
        var otherEmptyDoc = new ComposedDocNode(DocNodeType.Dictionary);

        var merged = DocNode.DeepMerge(emptyDoc, otherEmptyDoc);

        var idealEmpty = new ComposedDocNode(DocNodeType.Dictionary);

        Assert.AreEqual(idealEmpty, merged);
        Assert.AreEqual(merged.SourceInformation, "Merging of: [ComposedDocNode Dictionary, ComposedDocNode Dictionary]");
    }
Example #10
0
    public void DeepMerge_DictsWithIdenticallyKeyedDicts_DictsCombined()
    {
        var doc      = CreateDictNode(Pair("favourite", CreateDictNode(Pair("films", CreateListNode("die hard")))));
        var otherDoc =
            CreateDictNode(Pair("favourite", CreateDictNode(Pair("films", CreateListNode("fury road")))));

        var merged = DocNode.DeepMerge(doc, otherDoc);

        var ideal = CreateDictNode(Pair("favourite",
                                        CreateDictNode(Pair("films", CreateListNode("die hard",
                                                                                    "fury road")))));

        Assert.AreEqual(ideal, merged);
    }