using System.Runtime.CompilerServices; namespace Engine.Core.Debug; public static class Assert { [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void AssertTrue(bool value, string errorMessage) => System.Diagnostics.Debug.Assert(value, errorMessage); [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void AssertFalse(bool value, string errorMessage) => System.Diagnostics.Debug.Assert(!value, errorMessage); [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void AssertNull(object? value, string errorMessage) => System.Diagnostics.Debug.Assert(value is null, errorMessage); [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void AssertNotNull(object? value, string errorMessage) => System.Diagnostics.Debug.Assert(value is not null, errorMessage); [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void AssertInitialized(IInitializable initializable) => System.Diagnostics.Debug.Assert(initializable.IsInitialized, $"{initializable.GetType().Name} must be initialized"); [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void AssertBehaviourControllerAssigned(IHasBehaviourController assignable) => System.Diagnostics.Debug.Assert(assignable.BehaviourController is not null, $"{assignable.GetType().Name} must be assigned an {nameof(IBehaviourController)}"); [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void AssertEntityAssigned(IHasEntity assignable) => System.Diagnostics.Debug.Assert(assignable.Entity is not null, $"{assignable.GetType().Name} must be assigned an {nameof(IEntity)}"); [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void AssertUniverseAssigned(IHasUniverse assignable) => System.Diagnostics.Debug.Assert(assignable.Universe is not null, $"{assignable.GetType().Name} must be assigned an {nameof(IUniverse)}"); [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void AssertUniverseObjectAssigned(IHasUniverseObject assignable) => System.Diagnostics.Debug.Assert(assignable.UniverseObject is not null, $"{assignable.GetType().Name} must be assigned an {nameof(IUniverseObject)}"); [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void AssertStateEnableAssigned(IHasStateEnable assignable) => System.Diagnostics.Debug.Assert(assignable.StateEnable is not null, $"{assignable.GetType().Name} must be assigned an {nameof(IStateEnable)}"); }