Construction graph node test (#9995)
* Construction graph node test * fix the test Co-authored-by: wrexbe <wrexbe@protonmail.com>
This commit is contained in:
@@ -1,6 +1,10 @@
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Content.Server.Construction.Components;
|
||||||
using Content.Shared.Construction.Prototypes;
|
using Content.Shared.Construction.Prototypes;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
|
using Robust.Shared.GameObjects;
|
||||||
|
using Robust.Shared.Map;
|
||||||
|
using Robust.Shared.Maths;
|
||||||
using Robust.Shared.Prototypes;
|
using Robust.Shared.Prototypes;
|
||||||
|
|
||||||
namespace Content.IntegrationTests.Tests.Construction
|
namespace Content.IntegrationTests.Tests.Construction
|
||||||
@@ -10,6 +14,42 @@ namespace Content.IntegrationTests.Tests.Construction
|
|||||||
{
|
{
|
||||||
// discount linter for construction graphs
|
// discount linter for construction graphs
|
||||||
// TODO: Create serialization validators for these?
|
// TODO: Create serialization validators for these?
|
||||||
|
// Top test definitely can be but writing a serializer takes ages.
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Checks every entity prototype with a construction component has a valid start node.
|
||||||
|
/// </summary>
|
||||||
|
[Test]
|
||||||
|
public async Task TestStartNodeValid()
|
||||||
|
{
|
||||||
|
await using var pairTracker = await PoolManager.GetServerClient(new PoolSettings{NoClient = true});
|
||||||
|
var server = pairTracker.Pair.Server;
|
||||||
|
|
||||||
|
var entMan = server.ResolveDependency<IEntityManager>();
|
||||||
|
var protoMan = server.ResolveDependency<IPrototypeManager>();
|
||||||
|
|
||||||
|
var map = await PoolManager.CreateTestMap(pairTracker);
|
||||||
|
|
||||||
|
await server.WaitAssertion(() =>
|
||||||
|
{
|
||||||
|
foreach (var proto in protoMan.EnumeratePrototypes<EntityPrototype>())
|
||||||
|
{
|
||||||
|
if (!proto.Components.ContainsKey("Construction"))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
var ent = entMan.SpawnEntity(proto.ID, new MapCoordinates(Vector2.Zero, map.MapId));
|
||||||
|
var construction = entMan.GetComponent<ConstructionComponent>(ent);
|
||||||
|
|
||||||
|
var graph = protoMan.Index<ConstructionGraphPrototype>(construction.Graph);
|
||||||
|
entMan.DeleteEntity(ent);
|
||||||
|
|
||||||
|
Assert.That(graph.Nodes.ContainsKey(construction.Node),
|
||||||
|
$"Found no startNode \"{construction.Node}\" on graph \"{graph.ID}\" for entity \"{proto.ID}\"!");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
await pairTracker.CleanReturnAsync();
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public async Task TestStartIsValid()
|
public async Task TestStartIsValid()
|
||||||
|
|||||||
Reference in New Issue
Block a user