Fix the MiniYaml unit tests. Fixes #7999.
This commit is contained in:
@@ -21,17 +21,22 @@ namespace OpenRA.Test
|
||||
[TestFixture]
|
||||
public class MiniYamlTest
|
||||
{
|
||||
readonly string yamlForParent = @"
|
||||
^Parent:
|
||||
FromParent:
|
||||
FromParentRemove:
|
||||
readonly string mixedMergeA = @"
|
||||
Merge:
|
||||
FromA:
|
||||
FromARemovedB:
|
||||
FromARemovedA:
|
||||
-FromBRemovedA:
|
||||
-FromARemovedA:
|
||||
";
|
||||
|
||||
readonly string yamlForChild = @"
|
||||
Child:
|
||||
Inherits: ^Parent
|
||||
FromChild:
|
||||
-FromParentRemove:
|
||||
readonly string mixedMergeB = @"
|
||||
Merge:
|
||||
FromB:
|
||||
FromBRemovedA:
|
||||
FromBRemovedB:
|
||||
-FromARemovedB:
|
||||
-FromBRemovedB:
|
||||
";
|
||||
|
||||
readonly string yamlTabStyle = @"
|
||||
@@ -60,58 +65,28 @@ Root2:
|
||||
Attribute1: Test
|
||||
";
|
||||
|
||||
List<MiniYamlNode> parentList;
|
||||
List<MiniYamlNode> childList;
|
||||
MiniYaml parent;
|
||||
MiniYaml child;
|
||||
|
||||
[SetUp]
|
||||
public void SetUp()
|
||||
{
|
||||
parentList = MiniYaml.FromString(yamlForParent);
|
||||
childList = MiniYaml.FromString(yamlForChild);
|
||||
parent = parentList.First().Value;
|
||||
child = childList.First().Value;
|
||||
}
|
||||
|
||||
void InheritanceTest(List<MiniYamlNode> nodes)
|
||||
{
|
||||
Assert.That(nodes.Any(n => n.Key == "FromParent"), Is.True, "Node from parent");
|
||||
Assert.That(nodes.Any(n => n.Key == "FromChild"), Is.True, "Node from child");
|
||||
Assert.That(nodes.Any(n => n.Key == "FromParentRemove"), Is.Not.True, "Node from parent - node from child");
|
||||
}
|
||||
|
||||
[TestCase(TestName = "MergeStrict(MiniYaml, MiniYaml)")]
|
||||
[TestCase(TestName = "Merging: mixed addition and removal")]
|
||||
public void MergeYamlA()
|
||||
{
|
||||
var res = MiniYaml.MergeStrict(parent, child);
|
||||
InheritanceTest(res.Nodes);
|
||||
var a = MiniYaml.FromString(mixedMergeA, "mixedMergeA");
|
||||
var b = MiniYaml.FromString(mixedMergeB, "mixedMergeB");
|
||||
|
||||
// Merge order should not matter
|
||||
// Note: All the Merge* variants are different plumbing over the same
|
||||
// internal logic. Testing only MergeStrict is sufficent.
|
||||
TestMixedMerge(MiniYaml.MergeStrict(a, b).First().Value);
|
||||
TestMixedMerge(MiniYaml.MergeStrict(b, a).First().Value);
|
||||
}
|
||||
|
||||
[Ignore("Disabled until the code is fixed so we don't break continuous integration.")]
|
||||
[TestCase(TestName = "MergeLiberal(MiniYaml, MiniYaml)")]
|
||||
public void MergeYamlB()
|
||||
void TestMixedMerge(MiniYaml result)
|
||||
{
|
||||
var res = MiniYaml.MergeLiberal(parent, child);
|
||||
InheritanceTest(res.Nodes);
|
||||
}
|
||||
|
||||
[Ignore("Disabled until the code is fixed so we don't break continuous integration.")]
|
||||
[TestCase(TestName = "MergeStrict(List<MiniYamlNode>, List<MiniYamlNode>)")]
|
||||
public void MergeYamlC()
|
||||
{
|
||||
var res = MiniYaml.MergeStrict(parentList, childList).Last();
|
||||
Assert.That(res.Key, Is.EqualTo("Child"));
|
||||
InheritanceTest(res.Value.Nodes);
|
||||
}
|
||||
|
||||
[Ignore("Disabled until the code is fixed so we don't break continuous integration.")]
|
||||
[TestCase(TestName = "MergeLiberal(List<MiniYamlNode>, List<MiniYamlNode>)")]
|
||||
public void MergeYamlD()
|
||||
{
|
||||
var res = MiniYaml.MergeLiberal(parentList, childList).Last();
|
||||
Assert.That(res.Key, Is.EqualTo("Child"));
|
||||
InheritanceTest(res.Value.Nodes);
|
||||
Console.WriteLine(result.ToLines("result").JoinWith("\n"));
|
||||
Assert.That(result.Nodes.Any(n => n.Key == "FromA"), Is.True, "Node from A");
|
||||
Assert.That(result.Nodes.Any(n => n.Key == "FromB"), Is.True, "Node from B");
|
||||
Assert.That(result.Nodes.Any(n => n.Key == "FromARemovedA"), Is.Not.True, "Node from A removed by A");
|
||||
Assert.That(result.Nodes.Any(n => n.Key == "FromARemovedB"), Is.Not.True, "Node from A removed by B");
|
||||
Assert.That(result.Nodes.Any(n => n.Key == "FromBRemovedA"), Is.Not.True, "Node from B removed by A");
|
||||
Assert.That(result.Nodes.Any(n => n.Key == "FromBRemovedB"), Is.Not.True, "Node from B removed by B");
|
||||
}
|
||||
|
||||
[TestCase(TestName = "Mixed tabs & spaces indents")]
|
||||
|
||||
Reference in New Issue
Block a user