Files
tbd-station-14/Content.IntegrationTests/Tests/Tiles/TileConstructionTests.cs
2023-04-14 12:41:25 -07:00

122 lines
3.3 KiB
C#

using System.Threading.Tasks;
using Content.IntegrationTests.Tests.Interaction;
using NUnit.Framework;
using Robust.Shared.GameObjects;
using Robust.Shared.Map;
using Robust.Shared.Map.Components;
namespace Content.IntegrationTests.Tests.Tiles;
public sealed class TileConstructionTests : InteractionTest
{
private void AssertGridCount(int value)
{
var count = 0;
var query = SEntMan.AllEntityQueryEnumerator<MapGridComponent, TransformComponent>();
while (query.MoveNext(out _, out var xform))
{
if (xform.MapUid == MapData.MapUid)
count++;
}
Assert.That(count, Is.EqualTo(value));
}
/// <summary>
/// Test placing and cutting a single lattice.
/// </summary>
[Test]
public async Task PlaceThenCutLattice()
{
await AssertTile(Plating);
await AssertTile(Plating, PlayerCoords);
AssertGridCount(1);
await SetTile(null);
await Interact(Rod);
await AssertTile(Lattice);
Assert.IsNull(Hands.ActiveHandEntity);
await Interact(Cut);
await AssertTile(null);
await AssertEntityLookup((Rod, 1));
AssertGridCount(1);
}
/// <summary>
/// Test placing and cutting a single lattice in space (not adjacent to any existing grid.
/// </summary>
[Test]
public async Task CutThenPlaceLatticeNewGrid()
{
await AssertTile(Plating);
await AssertTile(Plating, PlayerCoords);
AssertGridCount(1);
// Remove grid
await SetTile(null);
await SetTile(null, PlayerCoords);
Assert.That(MapData.MapGrid.Deleted);
AssertGridCount(0);
// Place Lattice
var oldPos = TargetCoords;
TargetCoords = new EntityCoordinates(MapData.MapUid, 1, 0);
await Interact(Rod);
TargetCoords = oldPos;
await AssertTile(Lattice);
AssertGridCount(1);
// Cut lattice
Assert.IsNull(Hands.ActiveHandEntity);
await Interact(Cut);
await AssertTile(null);
AssertGridCount(0);
await AssertEntityLookup((Rod, 1));
}
/// <summary>
/// Test space -> floor -> plating
/// </summary>
[Test]
public async Task FloorConstructDeconstruct()
{
await AssertTile(Plating);
await AssertTile(Plating, PlayerCoords);
AssertGridCount(1);
// Remove grid
await SetTile(null);
await SetTile(null, PlayerCoords);
Assert.That(MapData.MapGrid.Deleted);
AssertGridCount(0);
// Space -> Lattice
var oldPos = TargetCoords;
TargetCoords = new EntityCoordinates(MapData.MapUid, 1, 0);
await Interact(Rod);
TargetCoords = oldPos;
await AssertTile(Lattice);
AssertGridCount(1);
// Lattice -> Plating
await Interact(Steel);
Assert.IsNull(Hands.ActiveHandEntity);
await AssertTile(Plating);
AssertGridCount(1);
// Plating -> Tile
await Interact(FloorItem);
Assert.IsNull(Hands.ActiveHandEntity);
await AssertTile(Floor);
AssertGridCount(1);
// Tile -> Plating
await Interact(Pry);
await AssertTile(Plating);
AssertGridCount(1);
await AssertEntityLookup((FloorItem, 1));
}
}