예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
        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);
            }
        }
예제 #4
0
        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);
            }
        }