Пример #1
0
        private void CheckMergedList <T>(int startMins, int endMins, IProductionEvents <T> eventsList, T overrideId, T[] ids, DateTime[] dateTimes, DateTime startOverride, DateTime endOverride)
        {
            DateTime[] expectedDates;
            T[]        expectedIds;
            if (startMins == -105 && endMins == -75) //override spanning start
            {
                expectedDates = new[] { startOverride, endOverride, dateTimes[1], dateTimes[2] };
                expectedIds   = new[] { overrideId, ids[0], ids[1], ids[2] };
            }
            else if (startMins == -75 && endMins == -45) //override the middle
            {
                expectedDates = new[] { dateTimes[0], startOverride, endOverride, dateTimes[2] };
                expectedIds   = new[] { ids[0], overrideId, ids[1], ids[2] };
            }
            else if (startMins == -45 && endMins == -15) //override spanning end
            {
                expectedDates = new[] { dateTimes[0], dateTimes[1], startOverride, endOverride };
                expectedIds   = new[] { ids[0], ids[1], overrideId, ids[2] };
            }
            else if (startMins == -105 && endMins == -15) //override whole range
            {
                expectedDates = new[] { startOverride, endOverride };
                expectedIds   = new[] { overrideId, ids[2] };
            }
            else //startMins == -80 && endMins == -70 //override within machine events
            {
                expectedDates = new[] { dateTimes[0], startOverride, endOverride, dateTimes[1], dateTimes[2] };
                expectedIds   = new[] { ids[0], overrideId, ids[0], ids[1], ids[2] };
            }

            var mutableStream   = eventsList.GetMutableStream();
            var targetEventList = Deserialize(mutableStream);

            Assert.Equal(expectedDates.Length, targetEventList.Count());

            var eventList = ((ProductionEvents <T>)targetEventList).Events;

            for (var i = 0; i < eventList.Count; i++)
            {
                Assert.Equal(expectedDates[i], eventList[i].Date);
                Assert.Equal(expectedIds[i], eventList[i].State);
            }

            var immutableStream = eventsList.GetImmutableStream();

            targetEventList = Deserialize(immutableStream);
            Assert.Equal(expectedDates.Length, targetEventList.Count());

            eventList = ((ProductionEvents <T>)targetEventList).Events;
            for (var i = 0; i < eventList.Count; i++)
            {
                Assert.Equal(expectedDates[i], eventList[i].Date);
                Assert.Equal(expectedIds[i], eventList[i].State);
            }
        }