#nullable enable using Content.IntegrationTests.NUnit.Operators; using NUnit.Framework.Constraints; using Robust.Shared.GameObjects; using Robust.UnitTesting; namespace Content.IntegrationTests.NUnit.Constraints; /// /// Provides Has.Comp<T>(side), /// a constraint that allows you to check for the presence of, or operate on, a component. /// /// /// /// // Assert that the server sided entity myEntity has ItemComponent on the server. /// Assert.That(myEntity, Has.Comp<ItemComponent>(Server)); /// /// public static class CompConstraintExtensions { extension(Has) { public static ResolvableConstraintExpression Comp(IIntegrationInstance instance) where T : IComponent { return new ConstraintExpression().Comp(instance); } public static ResolvableConstraintExpression Comp(Type t, IIntegrationInstance instance) { return new ConstraintExpression().Comp(t, instance); } } extension(ConstraintExpression expr) { public ResolvableConstraintExpression Comp(IIntegrationInstance instance) where T : IComponent { return expr.Append(new CompOperator(typeof(T), instance)); } public ResolvableConstraintExpression Comp(Type t, IIntegrationInstance instance) { return expr.Append(new CompOperator(t, instance)); } } }