public ReadOnlyMemoryAssertions <TActualItem> BeEqualTo <TExpected, TExpectedItem>(TExpected expected, Func <TActualItem, TExpectedItem, bool> comparer) where TExpected : IEnumerable <TExpectedItem> { if (expected is null) { throw new EqualToAssertionException <TActualItem[], TExpected>(Actual.ToArray(), expected); } var(result, index, _, _) = Actual.Span.Compare(expected, comparer); return(result switch { EqualityResult.NotEqualAtIndex => throw new EqualToAssertionException <TActualItem[], TExpected>( Actual.ToArray(), expected, $"Collections differ at index {index}."), EqualityResult.LessItem => throw new EqualToAssertionException <TActualItem[], TExpected>( Actual.ToArray(), expected, $"Actual collection has less items."), EqualityResult.MoreItems => throw new EqualToAssertionException <TActualItem[], TExpected>( Actual.ToArray(), expected, $"Actual collection has more items."), _ => this, });
public void BuildWorkingSet() { if (Planned.Count == Actual.Count) { Schedule[] aryPlanned = Planned.ToArray(); Schedule[] aryActual = Actual.ToArray(); for (int i = 0; i < Planned.Count; i++) { Schedule oCurPlanned = aryPlanned[i]; Schedule oCurActual = aryActual[i]; if (oCurActual.Date != oCurPlanned.Date) { ScheduleState = ScheduleState.SameCountDiffDates; } WorkingSet.Add(new Schedule(this) { ID = oCurActual.ID, Date = oCurPlanned.Date, Principal = oCurPlanned.Principal }); } // for if (ScheduleState == ScheduleState.Unknown) { ScheduleState = ScheduleState.Match; } } else { ScheduleState = ScheduleState.DiffCount; BuildBadWorkingSet(); } // if } // BuildWorkingSet