mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-02-15 03:30:53 +01:00
Robust.UnitTesting was both ALL tests for RT, and also API surface for content tests. Tests are now split into separate projects as appropriate, and the API side has also been split off.
70 lines
2.3 KiB
C#
70 lines
2.3 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using NUnit.Framework;
|
|
using Robust.Server.Physics;
|
|
using Robust.Shared;
|
|
using Robust.Shared.Configuration;
|
|
using Robust.Shared.GameObjects;
|
|
using Robust.Shared.Map;
|
|
using Robust.Shared.Maths;
|
|
using Robust.UnitTesting.Server;
|
|
|
|
namespace Robust.UnitTesting.Shared.Map;
|
|
|
|
[Parallelizable(ParallelScope.All | ParallelScope.Fixtures)]
|
|
[TestFixture]
|
|
internal sealed class GridMerge_Tests
|
|
{
|
|
private ISimulation GetSim()
|
|
{
|
|
var sim = RobustServerSimulation.NewSimulation().InitializeInstance();
|
|
|
|
var config = sim.Resolve<IConfigurationManager>();
|
|
config.SetCVar(CVars.GridSplitting, true);
|
|
|
|
return sim;
|
|
}
|
|
|
|
private static readonly TestCaseData[] MergeCases = new[]
|
|
{
|
|
new TestCaseData(new Vector2i(-1, 0), Angle.Zero, new Box2(-1f, 0f, 1f, 3f)),
|
|
new TestCaseData(new Vector2i(0, 3), Angle.Zero, new Box2(0f, 0f, 1f, 6f)),
|
|
new TestCaseData(new Vector2i(0, 1), Angle.FromDegrees(90), new Box2(-3f, 0f, 1f, 3f)),
|
|
new TestCaseData(new Vector2i(1, 3), Angle.FromDegrees(-90), new Box2(0f, 0f, 4f, 3f)),
|
|
};
|
|
|
|
/// <summary>
|
|
/// Checks 2 grids merge properly.
|
|
/// </summary>
|
|
[Test, TestCaseSource(nameof(MergeCases))]
|
|
public void Merge(Vector2i offset, Angle angle, Box2 bounds)
|
|
{
|
|
var sim = GetSim();
|
|
var mapManager = sim.Resolve<IMapManager>();
|
|
var entMan = sim.Resolve<IEntityManager>();
|
|
var mapSystem = entMan.System<SharedMapSystem>();
|
|
var gridFixtures = entMan.System<GridFixtureSystem>();
|
|
|
|
var mapId = sim.CreateMap().MapId;
|
|
var grid1 = mapManager.CreateGridEntity(mapId);
|
|
var grid2 = mapManager.CreateGridEntity(mapId);
|
|
var tiles = new List<(Vector2i, Tile)>();
|
|
|
|
for (var y = 0; y < 3; y++)
|
|
{
|
|
tiles.Add((new Vector2i(0, y), new Tile(1)));
|
|
}
|
|
|
|
mapSystem.SetTiles(grid1, tiles);
|
|
mapSystem.SetTiles(grid2, tiles);
|
|
|
|
Assert.That(mapManager.GetAllGrids(mapId).Count(), Is.EqualTo(2));
|
|
|
|
gridFixtures.Merge(grid1.Owner, grid2.Owner, offset, angle, grid1.Comp, grid2.Comp);
|
|
|
|
Assert.That(mapManager.GetAllGrids(mapId).Count(), Is.EqualTo(1));
|
|
|
|
Assert.That(grid1.Comp.LocalAABB, Is.EqualTo(bounds));
|
|
}
|
|
}
|