I was thinking of an equality check
public class SomeObjectComparer: IComparer
{
int Compare(object x, object y)
{
// compare SomeObjects
}
}
[Test]
public void Test()
{
SomeObject compareTo;
mock.ExpectCall("SomeMethod").Args(Check.IsComparable(compareTo, new SomeObjectComparer()));
// true if SomeObjectComparer.Compare(arg, compareTo) == 0
}
but I suppose you could also do:
public enum CompareResult
{
LessThan
EqualTo
GreaterThan
}
[Test]
public void Test()
{
CompareResult expectedCompareResult = CompareResult.LessThan
mock.ExpectCall("SomeMethod").Args(Check.IsComparable(compareTo, new SomeObjectComparer(), expectedCompareResult));
// true if SomeObjectComparer.Compare(arg, compareTo) < 0; (arg is less than compareTo)
}
Maybe use of IComparer is confusing, it might be better to define a new interface?