public void ReferenceNullableEquals_Values() { const string value = "value"; Assert.True(IcUtils.ReferenceQuality(null, null)); Assert.True(IcUtils.ReferenceQuality(value, value)); Assert.False(IcUtils.ReferenceQuality(null, value)); Assert.False(IcUtils.ReferenceQuality(value, null)); Assert.IsNull(IcUtils.ReferenceQuality(value, "other")); }
public static bool AreEqual <CollectionT>(CollectionT left, CollectionT right, string itemsName) where CollectionT : ItemsModel <ItemT>, new() { var refDebt = IcUtils.ReferenceQuality(left, right); if (refDebt != null) { return((bool)refDebt); } var leftCopy = new CollectionT() { FieldsShallow = left.FieldsShallow, InternalItems = null, }; var rightCopy = new CollectionT() { FieldsShallow = right.FieldsShallow, InternalItems = null, }; if (leftCopy != (Model)rightCopy) // compare non collection attributes { return(false); } var lineRef = left.KeyRefEquality(right, itemsName); if (lineRef != null) { return((bool)lineRef); } // compare lines return(left.InternalItems.EqualsCollection(right.InternalItems)); }
/// <summary> /// Test models for equality /// </summary> /// <param name="left"></param> /// <param name="right"></param> /// <returns></returns> public static bool operator ==(Model left, Model right) { return(IcUtils.ReferenceQuality(left, right) ?? left._fields.EqualsCollection(right._fields)); }