in src/PSDocs/Common/ExpressionHelpers.cs [59:94]
internal static bool CompareNumeric(object actual, object expected, bool convert, out int compare, out object value)
{
if (TryInt(actual, convert, out int actualInt) && TryInt(expected, convert: true, value: out int expectedInt))
{
compare = Comparer<int>.Default.Compare(actualInt, expectedInt);
value = actualInt;
return true;
}
else if (TryLong(actual, convert, out long actualLong) && TryLong(expected, convert: true, value: out long expectedLong))
{
compare = Comparer<long>.Default.Compare(actualLong, expectedLong);
value = actualLong;
return true;
}
else if (TryFloat(actual, convert, out float actualFloat) && TryFloat(expected, convert: true, value: out float expectedFloat))
{
compare = Comparer<float>.Default.Compare(actualFloat, expectedFloat);
value = actualFloat;
return true;
}
else if (TryDateTime(actual, convert, out DateTime actualDateTime) && TryDateTime(expected, convert: true, value: out DateTime expectedDateTime))
{
compare = Comparer<DateTime>.Default.Compare(actualDateTime, expectedDateTime);
value = actualDateTime;
return true;
}
else if ((TryStringLength(actual, out actualInt) || TryArrayLength(actual, out actualInt)) && TryInt(expected, convert: true, value: out expectedInt))
{
compare = Comparer<int>.Default.Compare(actualInt, expectedInt);
value = actualInt;
return true;
}
compare = 0;
value = 0;
return false;
}