65 lines
2.4 KiB
C#
65 lines
2.4 KiB
C#
|
|
using Firebird2D.Logger;
|
|
using System.Runtime.CompilerServices;
|
|
|
|
namespace Firebird2D.Requirement
|
|
{
|
|
public class Require
|
|
{
|
|
public static void NotNull(object? input, string name, int loggerInstanceNumber,
|
|
[CallerMemberName] string callerName = "",
|
|
[CallerFilePath] string callerPath = "",
|
|
[CallerLineNumber] int callerLineNumber = 0)
|
|
{
|
|
if (input == null)
|
|
{
|
|
LogAndThrow(loggerInstanceNumber, callerName, callerPath, callerLineNumber,
|
|
$"{name} was null.");
|
|
}
|
|
}
|
|
|
|
public static void NotEmpty(string input, string name, int loggerInstanceNumber,
|
|
[CallerMemberName] string callerName = "",
|
|
[CallerFilePath] string callerPath = "",
|
|
[CallerLineNumber] int callerLineNumber = 0)
|
|
{
|
|
if (string.IsNullOrEmpty(input))
|
|
{
|
|
LogAndThrow(loggerInstanceNumber, callerName, callerPath, callerLineNumber,
|
|
$"{name} must not be null or empty.");
|
|
}
|
|
}
|
|
|
|
public static void Range(int value, int min, int max, string name, int loggerInstanceNumber,
|
|
[CallerMemberName] string callerName = "",
|
|
[CallerFilePath] string callerPath = "",
|
|
[CallerLineNumber] int callerLineNumber = 0)
|
|
{
|
|
if (value < min || value > max)
|
|
{
|
|
LogAndThrow(loggerInstanceNumber, callerName, callerPath, callerLineNumber,
|
|
$"{name} must be in range [{min}, {max}], but was {value}.");
|
|
}
|
|
}
|
|
|
|
public static void IsTrue(bool condition, string message, int loggerInstanceNumber,
|
|
[CallerMemberName] string callerName = "",
|
|
[CallerFilePath] string callerPath = "",
|
|
[CallerLineNumber] int callerLineNumber = 0)
|
|
{
|
|
if (!condition)
|
|
{
|
|
LogAndThrow(loggerInstanceNumber, callerName, callerPath, callerLineNumber, message);
|
|
}
|
|
}
|
|
|
|
private static void LogAndThrow(int loggerInstanceNumber, string callerName, string callerPath, int lineNumber, string message)
|
|
{
|
|
string fullMessage = $"{message} (at {callerName} in {callerPath}, line {lineNumber})";
|
|
|
|
GameLogger.GetInstance(loggerInstanceNumber).Log(callerName, LogType.Error, fullMessage);
|
|
throw new ArgumentException(fullMessage);
|
|
}
|
|
}
|
|
}
|