From 1581ba951f72fb3eb35c5d1bf5a06c90deeed54f Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sat, 30 Jan 2016 01:46:11 +0000 Subject: [PATCH] Add a new test case for actor info merging. --- OpenRA.Test/OpenRA.Game/ActorInfoTest.cs | 25 ++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/OpenRA.Test/OpenRA.Game/ActorInfoTest.cs b/OpenRA.Test/OpenRA.Game/ActorInfoTest.cs index c216390fbe..ddb411de79 100644 --- a/OpenRA.Test/OpenRA.Game/ActorInfoTest.cs +++ b/OpenRA.Test/OpenRA.Game/ActorInfoTest.cs @@ -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(), "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(), "Actor should have the MockStringInfo trait, but does not."); + Assert.IsTrue(actorInfo.TraitInfo().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) {