public void TestKeyEquatableEquals() { var sut = KeyEqualityComparer.Default; var a1 = new MyEntity("a", "v1") as IKeyEquatable; var a2 = new MyEntity("a", "v2") as IKeyEquatable; var b1 = new MyEntity("b", "v1") as IKeyEquatable; a1.KeyEquals(a2).ShouldBeEquivalentTo(true); a2.KeyEquals(a1).ShouldBeEquivalentTo(true); a1.KeyEquals(a1).ShouldBeEquivalentTo(true); a2.KeyEquals(a2).ShouldBeEquivalentTo(true); a1.KeyEquals(null).ShouldBeEquivalentTo(false); a1.KeyEquals("!!").ShouldBeEquivalentTo(false); b1.KeyEquals(a2).ShouldBeEquivalentTo(false); a1.KeyEquals(b1).ShouldBeEquivalentTo(false); sut.Equals(a1, a2).ShouldBeEquivalentTo(true); sut.Equals(a2, a1).ShouldBeEquivalentTo(true); sut.Equals(a1, a1).ShouldBeEquivalentTo(true); sut.Equals(a2, a2).ShouldBeEquivalentTo(true); sut.Equals(null, a2).ShouldBeEquivalentTo(false); sut.Equals(a1, null).ShouldBeEquivalentTo(false); sut.Equals(null, null).ShouldBeEquivalentTo(true); sut.Equals(b1, a2).ShouldBeEquivalentTo(false); sut.Equals(a1, b1).ShouldBeEquivalentTo(false); }