/// <summary> /// Compares two <see cref="IReadOnlyNodeState"/> objects. /// </summary> /// <param name="comparer">The comparison support object.</param> /// <param name="other">The other object.</param> public virtual bool IsEqual(CompareEqual comparer, IEqualComparable other) { Debug.Assert(other != null); if (!comparer.IsSameType(other, out ReadOnlyNodeState <IInner> AsNodeState)) { return(comparer.Failed()); } if (!comparer.VerifyEqual((IEqualComparable)ParentIndex, (IEqualComparable)AsNodeState.ParentIndex)) { return(comparer.Failed()); } if (!comparer.IsTrue((ParentInner == null && AsNodeState.ParentInner == null) || (ParentInner != null && AsNodeState.ParentInner != null)) || (ParentInner != null && !comparer.VerifyEqual(ParentInner, AsNodeState.ParentInner))) { return(comparer.Failed()); } if (!comparer.IsTrue((ParentState == null && AsNodeState.ParentState == null) || (ParentState != null && AsNodeState.ParentState != null)) || (ParentState != null && !comparer.VerifyEqual(ParentState, AsNodeState.ParentState))) { return(comparer.Failed()); } return(true); }
private protected virtual bool IsChildrenEqual(CompareEqual comparer, IReadOnlyNodeState nodeState) { if (!comparer.VerifyEqual(InnerTable, nodeState.InnerTable)) { return(comparer.Failed()); } if (!comparer.IsSameCount(ValuePropertyTypeTable.Count, nodeState.ValuePropertyTypeTable.Count)) { return(comparer.Failed()); } foreach (KeyValuePair <string, ValuePropertyType> Entry in ValuePropertyTypeTable) { if (!comparer.IsTrue(nodeState.ValuePropertyTypeTable.ContainsKey(Entry.Key))) { return(comparer.Failed()); } if (!comparer.IsTrue(nodeState.ValuePropertyTypeTable[Entry.Key] == Entry.Value)) { return(comparer.Failed()); } } return(true); }
/// <inheritdoc/> public virtual bool IsEqual(CompareEqual comparer, IEqualComparable other) { Contract.RequireNotNull(other, out IEqualComparable Other); if (!comparer.IsSameType(Other, out FrameAssignableCellViewDictionary <TKey> AsOtherDictionary)) { return(comparer.Failed()); } if (!comparer.IsSameCount(Count, AsOtherDictionary.Count)) { return(comparer.Failed()); } foreach (KeyValuePair <TKey, IFrameAssignableCellView> Entry in this) { if (!comparer.IsTrue(AsOtherDictionary.ContainsKey(Entry.Key))) { return(comparer.Failed()); } if (!comparer.VerifyEqual(Entry.Value, AsOtherDictionary[Entry.Key])) { return(comparer.Failed()); } } return(true); }
/// <summary> /// Compares two <see cref="IReadOnlyBlockStateViewDictionary"/> objects. /// </summary> /// <param name="comparer">The comparison support object.</param> /// <param name="other">The other object.</param> public virtual bool IsEqual(CompareEqual comparer, IEqualComparable other) { Debug.Assert(other != null); if (!comparer.IsSameType(other, out ReadOnlyBlockStateViewDictionary AsBlockStateViewDictionary)) { return(comparer.Failed()); } if (!comparer.IsSameCount(Count, AsBlockStateViewDictionary.Count)) { return(comparer.Failed()); } foreach (KeyValuePair <IReadOnlyBlockState, IReadOnlyBlockStateView> Entry in this) { if (!comparer.IsTrue(AsBlockStateViewDictionary.ContainsKey(Entry.Key))) { return(comparer.Failed()); } if (!comparer.VerifyEqual(Entry.Value, AsBlockStateViewDictionary[Entry.Key])) { return(comparer.Failed()); } } return(true); }
/// <inheritdoc/> public virtual bool IsEqual(CompareEqual comparer, IEqualComparable other) { Contract.RequireNotNull(other, out IEqualComparable Other); if (!comparer.IsSameType(Other, out ReadOnlyNodeStateViewReadOnlyDictionary AsOtherReadOnlyDictionary)) { return(comparer.Failed()); } if (!comparer.IsSameCount(Count, AsOtherReadOnlyDictionary.Count)) { return(comparer.Failed()); } foreach (KeyValuePair <IReadOnlyNodeState, IReadOnlyNodeStateView> Entry in this) { if (!comparer.IsTrue(AsOtherReadOnlyDictionary.ContainsKey(Entry.Key))) { return(comparer.Failed()); } if (!comparer.VerifyEqual(Entry.Value, AsOtherReadOnlyDictionary[Entry.Key])) { return(comparer.Failed()); } } return(true); }
/// <summary> /// Compares two <see cref="FrameEmptyNodeStateView"/> objects. /// </summary> /// <param name="comparer">The comparison support object.</param> /// <param name="other">The other object.</param> public override bool IsEqual(CompareEqual comparer, IEqualComparable other) { Contract.RequireNotNull(other, out IEqualComparable Other); if (!comparer.IsSameType(Other, out FrameEmptyNodeStateView AsEmptyNodeStateView)) return comparer.Failed(); if (!base.IsEqual(comparer, AsEmptyNodeStateView)) return comparer.Failed(); if (!comparer.IsSameReference(Template, AsEmptyNodeStateView.Template)) return comparer.Failed(); if (!comparer.IsTrue((RootCellView == null || AsEmptyNodeStateView.RootCellView != null) && (RootCellView != null || AsEmptyNodeStateView.RootCellView == null))) return comparer.Failed(); if (RootCellView != null) { Debug.Assert(CellViewTable != null); Debug.Assert(AsEmptyNodeStateView.CellViewTable != null); if (!comparer.VerifyEqual(RootCellView, AsEmptyNodeStateView.RootCellView)) return comparer.Failed(); if (!comparer.VerifyEqual(CellViewTable, AsEmptyNodeStateView.CellViewTable)) return comparer.Failed(); } return true; }
/// <inheritdoc/> public override bool IsEqual(CompareEqual comparer, IEqualComparable other) { Contract.RequireNotNull(other, out IEqualComparable Other); if (!comparer.IsSameType(Other, out LayoutBlockStateViewReadOnlyDictionary AsOtherReadOnlyDictionary)) { return(comparer.Failed()); } if (!comparer.IsSameCount(Count, AsOtherReadOnlyDictionary.Count)) { return(comparer.Failed()); } foreach (ILayoutBlockState Key in Keys) { LayoutBlockStateView Value = (LayoutBlockStateView)this[Key]; if (!comparer.IsTrue(AsOtherReadOnlyDictionary.ContainsKey(Key))) { return(comparer.Failed()); } if (!comparer.VerifyEqual(Value, AsOtherReadOnlyDictionary[Key])) { return(comparer.Failed()); } } return(true); }
/// <summary> /// Compares two <see cref="IReadOnlyNodeState"/> objects. /// </summary> /// <param name="comparer">The comparison support object.</param> /// <param name="other">The other object.</param> public override bool IsEqual(CompareEqual comparer, IEqualComparable other) { Debug.Assert(other != null); if (!comparer.IsSameType(other, out ReadOnlyOptionalNodeState <IInner> AsOptionalNodeState)) { return(comparer.Failed()); } if (!base.IsEqual(comparer, AsOptionalNodeState)) { return(comparer.Failed()); } if (!comparer.IsTrue(Optional.IsAssigned == AsOptionalNodeState.Optional.IsAssigned)) { return(comparer.Failed()); } if (Optional.HasItem) { if (!comparer.IsSameReference(Node, AsOptionalNodeState.Node)) { return(comparer.Failed()); } if (!IsChildrenEqual(comparer, AsOptionalNodeState)) { return(comparer.Failed()); } } return(true); }
/// <inheritdoc/> public override bool IsEqual(CompareEqual comparer, IEqualComparable other) { Contract.RequireNotNull(other, out IEqualComparable Other); if (!comparer.IsSameType(Other, out WriteableInnerDictionary <TKey> AsOtherDictionary)) { return(comparer.Failed()); } if (!comparer.IsSameCount(Count, AsOtherDictionary.Count)) { return(comparer.Failed()); } foreach (TKey Key in Keys) { IWriteableInner Value = (IWriteableInner)this[Key]; if (!comparer.IsTrue(AsOtherDictionary.ContainsKey(Key))) { return(comparer.Failed()); } if (!comparer.VerifyEqual(Value, AsOtherDictionary[Key])) { return(comparer.Failed()); } } return(true); }
/// <summary> /// Compares two <see cref="IFocusStateViewDictionary"/> objects. /// </summary> /// <param name="comparer">The comparison support object.</param> /// <param name="other">The other object.</param> public virtual bool IsEqual(CompareEqual comparer, IEqualComparable other) { Debug.Assert(other != null); if (!comparer.IsSameType(other, out FocusStateViewDictionary AsStateViewDictionary)) { return(comparer.Failed()); } if (!comparer.IsSameCount(Count, AsStateViewDictionary.Count)) { return(comparer.Failed()); } foreach (KeyValuePair <IFocusNodeState, IFocusNodeStateView> Entry in this) { IFocusNodeState Key = Entry.Key; IFocusNodeStateView Value = Entry.Value; if (!comparer.IsTrue(AsStateViewDictionary.ContainsKey(Key))) { return(comparer.Failed()); } if (!comparer.VerifyEqual(Value, AsStateViewDictionary[Key])) { return(comparer.Failed()); } } return(true); }
private bool IsEqualTable(CompareEqual comparer, List <IReadOnlyIndex> otherTable, out IDictionary <IReadOnlyIndex, IReadOnlyIndex> matchTable) { matchTable = new Dictionary <IReadOnlyIndex, IReadOnlyIndex>(); CompareEqual MatchComparer = CompareEqual.New(true); foreach (KeyValuePair <IReadOnlyIndex, IReadOnlyNodeState> Entry in StateTable) { MatchComparer.Reset(); bool Found = false; for (int i = 0; i < otherTable.Count; i++) { if (MatchComparer.VerifyEqual((IEqualComparable)Entry.Key, (IEqualComparable)otherTable[i])) { matchTable.Add(Entry.Key, otherTable[i]); otherTable.RemoveAt(i); Found = true; break; } } if (!comparer.IsTrue(Found)) { return(comparer.Failed()); } } return(true); }
/// <summary> /// Compares two <see cref="IFocusInnerReadOnlyDictionary{TKey}"/> objects. /// </summary> /// <param name="comparer">The comparison support object.</param> /// <param name="other">The other object.</param> public virtual bool IsEqual(CompareEqual comparer, IEqualComparable other) { Debug.Assert(other != null); if (!comparer.IsSameType(other, out FocusInnerReadOnlyDictionary <TKey> AsInnerReadOnlyDictionary)) { return(comparer.Failed()); } if (!comparer.IsSameCount(Count, AsInnerReadOnlyDictionary.Count)) { return(comparer.Failed()); } foreach (KeyValuePair <TKey, IFocusInner> Entry in this) { if (!comparer.IsTrue(AsInnerReadOnlyDictionary.ContainsKey(Entry.Key))) { return(comparer.Failed()); } if (!comparer.VerifyEqual(Entry.Value, AsInnerReadOnlyDictionary[Entry.Key])) { return(comparer.Failed()); } } return(true); }
/// <summary> /// Compares two <see cref="ILayoutAssignableCellViewReadOnlyDictionary{TKey}"/> objects. /// </summary> /// <param name="comparer">The comparison support object.</param> /// <param name="other">The other object.</param> public virtual bool IsEqual(CompareEqual comparer, IEqualComparable other) { Debug.Assert(other != null); if (!comparer.IsSameType(other, out LayoutAssignableCellViewReadOnlyDictionary <TKey> AsAssignableCellViewReadOnlyDictionary)) { return(comparer.Failed()); } if (!comparer.IsSameCount(Count, AsAssignableCellViewReadOnlyDictionary.Count)) { return(comparer.Failed()); } foreach (KeyValuePair <TKey, ILayoutAssignableCellView> Entry in this) { Debug.Assert(Entry.Key != null); if (!comparer.IsTrue(AsAssignableCellViewReadOnlyDictionary.ContainsKey(Entry.Key))) { return(comparer.Failed()); } ILayoutAssignableCellView OtherValue = AsAssignableCellViewReadOnlyDictionary[Entry.Key] as ILayoutAssignableCellView; if (!comparer.IsTrue((Entry.Value != null && OtherValue != null) || (Entry.Value == null && OtherValue == null))) { return(comparer.Failed()); } if (Entry.Value != null) { if (!comparer.VerifyEqual(Entry.Value, OtherValue)) { return(comparer.Failed()); } } } return(true); }
private protected virtual bool IsEmbeddingCellViewEqual(CompareEqual comparer, IFrameBlockStateView other) { if (!comparer.IsTrue((EmbeddingCellView == null && other.EmbeddingCellView == null) || (EmbeddingCellView != null && other.EmbeddingCellView != null))) { return(comparer.Failed()); } if (EmbeddingCellView != null) { if (!comparer.VerifyEqual(EmbeddingCellView, other.EmbeddingCellView)) { return(comparer.Failed()); } } return(true); }
/// <summary> /// Compares two <see cref="IFrameOptionalNodeStateView"/> objects. /// </summary> /// <param name="comparer">The comparison support object.</param> /// <param name="other">The other object.</param> public override bool IsEqual(CompareEqual comparer, IEqualComparable other) { Debug.Assert(other != null); if (!comparer.IsSameType(other, out FrameOptionalNodeStateView AsOptionalNodeStateView)) { return(comparer.Failed()); } if (!base.IsEqual(comparer, AsOptionalNodeStateView)) { return(comparer.Failed()); } if (!comparer.IsSameReference(Template, AsOptionalNodeStateView.Template)) { return(comparer.Failed()); } if (!comparer.IsTrue((RootCellView == null || AsOptionalNodeStateView.RootCellView != null) && (RootCellView != null || AsOptionalNodeStateView.RootCellView == null))) { return(comparer.Failed()); } if (RootCellView != null) { Debug.Assert(CellViewTable != null); Debug.Assert(AsOptionalNodeStateView.CellViewTable != null); if (!comparer.VerifyEqual(RootCellView, AsOptionalNodeStateView.RootCellView)) { return(comparer.Failed()); } if (!comparer.VerifyEqual(CellViewTable, AsOptionalNodeStateView.CellViewTable)) { return(comparer.Failed()); } } return(true); }
/// <inheritdoc/> public override bool IsEqual(CompareEqual comparer, IEqualComparable other) { Contract.RequireNotNull(other, out IEqualComparable Other); if (!comparer.IsSameType(Other, out LayoutAssignableCellViewReadOnlyDictionary <TKey> AsOtherReadOnlyDictionary)) { return(comparer.Failed()); } if (!comparer.IsSameCount(Count, AsOtherReadOnlyDictionary.Count)) { return(comparer.Failed()); } foreach (TKey Key in Keys) { if (!comparer.IsTrue(AsOtherReadOnlyDictionary.ContainsKey(Key))) { return(comparer.Failed()); } ILayoutAssignableCellView ThisValue = (ILayoutAssignableCellView)this[Key]; ILayoutAssignableCellView OtherValue = (ILayoutAssignableCellView)AsOtherReadOnlyDictionary[Key]; if (!comparer.IsTrue((ThisValue is null && OtherValue is null) || (ThisValue is not null && OtherValue is not null))) { return(comparer.Failed()); } if (ThisValue is not null) { if (!comparer.VerifyEqual(ThisValue, OtherValue)) { return(comparer.Failed()); } } } return(true); }
/// <inheritdoc/> public override bool IsEqual(CompareEqual comparer, IEqualComparable other) { Contract.RequireNotNull(other, out IEqualComparable Other); if (!comparer.IsSameType(Other, out FocusAssignableCellViewDictionary<TKey> AsOtherDictionary)) return comparer.Failed(); if (!comparer.IsSameCount(Count, AsOtherDictionary.Count)) return comparer.Failed(); foreach (TKey Key in Keys) { IFocusAssignableCellView Value = (IFocusAssignableCellView)this[Key]; if (!comparer.IsTrue(AsOtherDictionary.ContainsKey(Key))) return comparer.Failed(); if (!comparer.VerifyEqual(Value, AsOtherDictionary[Key])) return comparer.Failed(); } return true; }