59 lines
3.4 KiB
C#
59 lines
3.4 KiB
C#
using JetBrains.Annotations;
|
|
using UnityEngine;
|
|
|
|
namespace PrimeTween {
|
|
internal static class Assert {
|
|
internal static void LogError(string msg, long id, [CanBeNull] Object context = null) {
|
|
Debug.LogError(TryAddStackTrace(msg, id), context);
|
|
}
|
|
|
|
internal static void LogWarning(string msg, long id, [CanBeNull] Object context = null) {
|
|
Debug.LogWarning(TryAddStackTrace(msg, id), context);
|
|
}
|
|
|
|
[CanBeNull, PublicAPI]
|
|
static string TryAddStackTrace([CanBeNull] string msg, long tweenId) {
|
|
#if UNITY_ASSERTIONS
|
|
#if PRIME_TWEEN_SAFETY_CHECKS
|
|
if (tweenId == 0) {
|
|
msg += "\nTween is not created (id == 0).\n";
|
|
} else {
|
|
msg += $"\nTween (id {tweenId}) creation stack trace:\n{StackTraces.Get(tweenId)}";
|
|
}
|
|
#else
|
|
msg += "\nAdd 'PRIME_TWEEN_SAFETY_CHECKS' to 'Project Settings/Player/Scripting Define Symbols' to see which tween produced this error (works only in Development Builds).\n";
|
|
#endif
|
|
#endif
|
|
return msg;
|
|
}
|
|
|
|
#if UNITY_ASSERTIONS && !PRIME_TWEEN_DISABLE_ASSERTIONS
|
|
[ContractAnnotation("condition:false => halt")]
|
|
internal static void IsTrue(bool condition, long? tweenId = null, string msg = null) => UnityEngine.Assertions.Assert.IsTrue(condition, AddStackTrace(!condition, msg, tweenId));
|
|
internal static void AreEqual<T>(T expected, T actual, string msg = null) => UnityEngine.Assertions.Assert.AreEqual(expected, actual, msg);
|
|
internal static void AreNotEqual<T>(T expected, T actual, string msg = null) => UnityEngine.Assertions.Assert.AreNotEqual(expected, actual, msg);
|
|
internal static void IsFalse(bool condition, string msg = null) => UnityEngine.Assertions.Assert.IsFalse(condition, msg);
|
|
[ContractAnnotation("value:null => halt")]
|
|
internal static void IsNotNull<T>(T value, string msg = null) where T : class => UnityEngine.Assertions.Assert.IsNotNull(value, msg);
|
|
internal static void IsNull<T>(T value, string msg = null) where T : class => UnityEngine.Assertions.Assert.IsNull(value, msg);
|
|
[CanBeNull]
|
|
static string AddStackTrace(bool add, [CanBeNull] string msg, long? tweenId) {
|
|
if (add && tweenId.HasValue) {
|
|
return TryAddStackTrace(msg, tweenId.Value);
|
|
}
|
|
return msg;
|
|
}
|
|
#else
|
|
const string DUMMY = "_";
|
|
// ReSharper disable UnusedParameter.Global
|
|
[System.Diagnostics.Conditional(DUMMY)] internal static void IsTrue(bool condition, long? tweenId = null, string msg = null) {}
|
|
[System.Diagnostics.Conditional(DUMMY)] internal static void AreEqual<T>(T expected, T actual, string msg = null) {}
|
|
[System.Diagnostics.Conditional(DUMMY)] internal static void AreNotEqual<T>(T expected, T actual, string msg = null) {}
|
|
[System.Diagnostics.Conditional(DUMMY)] internal static void IsFalse(bool condition, string msg = null) {}
|
|
[ContractAnnotation("value:null => halt")]
|
|
[System.Diagnostics.Conditional(DUMMY)] internal static void IsNotNull<T>(T value, string msg = null) where T : class {}
|
|
[System.Diagnostics.Conditional(DUMMY)] internal static void IsNull<T>(T value, string msg = null) where T : class {}
|
|
#endif
|
|
}
|
|
}
|