103 lines
2.7 KiB
C#
103 lines
2.7 KiB
C#
#region Copyright & License Information
|
|
/*
|
|
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
|
|
* This file is part of OpenRA, which is free software. It is made
|
|
* available to you under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation. For more information,
|
|
* see COPYING.
|
|
*/
|
|
#endregion
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text.RegularExpressions;
|
|
using NUnit.Framework;
|
|
using OpenRA.GameRules;
|
|
using OpenRA.Traits;
|
|
|
|
namespace OpenRA.Test
|
|
{
|
|
[TestFixture]
|
|
public class MiniYamlTest
|
|
{
|
|
readonly string mixedMergeA = @"
|
|
Merge:
|
|
FromA:
|
|
FromARemovedB:
|
|
FromARemovedA:
|
|
-FromBRemovedA:
|
|
-FromARemovedA:
|
|
";
|
|
|
|
readonly string mixedMergeB = @"
|
|
Merge:
|
|
FromB:
|
|
FromBRemovedA:
|
|
FromBRemovedB:
|
|
-FromARemovedB:
|
|
-FromBRemovedB:
|
|
";
|
|
|
|
readonly string yamlTabStyle = @"
|
|
Root1:
|
|
Child1:
|
|
Attribute1: Test
|
|
Attribute2: Test
|
|
Child2:
|
|
Attribute1: Test
|
|
Attribute2: Test
|
|
Root2:
|
|
Child1:
|
|
Attribute1: Test
|
|
";
|
|
|
|
readonly string yamlMixedStyle = @"
|
|
Root1:
|
|
Child1:
|
|
Attribute1: Test
|
|
Attribute2: Test
|
|
Child2:
|
|
Attribute1: Test
|
|
Attribute2: Test
|
|
Root2:
|
|
Child1:
|
|
Attribute1: Test
|
|
";
|
|
|
|
[TestCase(TestName = "Merging: mixed addition and removal")]
|
|
public void MergeYamlA()
|
|
{
|
|
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 sufficient.
|
|
TestMixedMerge(MiniYaml.MergeStrict(a, b).First().Value);
|
|
TestMixedMerge(MiniYaml.MergeStrict(b, a).First().Value);
|
|
}
|
|
|
|
void TestMixedMerge(MiniYaml result)
|
|
{
|
|
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")]
|
|
public void TestIndents()
|
|
{
|
|
var tabs = MiniYaml.FromString(yamlTabStyle, "yamlTabStyle").WriteToString();
|
|
Console.WriteLine(tabs);
|
|
var mixed = MiniYaml.FromString(yamlMixedStyle, "yamlMixedStyle").WriteToString();
|
|
Console.WriteLine(mixed);
|
|
Assert.That(tabs, Is.EqualTo(mixed));
|
|
}
|
|
}
|
|
}
|