public void Compare() { var comparer = new NullComparer <string>(); Assert.That(comparer.Compare("a", "a"), Is.EqualTo(0)); Assert.That(comparer.Compare("a", "b"), Is.EqualTo(0)); Assert.That(comparer.Compare("b", "a"), Is.EqualTo(0)); }
public int Compare(T x, T y) { var enumerableComparer = new EnumerableComparer(); if (enumerableComparer.CanCompare(x, y)) { return(enumerableComparer.Compare((IEnumerable)x, (IEnumerable)y)); } var nullComparer = new NullComparer(); if (nullComparer.CanCompare(x, y)) { return(nullComparer.Compare(x, y)); } // Same type? if (x.GetType() != y.GetType()) { return(-1); } // Implements IComparable<T>? IComparable <T> comparable1 = x as IComparable <T>; if (comparable1 != null) { return(comparable1.CompareTo(y)); } // Implements IComparable? IComparable comparable2 = x as IComparable; if (comparable2 != null) { return(comparable2.CompareTo(y)); } // Implements IEquatable<T>? IEquatable <T> equatable = x as IEquatable <T>; if (equatable != null) { return(equatable.Equals(y) ? 0 : -1); } // Last case, rely on Object.Equals return(object.Equals(x, y) ? 0 : -1); }
public int Compare(TestClassIEquatable x, TestClassIEquatable y) { string msg; WriteLine(msg = $"{MethodBase.GetCurrentMethod().Name}"); Debug.WriteLine(msg); var compare = NullComparer <int?> .Compare(x.PInt1, y.PInt1); if (compare != 0) { return(compare); } compare = NullComparer <int?> .Compare(x.PInt2, y.PInt2); if (compare != 0) { return(compare); } return(NullComparer <int?> .Compare(x.PInt3, y.PInt3)); }
public void IsNull() { INullObject comparer = new NullComparer <string>(); Assert.That(comparer.IsNull, Is.True); }
private static void _verifySame(State state) { object left = state.Left; object right = state.Right; string crumb = state.Crumb; int maxDepth = state.MaxDepth; var log = state.Log; int depth = state.CurrentDepth; log.Info(state.ToString(), state.CurrentDepth); if (depth > maxDepth) { var msg = $"Maximum object depth of {state.MaxDepth} exceeded. {crumb}"; throw new VerifyException(msg, "NA", "NA", "NA"); } if (NullComparer.BothNull(state)) { return; } var properties = PropertyHelper.ComparableProperties(left, right); foreach (var prop in properties) { var name = prop.Name; var propCrumb = $"{crumb}.{name}"; var newstate = state.CreateChildState(prop.Type, name, prop.LHS, prop.RHS, propCrumb); // NULLS // ----- if (NullComparer.BothNull(newstate)) { continue; } //DATETIME // ------- if (DateTimeComparer.Compare(newstate)) { continue; } //TIMESPAN // ------- if (TimeSpanComparer.Compare(newstate)) { continue; } // STRING COMPARABLE // ----------------- if (StringComparer.CompareByStrings(newstate)) { continue; } // LISTS if (name.Contains("IList`")) { continue; } // CLASS // ----- _verifySame(newstate); } }