Fix tests

This commit is contained in:
Tobias Berger
2026-01-30 04:08:49 +01:00
parent 333948591f
commit 66f23833c6
@@ -8,6 +8,7 @@ using Content.Shared.Hands.Components;
using Content.Shared.Hands.EntitySystems; using Content.Shared.Hands.EntitySystems;
using Content.Shared.Humanoid.Prototypes; using Content.Shared.Humanoid.Prototypes;
using Content.Shared.Nutrition.Components; using Content.Shared.Nutrition.Components;
using Content.Shared.Preferences;
using Content.Shared.Roles; using Content.Shared.Roles;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
using Robust.Shared.IoC; using Robust.Shared.IoC;
@@ -109,8 +110,10 @@ public sealed partial class TraitSystemTest
description: trait-dysgraphia-name description: trait-dysgraphia-name
category: TestCategoryUnlimited category: TestCategoryUnlimited
cost: 0 cost: 0
conflicts: conditions:
- TestTraitConflictB - !type:HasTraitCondition
trait: TestTraitConflictB
invert: true
effects: effects:
- !type:AddCompsEffect - !type:AddCompsEffect
components: components:
@@ -584,31 +587,29 @@ public sealed partial class TraitSystemTest
await using var pair = await PoolManager.GetServerClient(new PoolSettings { Dirty = true }); await using var pair = await PoolManager.GetServerClient(new PoolSettings { Dirty = true });
var server = pair.Server; var server = pair.Server;
var entMan = server.ResolveDependency<IEntityManager>(); var entMan = server.ResolveDependency<IEntityManager>();
var protoMan = server.ProtoMan;
await server.WaitAssertion(() => await server.WaitAssertion(() =>
{ {
var player = entMan.SpawnEntity(null, MapCoordinates.Nullspace); var player = entMan.SpawnEntity(null, MapCoordinates.Nullspace);
var selectedTraits = new HashSet<ProtoId<TraitPrototype>> var profile = new HumanoidCharacterProfile()
{ .WithTraitPreference("TestTraitConflictA", protoMan)
"TestTraitConflictA", .WithTraitPreference("TestTraitConflictB", protoMan);
"TestTraitConflictB",
};
var traitSys = entMan.System<TraitSystem>(); var traitSys = entMan.System<TraitSystem>();
var method = typeof(TraitSystem).GetMethod("ValidateTraits", var method = typeof(TraitSystem).GetMethod("ValidateTraits",
BindingFlags.NonPublic | BindingFlags.Instance); BindingFlags.NonPublic | BindingFlags.Instance);
var disabledTraits = new Dictionary<ProtoId<TraitPrototype>, List<string>>();
var validTraits = (HashSet<ProtoId<TraitPrototype>>)method?.Invoke(traitSys, var validTraits = (HashSet<ProtoId<TraitPrototype>>)method?.Invoke(traitSys,
new object[] { player, selectedTraits, null, null, null, null, new Dictionary<ProtoId<TraitPrototype>, List<string>>() }); new object[] { player, profile.TraitPreferences, null, null, null, profile, disabledTraits });
Assert.Multiple(() => Assert.Multiple(() =>
{ {
Assert.That(validTraits?.Count, Is.EqualTo(1), "Only one conflicting trait should be valid"); Assert.That(validTraits?.Count, Is.EqualTo(1), "Only one conflicting trait should be valid");
Assert.That(validTraits.Contains("TestTraitConflictA"), Is.True, "First trait should be kept"); Assert.That(validTraits.Contains("TestTraitConflictB"), Is.True, "Non-complaining trait should be kept");
Assert.That(validTraits.Contains("TestTraitConflictB"), Assert.That(disabledTraits.ContainsKey("TestTraitConflictA"), Is.True, "Trait with conflicts should be rejected");
Is.False,
"Conflicting trait should be rejected");
}); });
entMan.DeleteEntity(player); entMan.DeleteEntity(player);
@@ -671,6 +672,7 @@ public sealed partial class TraitSystemTest
}; };
var traitSys = entMan.System<TraitSystem>(); var traitSys = entMan.System<TraitSystem>();
var method = typeof(TraitSystem).GetMethod("ValidateTraits", var method = typeof(TraitSystem).GetMethod("ValidateTraits",
BindingFlags.NonPublic | BindingFlags.Instance); BindingFlags.NonPublic | BindingFlags.Instance);
@@ -741,7 +743,7 @@ public sealed partial class TraitSystemTest
BindingFlags.NonPublic | BindingFlags.Instance); BindingFlags.NonPublic | BindingFlags.Instance);
var validTraits = (HashSet<ProtoId<TraitPrototype>>)method?.Invoke(traitSys, var validTraits = (HashSet<ProtoId<TraitPrototype>>)method?.Invoke(traitSys,
new object[] { player, selectedTraits, null, null, null, null, new Dictionary<ProtoId<TraitPrototype>, List<string>>() }); new object[] { player, selectedTraits, null, null, null, null, new Dictionary<ProtoId<TraitPrototype>, List<string>>() });
Assert.That(validTraits?.Contains("TestTraitHasComp"), Assert.That(validTraits?.Contains("TestTraitHasComp"),
Is.False, Is.False,