ActorInfoTest fixup with new ActorInfo ctor

This commit is contained in:
atlimit8
2015-09-19 14:48:49 -05:00
parent 9acf121eb1
commit b889675c83
2 changed files with 23 additions and 26 deletions

View File

@@ -67,6 +67,13 @@ namespace OpenRA
} }
} }
public ActorInfo(string name, params ITraitInfo[] traitInfos)
{
Name = name;
foreach (var t in traitInfos)
Traits.Add(t);
}
static Dictionary<string, MiniYaml> GetParents(MiniYaml node, Dictionary<string, MiniYaml> allUnits) static Dictionary<string, MiniYaml> GetParents(MiniYaml node, Dictionary<string, MiniYaml> allUnits)
{ {
return node.Nodes.Where(n => n.Key == "Inherits" || n.Key.StartsWith("Inherits@")) return node.Nodes.Where(n => n.Key == "Inherits" || n.Key.StartsWith("Inherits@"))

View File

@@ -18,48 +18,40 @@ using OpenRA.Traits;
namespace OpenRA.Test namespace OpenRA.Test
{ {
interface IMock : ITraitInfo { }
class MockTraitInfo : ITraitInfo { public object Create(ActorInitializer init) { return null; } }
class MockInheritInfo : MockTraitInfo { }
class MockAInfo : MockInheritInfo, IMock { }
class MockBInfo : MockTraitInfo, Requires<MockAInfo>, Requires<IMock>, Requires<MockInheritInfo> { }
class MockCInfo : MockTraitInfo, Requires<MockBInfo> { }
class MockDInfo : MockTraitInfo, Requires<MockEInfo> { }
class MockEInfo : MockTraitInfo, Requires<MockFInfo> { }
class MockFInfo : MockTraitInfo, Requires<MockDInfo> { }
[TestFixture] [TestFixture]
public class ActorInfoTest public class ActorInfoTest
{ {
ActorInfo actorInfo;
Dictionary<string, MiniYaml> allUnits;
interface IMock : ITraitInfo { }
class MockTrait : ITraitInfo { public object Create(ActorInitializer init) { return null; } }
class MockInherit : MockTrait { }
class MockA : MockInherit, IMock { }
class MockB : MockTrait, Requires<MockA>, Requires<IMock>, Requires<MockInherit> { }
class MockC : MockTrait, Requires<MockB> { }
class MockD : MockTrait, Requires<MockE> { }
class MockE : MockTrait, Requires<MockF> { }
class MockF : MockTrait, Requires<MockD> { }
[SetUp] [SetUp]
public void SetUp() public void SetUp()
{ {
allUnits = new Dictionary<string, MiniYaml>();
actorInfo = new ActorInfo("", new MiniYaml(""), allUnits);
} }
[TestCase(TestName = "Sort traits in order of dependency")] [TestCase(TestName = "Sort traits in order of dependency")]
public void TraitsInConstructOrderA() public void TraitsInConstructOrderA()
{ {
actorInfo.Traits.Add(new MockC()); var actorInfo = new ActorInfo("test", new MockCInfo(), new MockBInfo(), new MockAInfo());
actorInfo.Traits.Add(new MockB());
actorInfo.Traits.Add(new MockA());
var i = new List<ITraitInfo>(actorInfo.TraitsInConstructOrder()); var i = new List<ITraitInfo>(actorInfo.TraitsInConstructOrder());
Assert.That(i[0], Is.InstanceOf<MockA>()); Assert.That(i[0], Is.InstanceOf<MockAInfo>());
Assert.That(i[1], Is.InstanceOf<MockB>()); Assert.That(i[1].GetType().Name, Is.EqualTo("MockBInfo"));
Assert.That(i[2], Is.InstanceOf<MockC>()); Assert.That(i[2].GetType().Name, Is.EqualTo("MockCInfo"));
} }
[TestCase(TestName = "Exception reports missing dependencies")] [TestCase(TestName = "Exception reports missing dependencies")]
public void TraitsInConstructOrderB() public void TraitsInConstructOrderB()
{ {
actorInfo.Traits.Add(new MockB()); var actorInfo = new ActorInfo("test", new MockBInfo(), new MockCInfo());
actorInfo.Traits.Add(new MockC());
try try
{ {
@@ -79,9 +71,7 @@ namespace OpenRA.Test
[TestCase(TestName = "Exception reports cyclic dependencies")] [TestCase(TestName = "Exception reports cyclic dependencies")]
public void TraitsInConstructOrderC() public void TraitsInConstructOrderC()
{ {
actorInfo.Traits.Add(new MockD()); var actorInfo = new ActorInfo("test", new MockDInfo(), new MockEInfo(), new MockFInfo());
actorInfo.Traits.Add(new MockE());
actorInfo.Traits.Add(new MockF());
try try
{ {