MultipleOfConstraint
MultipleOfConstraint tests that the actual value is a multiple of a specified integer.
using System;
using System.Runtime.CompilerServices;
namespace NUnit.Framework.Constraints
{
[NullableContext(1)]
[Nullable(0)]
public class MultipleOfConstraint : Constraint
{
private readonly uint _multiple;
public override string Description {
get {
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(12, 1);
defaultInterpolatedStringHandler.AppendLiteral("MultipleOf(");
defaultInterpolatedStringHandler.AppendFormatted(_multiple);
defaultInterpolatedStringHandler.AppendLiteral(")");
return defaultInterpolatedStringHandler.ToStringAndClear();
}
}
public MultipleOfConstraint(int multiple)
: base(Array.Empty<object>())
{
Guard.ArgumentInRange(multiple > 0, "Multiple must be greater than zero", "multiple");
_multiple = (uint)multiple;
}
public override ConstraintResult ApplyTo<[Nullable(2)] TActual>(TActual actual)
{
bool isSuccess;
if (((object)actual) is int || ((object)actual) is long || ((object)actual) is short || ((object)actual) is byte) {
long num = Convert.ToInt64(actual);
isSuccess = (num % (long)_multiple == 0);
} else if (((object)actual) is uint || ((object)actual) is ulong || ((object)actual) is ushort || ((object)actual) is byte) {
ulong num2 = Convert.ToUInt64(actual);
isSuccess = (num2 % _multiple == 0);
} else {
isSuccess = false;
}
return new ConstraintResult(this, actual, isSuccess);
}
}
}