Added MiniYAML merging unit tests
MockString: CollectionOfStrings: StringA: A MockString: CollectionOfStrings: StringB: B MockString: -CollectionOfStrings: MockString: CollectionOfStrings: StringC: C MockString: CollectionOfStrings: StringD: D MockString: CollectionOfStrings: StringA: A StringB: B StringC: C StringD: D -CollectionOfStrings: MockString: CollectionOfStrings: StringA: A StringB: B -CollectionOfStrings: CollectionOfStrings: StringC: C StringD: D
This commit is contained in:
@@ -104,6 +104,48 @@ Test:
|
|||||||
Assert.IsFalse(result.Any(n => n.Key == "MockA2"), "Node should not have the MockA2 child, but does.");
|
Assert.IsFalse(result.Any(n => n.Key == "MockA2"), "Node should not have the MockA2 child, but does.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[TestCase(TestName = "Child can be immediately removed")]
|
||||||
|
public void ChildCanBeImmediatelyRemoved()
|
||||||
|
{
|
||||||
|
var baseYaml = @"
|
||||||
|
^BaseA:
|
||||||
|
MockString:
|
||||||
|
AString: Base
|
||||||
|
Test:
|
||||||
|
Inherits: ^BaseA
|
||||||
|
MockString:
|
||||||
|
AString: Override
|
||||||
|
-MockString:
|
||||||
|
";
|
||||||
|
|
||||||
|
var result = MiniYaml.Merge(new[] { baseYaml }.Select(s => MiniYaml.FromString(s, "")))
|
||||||
|
.First(n => n.Key == "Test").Value.Nodes;
|
||||||
|
|
||||||
|
Assert.IsFalse(result.Any(n => n.Key == "MockString"), "Node should not have the MockString child, but does.");
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestCase(TestName = "Child can be removed and immediately overridden")]
|
||||||
|
public void ChildCanBeRemovedAndImmediatelyOverridden()
|
||||||
|
{
|
||||||
|
var baseYaml = @"
|
||||||
|
^BaseA:
|
||||||
|
MockString:
|
||||||
|
AString: Base
|
||||||
|
Test:
|
||||||
|
Inherits: ^BaseA
|
||||||
|
-MockString:
|
||||||
|
MockString:
|
||||||
|
AString: Override
|
||||||
|
";
|
||||||
|
|
||||||
|
var result = MiniYaml.Merge(new[] { baseYaml }.Select(s => MiniYaml.FromString(s, "")))
|
||||||
|
.First(n => n.Key == "Test").Value.Nodes;
|
||||||
|
|
||||||
|
Assert.IsTrue(result.Any(n => n.Key == "MockString"), "Node should have the MockString child, but does not.");
|
||||||
|
Assert.IsTrue(result.First(n => n.Key == "MockString").Value.ToDictionary()["AString"].Value == "Override",
|
||||||
|
"MockString value has not been set with the correct override value for AString.");
|
||||||
|
}
|
||||||
|
|
||||||
[TestCase(TestName = "Child can be removed and later overridden")]
|
[TestCase(TestName = "Child can be removed and later overridden")]
|
||||||
public void ChildCanBeRemovedAndLaterOverridden()
|
public void ChildCanBeRemovedAndLaterOverridden()
|
||||||
{
|
{
|
||||||
@@ -155,6 +197,69 @@ Test:
|
|||||||
"MockString value should have been removed, but was not.");
|
"MockString value should have been removed, but was not.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[TestCase(TestName = "Child subnode can be removed and immediately overridden")]
|
||||||
|
public void ChildSubNodeCanBeRemovedAndImmediatelyOverridden()
|
||||||
|
{
|
||||||
|
var baseYaml = @"
|
||||||
|
^BaseA:
|
||||||
|
MockString:
|
||||||
|
CollectionOfStrings:
|
||||||
|
StringA: A
|
||||||
|
StringB: B
|
||||||
|
Test:
|
||||||
|
Inherits: ^BaseA
|
||||||
|
MockString:
|
||||||
|
-CollectionOfStrings:
|
||||||
|
CollectionOfStrings:
|
||||||
|
StringC: C
|
||||||
|
";
|
||||||
|
|
||||||
|
var merged = MiniYaml.Merge(new[] { baseYaml }.Select(s => MiniYaml.FromString(s, "")))
|
||||||
|
.First(n => n.Key == "Test");
|
||||||
|
|
||||||
|
var traitNode = merged.Value.Nodes.Single();
|
||||||
|
var fieldNodes = traitNode.Value.Nodes;
|
||||||
|
var fieldSubNodes = fieldNodes.Single().Value.Nodes;
|
||||||
|
|
||||||
|
Assert.IsTrue(fieldSubNodes.Count == 1, "Collection of strings should only contain the overriding subnode.");
|
||||||
|
Assert.IsTrue(fieldSubNodes.Single(n => n.Key == "StringC").Value.Value == "C",
|
||||||
|
"CollectionOfStrings value has not been set with the correct override value for StringC.");
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestCase(TestName = "Child subnode can be removed and later overridden")]
|
||||||
|
public void ChildSubNodeCanBeRemovedAndLaterOverridden()
|
||||||
|
{
|
||||||
|
var baseYaml = @"
|
||||||
|
^BaseA:
|
||||||
|
MockString:
|
||||||
|
CollectionOfStrings:
|
||||||
|
StringA: A
|
||||||
|
StringB: B
|
||||||
|
Test:
|
||||||
|
Inherits: ^BaseA
|
||||||
|
MockString:
|
||||||
|
-CollectionOfStrings:
|
||||||
|
";
|
||||||
|
|
||||||
|
var overrideYaml = @"
|
||||||
|
Test:
|
||||||
|
MockString:
|
||||||
|
CollectionOfStrings:
|
||||||
|
StringC: C
|
||||||
|
";
|
||||||
|
|
||||||
|
var merged = MiniYaml.Merge(new[] { baseYaml, overrideYaml }.Select(s => MiniYaml.FromString(s, "")))
|
||||||
|
.First(n => n.Key == "Test");
|
||||||
|
|
||||||
|
var traitNode = merged.Value.Nodes.Single();
|
||||||
|
var fieldNodes = traitNode.Value.Nodes;
|
||||||
|
var fieldSubNodes = fieldNodes.Single().Value.Nodes;
|
||||||
|
|
||||||
|
Assert.IsTrue(fieldSubNodes.Count == 1, "Collection of strings should only contain the overriding subnode.");
|
||||||
|
Assert.IsTrue(fieldSubNodes.Single(n => n.Key == "StringC").Value.Value == "C",
|
||||||
|
"CollectionOfStrings value has not been set with the correct override value for StringC.");
|
||||||
|
}
|
||||||
|
|
||||||
[TestCase(TestName = "Empty lines should count toward line numbers")]
|
[TestCase(TestName = "Empty lines should count toward line numbers")]
|
||||||
public void EmptyLinesShouldCountTowardLineNumbers()
|
public void EmptyLinesShouldCountTowardLineNumbers()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user