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,
            });
Exemplo n.º 2
0
        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