I have a custom type Type that implement IEquatable(Type). Then I new up two instances of the type, none of them are Null

Assert.IsTrue(obj1.equals(obj2)) //Success
Assert.AreEqual(obj1, obj2) //False
Assert.AreEqual(Type)(obj1, obj2) //False

The first one hits my equals, the second one hits the ToString() Any suggestions?

update
some code to illustrate: http://pastebin.com/1uecrfeW

more update
If I have to override the base equals, even if a better (generic) equals is available, then what's the use of implementing IEquals(T)?

Edit
Report