Add a new test case for actor info merging.

This commit is contained in:
Paul Chote
2016-01-30 01:46:11 +00:00
parent c19383472f
commit 1581ba951f

View File

@@ -31,6 +31,8 @@ namespace OpenRA.Test
class MockB2Info : MockTraitInfo { }
class MockC2Info : MockTraitInfo { }
class MockStringInfo : MockTraitInfo { public string AString = null; }
[TestFixture]
public class ActorInfoTest
{
@@ -142,6 +144,29 @@ Actor:
Assert.IsFalse(actorInfo.HasTraitInfo<MockA2Info>(), "Actor should not have the MockA2 trait, but does.");
}
[TestCase(TestName = "Trait can be removed and later overridden")]
public void TraitCanBeRemovedAndLaterOverridden()
{
var baseYaml = @"
^BaseA:
MockString:
AString: ""Base""
Actor:
Inherits: ^BaseA
-MockString:
";
var overrideYaml = @"
Actor:
MockString:
AString: ""Override""
";
var actorInfo = CreateActorInfoFromYaml("Actor", null, baseYaml, overrideYaml);
Assert.IsTrue(actorInfo.HasTraitInfo<MockStringInfo>(), "Actor should have the MockStringInfo trait, but does not.");
Assert.IsTrue(actorInfo.TraitInfo<MockStringInfo>().AString == "\"Override\"",
"MockStringInfo trait has not been set with the correct override value for AString.");
}
// This needs to match the logic used in RulesetCache.LoadYamlRules
ActorInfo CreateActorInfoFromYaml(string name, string mapYaml, params string[] yamls)
{