using Robust.Shared.Prototypes; using Robust.Shared.Localization; using Content.Shared.Humanoid.Markings; using System.Linq; using System.Collections.Generic; namespace Content.IntegrationTests.Tests.Traits; /// /// Checks if every marking has a valid name localization string. /// [TestFixture] [TestOf(typeof(MarkingPrototype))] public sealed class MarkingLocalizationTest { [Test] public async Task TestMarkingLocalization() { await using var pair = await PoolManager.GetServerClient(); var server = pair.Server; var locale = server.ResolveDependency(); var proto = server.ResolveDependency(); await server.WaitAssertion(() => { var missingStrings = new List(); foreach (var markingProto in proto.EnumeratePrototypes().OrderBy(a => a.ID)) if (!locale.HasString($"marking-{markingProto.ID}") && string.IsNullOrEmpty(markingProto.Name)) missingStrings.Add($"\"{markingProto.ID}\", \"marking-{markingProto.ID}\""); Assert.That(!missingStrings.Any(), Is.True, $"The following markings are missing localization strings:\n {string.Join("\n ", missingStrings)}"); }); await pair.CleanReturnAsync(); } }