public void Equals_BothKeysNull_True() { IEqualityComparer <string> subject = new SelectorEqualizer <string, string>(s => null); Assert.That(subject.Equals("x", "x"), Is.True); Assert.That(subject.Equals("x", "y"), Is.True); }
public void Equals_NoKeyIsNull_KeysCompared() { IEqualityComparer <string> subject = new SelectorEqualizer <string, string>(s => s.ToLower()); Assert.That(subject.Equals("AB", "ab"), Is.True); Assert.That(subject.Equals("AB", "CD"), Is.False); }
public void Clients_DoNotHaveToCareAboutNulls() { var notNull = new EqualitySubject("a", 1, 1m); var chainable = new SelectorEqualizer <EqualitySubject, int>(s => s.I); Assert.That(chainable.Equals(notNull, null), Is.False); Assert.That(chainable.Equals(null, notNull), Is.False); Assert.That(chainable.Equals(null, null), Is.True); }
public void Chaining_IsDestructive() { EqualitySubject x1 = new EqualitySubject("x", 1, 1m), x2 = new EqualitySubject("x", 1, 2m); ChainableEqualizer <EqualitySubject> sAndI = new SelectorEqualizer <EqualitySubject, string>(s => s.S) .Then(s => s.I); Assert.That(sAndI.Equals(x1, x2), Is.True); var allProp = sAndI.Then(Eq <EqualitySubject> .By(s => s.D)); Assert.That(allProp.Equals(x1, x2), Is.False); Assert.That(sAndI.Equals(x1, x2), Is.False); }
public void Equals_OneKeyNull_False(string first, string second) { Func <string, string> notNullIfStartsWithCapital = x => char.IsUpper(x[0]) ? x : null; IEqualityComparer <string> subject = new SelectorEqualizer <string, string>(notNullIfStartsWithCapital); Assert.That(subject.Equals(first, second), Is.False); }
public void Equals_NoKeyIsNull_EqualsInvoked() { EqualitySpy spyForX = new EqualitySpy(), spyForY = new EqualitySpy(); Func <string, EqualitySpy> eachSpyToEachLetter = s => s.Equals("x") ? spyForX : spyForY; IEqualityComparer <string> subject = new SelectorEqualizer <string, EqualitySpy>(eachSpyToEachLetter); subject.Equals("x", "y"); Assert.That(spyForX.EqualsCalled, Is.True); Assert.That(spyForY.EqualsCalled, Is.True); }
public void Equals_OneKeyNull_SelectedEqualsNotCalled() { EqualitySpy spyForX = new EqualitySpy(), spyForY = new EqualitySpy(); Func <string, EqualitySpy> spyXForX = s => s.Equals("x") ? spyForX : null; Func <string, EqualitySpy> spyYForY = s => s.Equals("y") ? spyForY : null; IEqualityComparer <string> subject = new SelectorEqualizer <string, EqualitySpy>(spyXForX); subject.Equals("x", "y"); Assert.That(spyForX.EqualsCalled, Is.False); subject = new SelectorEqualizer <string, EqualitySpy>(spyYForY); subject.Equals("x", "y"); Assert.That(spyForY.EqualsCalled, Is.False); }
public void Explore() { IEqualityComparer <EqualitySubject> subject = new SelectorEqualizer <EqualitySubject, int>(s => s.I); Assert.That(subject.Equals(new EqualitySubject { I = 1 }, new EqualitySubject { I = 2 }), Is.False); Assert.That(subject.GetHashCode(new EqualitySubject { I = 1 }), Is.EqualTo(1.GetHashCode())); IEqualityComparer <EqualitySubject> byDAndI = new SelectorEqualizer <EqualitySubject, decimal>(s => s.D) .Then(s => s.I); byDAndI = Eq <EqualitySubject> .By(s => s.D) .Then(s => s.I); }