Paul,
You're right. Equality is supposed to be symmetric and NUnit assumes
it is by picking one of the args (the expected value) on which to call
Equals. However, what seems likely here is that we are using object
equality rather than int.
IIRC (I'm not actually looking at the code right now) we make tests to
find out if both values are "numeric" and apply conversions in each
case. Unfortunately, we don't recognize your custom type as numeric.
We have had issues filed on this in the past. Folks have asked for a
way to indicate to us that their own special type should be treated as
numeric. Up to now, we have not found a clean way to do do so - and
frankly have not spent a lot of time on it.
I'd be curious to know if you get the same result using Assert.That.
An error in how Assert.That works would get higher priority than one
in the classic (legacy) asserts.
Charlie