6
2025-12-18 02:55:17 +03:00

83 lines
2.6 KiB
C#

using Content.IntegrationTests.Pair;
using Content.Shared.Shuttles.Components;
using Content.Shared.Shuttles.Systems;
using Robust.Shared.GameObjects;
namespace Content.IntegrationTests.Tests._NF.Shuttle;
[TestFixture]
[FixtureLifeCycle(LifeCycle.InstancePerTestCase)]
public sealed class ServiceFlagsSuffixTests
{
TestPair _pair;
SharedShuttleSystem _shuttle;
[SetUp]
public async Task Setup()
{
_pair = await PoolManager.GetServerClient();
var server = _pair.Server;
var entManager = server.ResolveDependency<IEntityManager>();
_shuttle = entManager.System<SharedShuttleSystem>();
}
[TearDown]
public async Task TearDownInternal()
{
await _pair.CleanReturnAsync();
}
[Test]
public void GetServiceFlagsSuffix_None_ReturnsEmptyString()
{
var result = _shuttle.GetServiceFlagsSuffix(ServiceFlags.None);
Assert.That(result, Is.EqualTo(string.Empty));
}
[Test]
public void GetServiceFlagsSuffix_SingleFlag_ReturnsSingleCharacter()
{
var result = _shuttle.GetServiceFlagsSuffix(ServiceFlags.Services);
Assert.That(result.Length, Is.Positive);
}
[Test]
public void GetServiceFlagsSuffix_MultipleFlagsUniqueChars_ReturnsFirstCharacters()
{
// Assemble all enum values into one
var valueCount = 0;
var allFlags = ServiceFlags.None;
foreach (var flag in Enum.GetValues<ServiceFlags>())
{
if (flag == ServiceFlags.None)
continue;
allFlags |= flag;
valueCount++;
}
// Extract the characters between brackets
var characters = _shuttle.GetServiceFlagsSuffix(allFlags).Trim('[', ']');
// Check that we have three separate character combinations.
Assert.Multiple(() =>
{
Assert.That(characters, Is.Unique);
Assert.That(characters.Length, Is.EqualTo(valueCount));
foreach (var flag in Enum.GetValues<ServiceFlags>())
{
if (flag == ServiceFlags.None)
continue;
var oneFlagResult = _shuttle.GetServiceFlagsSuffix(flag);
// Extract the characters between brackets and split by '|'
var oneFlagCharacters = oneFlagResult.Trim('[', ']');
// Check that we have three separate character combination.
Assert.That(oneFlagCharacters.Length, Is.EqualTo(1));
Assert.That(characters.Contains(oneFlagCharacters[0]), Is.True);
}
});
}
}