public void ForEachPeriodsTest(PeriodKind periodKind) { var count = 0; var period = GetPeriod(); if (period.HasPeriod) { var periods = TimeTool.ForEachPeriods(period, periodKind).Take(1000); periods.RunEach(item => { count++; }); Assert.AreEqual(periods.Count(), count); } }
public void RunPeriodTest(PeriodKind periodKind) { var period = GetPeriod(); if (period.HasPeriod) { var periods = TimeTool.ForEachPeriods(period, periodKind).Take(1000); var count = 0; var max = TimeTool.RunPeriod(period, periodKind, p => ++ count).Take(1000).Last(); Assert.AreEqual(periods.Count(), max); } }
public void RunPeriodAsParallelTest(PeriodKind periodKind) { var period = GetPeriod(); if (period.HasPeriod) { var periods = TimeTool.ForEachPeriods(period, periodKind).Take(1000); //! 이건 좋은 예가 아닙니다. 병렬 작업 중에 locking을 수행하는 것은 좋은 코드가 아닙니다. //! 단지, 병렬로 작업이 처리될 수 있음을 테스트 하기 위한 코드입니다. // var count = 0; var lastCount = TimeTool.RunPeriodAsParallel(period, periodKind, p => Interlocked.Increment(ref count)).OrderBy(x => x).Take(1000). Max(); Assert.AreEqual(periods.Count(), lastCount); } }
public void RunPeriodAsyncTest(PeriodKind periodKind) { var period = GetPeriod(); if (period.HasPeriod) { if (periodKind == PeriodKind.Day) { period.ShrinkStartTo(period.End.AddYears(-1)); } if (periodKind == PeriodKind.Hour || periodKind == PeriodKind.Minute) { period.ShrinkStartTo(period.End.AddMonths(-1)); } var periods = TimeTool.ForEachPeriods(period, periodKind).Take(1000); var count = 0; var max = TimeTool.RunPeriodAsync(period, periodKind, p => Interlocked.Increment(ref count)).Take(1000).Last(); Assert.AreEqual(periods.Count(), max); } }