//合并操作符用于多级比较 public int Compare(Product first, Product second) { return(PartialComparer.Compare(first, second) ?? PartialComparer.Compare(first.Price, second.Price) ?? PartialComparer.Compare(first.SupplierID, second.SupplierID) ?? PartialComparer.Compare(first.Name, second.Name) ?? 0); }
public void DifferentNonNullReferencesReturnNull() { // Just to be extra careful, make two different references to equal strings. // That way we know we're not actually doing comparisons! string x1 = new string(new [] { 'x' }); string x2 = new string(new [] { 'x' }); Assert.AreNotSame(x1, x2); Assert.IsNull(PartialComparer.ReferenceCompare(x1, x2)); }
public void CompareReturnsNullWhenSpecifiedComparerReturnsZero() { MockRepository factory = new MockRepository(); IComparer <string> comparer = factory.CreateMock <IComparer <string> >(); Expect.Call(comparer.Compare("first", "second")).Return(0); factory.ReplayAll(); Assert.IsNull(PartialComparer.Compare(comparer, "first", "second")); factory.VerifyAll(); }
public void DefaultEqualReturnsNull() { Assert.IsNull(PartialComparer.Compare(4, 4)); }
public void DefaultGreaterThanReturnsGreaterThanZero() { Assert.IsTrue(PartialComparer.Compare(5, 3) > 0); }
public void DefaultLessThanReturnsLessThanZero() { Assert.IsTrue(PartialComparer.Compare(3, 5) < 0); }
public void NonNullGreaterThanNull() { Assert.AreEqual(1, PartialComparer.ReferenceCompare("x", null).Value); }
public void TwoNullReferencesReturnZero() { Assert.AreEqual(0, PartialComparer.ReferenceCompare <string>(null, null).Value); }
public void NullLessThanNonNull() { Assert.AreEqual(-1, PartialComparer.ReferenceCompare(null, "x").Value); }
public void DifferentNonNullReferencesReturnMaybe() { Assert.IsNull(PartialComparer.Equals("first", "second")); }
public void NonNullAndNullAreUnequal() { Assert.IsFalse(PartialComparer.Equals("non-null", null).Value); }
public void EqualNonNullReferencesReturnZero() { Assert.AreEqual(0, PartialComparer.ReferenceCompare("x", "x").Value); }
public void NullAndNonNullAreUnequal() { Assert.IsFalse(PartialComparer.Equals <string>(null, "non-null").Value); }
public void TwoNullReferencesAreEqual() { Assert.IsTrue(PartialComparer.Equals <string>(null, null).Value); }