write a test to ensure all computers are constructible (#13096)
This commit is contained in:
@@ -21,7 +21,8 @@ public sealed class MachineBoardTest
|
||||
"MachineParticleAcceleratorPowerBoxCircuitboard",
|
||||
"MachineParticleAcceleratorEmitterLeftCircuitboard",
|
||||
"MachineParticleAcceleratorEmitterCenterCircuitboard",
|
||||
"MachineParticleAcceleratorEmitterRightCircuitboard"
|
||||
"MachineParticleAcceleratorEmitterRightCircuitboard",
|
||||
"ParticleAcceleratorComputerCircuitboard"
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
@@ -56,4 +57,37 @@ public sealed class MachineBoardTest
|
||||
|
||||
await pairTracker.CleanReturnAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ensures that every single computer board's corresponding entity
|
||||
/// is a computer that can be properly deconstructed to the correct board
|
||||
/// </summary>
|
||||
[Test]
|
||||
public async Task TestComputerBoardHasValidComputer()
|
||||
{
|
||||
await using var pairTracker = await PoolManager.GetServerClient(new PoolSettings{NoClient = true});
|
||||
var server = pairTracker.Pair.Server;
|
||||
|
||||
var protoMan = server.ResolveDependency<IPrototypeManager>();
|
||||
|
||||
await server.WaitAssertion(() =>
|
||||
{
|
||||
foreach (var p in protoMan.EnumeratePrototypes<EntityPrototype>().Where(p => !p.Abstract && !_ignoredPrototypes.Contains(p.ID)))
|
||||
{
|
||||
if (!p.TryGetComponent<ComputerBoardComponent>(out var cbc))
|
||||
continue;
|
||||
var cId = cbc.Prototype;
|
||||
|
||||
Assert.That(cId, Is.Not.Null, $"Computer board \"{p.ID}\" does not have a corresponding computer.");
|
||||
Assert.That(protoMan.TryIndex<EntityPrototype>(cId, out var cProto),
|
||||
$"Computer board \"{p.ID}\"'s corresponding computer has an invalid prototype.");
|
||||
Assert.That(cProto.TryGetComponent<ComputerComponent>(out var cComp),
|
||||
$"Computer board {p.ID}'s corresponding computer \"{cId}\" does not have ComputerComponent");
|
||||
Assert.That(cComp.BoardPrototype, Is.EqualTo(p.ID),
|
||||
$"Computer \"{cId}\"'s BoardPrototype is not equal to it's corresponding computer board, \"{p.ID}\"");
|
||||
}
|
||||
});
|
||||
|
||||
await pairTracker.CleanReturnAsync();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user