public void PeriodLimitsSubtractTest() { var test = new DateTime(2011, 4, 30); var timeRange1 = new TimeRange(new DateTime(2011, 4, 20), new DateTime(2011, 4, 25)); var timeRange2 = new TimeRange(DateTime.MinValue, new DateTime(2011, 4, 6)); var calendarDateAdd = new CalendarDateAdd(); // 예외 기간을 설정합니다. 4월 10일 이전, 4월20일 ~ 4월25일 // calendarDateAdd.ExcludePeriods.Add(timeRange1); calendarDateAdd.ExcludePeriods.Add(timeRange2); calendarDateAdd.Subtract(test, DurationUtil.Days(1)).Should().Be(test.Subtract(DurationUtil.Days(1))); //! 4월 30일로부터 5일전이면 4월25일이지만, 예외기간이 4월20일~4월25일이므로, 4월20일을 반환합니다. // calendarDateAdd.Subtract(test, DurationUtil.Days(5)).Should().Be(timeRange1.Start); //! 4월 30일로부터 20일전이면, 4월10일 이지만 예외기간이 4월20일~4월25일이 있어 4월 5일이 되지만 4월 6일 이전은 예외기간이라 null을 반환합니다. // calendarDateAdd.Subtract(test, DurationUtil.Days(20)).HasValue.Should().Be.False(); calendarDateAdd.Add(test, DurationUtil.Days(3)).Should().Be(test.Add(DurationUtil.Days(3))); }
protected override string GetTitle() { if (endTime > 0.01) { string title = null; if (endTime - Planetarium.GetUniversalTime() > 0.0) { title = (waitingText ?? "Time to completion:") + " " + DurationUtil.StringValue(endTime - Planetarium.GetUniversalTime()); } else { title = completionText ?? "Wait time over"; } // Add the string that we returned to the titleTracker. This is used to update // the contract title element in the GUI directly, as it does not support dynamic // text. titleTracker.Add(title); return(title); } else { return((preWaitText ?? "Waiting time required:") + " " + DurationUtil.StringValue(duration)); } }
protected override string GetNotes() { if (duration > 0.0 && Root.ContractState == Contract.State.Active) { if (trackedVessel == null) { return("No vessel currently matching parameters."); } else if (!waiting) { return("Active Vessel:"); } else { string note = "Time remaining for " + trackedVessel.vesselName + ": " + DurationUtil.StringValue(completionTime - Planetarium.GetUniversalTime()); // Add the string that we returned to the noteTracker. This is used to update // the contract notes element in the GUI directly, as it does support dynamic // text. noteTracker[notePrefix + note] = note; return(note); } } return(base.GetNotes()); }
protected override string GetTitle() { // Set the first part of the output string output; if (!string.IsNullOrEmpty(title)) { output = title; } else { // Set the vessel name output = "Vessel: "; if ((waiting || state == ParameterState.Complete) && trackedVessel != null) { output += trackedVessel.vesselName; } else if (!string.IsNullOrEmpty(define)) { output += define + " (new)"; } else if (vesselList.Any()) { bool first = true; foreach (string vesselName in vesselList) { if (!first) { output += " OR "; } output += vesselName; first = false; } } else { output += "Any"; } } // Not yet complete, add duration if (state != ParameterState.Complete) { // Add duration if (duration > 0.0) { output += "; Duration: " + DurationUtil.StringValue(duration); } } // If we're complete and a custom title hasn't been provided, try to get a better title else if (!string.IsNullOrEmpty(title)) { if (ParameterCount == 1) { return(GetParameter(0).Title); } } return(output); }
protected override string GetParameterTitle() { Vessel currentVessel = CurrentVessel(); string title = null; if (currentVessel != null && endTimes.ContainsKey(currentVessel.id) && endTimes[currentVessel.id] > 0.01 || currentVessel == null && endTime > 0.01) { double time = currentVessel != null ? endTimes[currentVessel.id] : endTime; if (time - Planetarium.GetUniversalTime() > 0.0) { title = (waitingText ?? "Time to completion:") + " " + DurationUtil.StringValue(time - Planetarium.GetUniversalTime()); } else { title = completionText ?? "Wait time over"; } } else { title = (preWaitText ?? "Waiting time required:") + " " + DurationUtil.StringValue(duration); } return(title); }
public void CalendarGetGapTest() { // simmulation of some reservations var periods = new TimePeriodCollection { new DayRangeCollection(2011, 3, 7, 2), new DayRangeCollection(2011, 3, 16, 2) }; // the overall search range var limits = new CalendarTimeRange(new DateTime(2011, 3, 4), new DateTime(2011, 3, 21)); var days = new DayRangeCollection(limits.Start, limits.Duration.Days + 1); // limits의 내부이고, 주말인 DayRange를 추가합니다. var excludeDays = days.GetDays().Where(day => limits.HasInside(day) && day.DayOfWeek.IsWeekEnd()); periods.AddAll(excludeDays.Cast <ITimePeriod>()); var gapCalculator = new TimeGapCalculator <TimeRange>(new TimeCalendar()); var gaps = gapCalculator.GetGaps(periods, limits); gaps.Count.Should().Be(4); gaps[0].IsSamePeriod(new TimeRange(new DateTime(2011, 3, 4), DurationUtil.Days(1))).Should().Be.True(); gaps[1].IsSamePeriod(new TimeRange(new DateTime(2011, 3, 9), DurationUtil.Days(3))).Should().Be.True(); gaps[2].IsSamePeriod(new TimeRange(new DateTime(2011, 3, 14), DurationUtil.Days(2))).Should().Be.True(); gaps[3].IsSamePeriod(new TimeRange(new DateTime(2011, 3, 18), DurationUtil.Days(1))).Should().Be.True(); }
public void PeriodLimitsAddTest() { var test = new DateTime(2011, 4, 12); var timeRange1 = new TimeRange(new DateTime(2011, 4, 20), new DateTime(2011, 4, 25)); // 4월 20일~4월25일 var timeRange2 = new TimeRange(new DateTime(2011, 4, 30), null); // 4월 30일 이후 var calendarDateAdd = new CalendarDateAdd(); // 예외 기간을 설정합니다. 4월20일 ~ 4월25일, 4월30일 이후 // calendarDateAdd.ExcludePeriods.Add(timeRange1); calendarDateAdd.ExcludePeriods.Add(timeRange2); calendarDateAdd.Add(test, DurationUtil.Day).Should().Be(test.Add(DurationUtil.Day)); //! 4월 12일에 8일을 더하면 4월 20일이지만, 20~25일까지 제외되므로, 4월 25일이 된다. // calendarDateAdd.Add(test, DurationUtil.Days(8)).Should().Be(timeRange1.End); //! 4월 20일에 20일을 더하면, 4월 20~25일 제외 후를 계산하면 4월 30일 이후가 된다. 하지만 4월 30일 이후는 제외가 되므로, 결과값은 null이 된다. // calendarDateAdd.Add(test, DurationUtil.Days(20)).HasValue.Should().Be.False(); calendarDateAdd.Subtract(test, DurationUtil.Days(3)).Should().Be(test.Subtract(DurationUtil.Days(3))); }
public void CalendarDateAdd1Test() { CultureTestData.Default .RunEach(culture => { var timeCalendar = new TimeCalendar(new TimeCalendarConfig { Culture = culture, EndOffset = TimeSpan.Zero }); var calendarDateAdd = new CalendarDateAdd(timeCalendar); //! 주중 8시~18시가 Working Time 이고, 4월 4일은 제외한다 // calendarDateAdd.AddWorkingWeekDays(); calendarDateAdd.ExcludePeriods.Add(new DayRange(2011, 4, 4, calendarDateAdd.TimeCalendar)); calendarDateAdd.WorkingHours.Add(new HourRangeInDay(8, 18)); var start = new DateTime(2011, 4, 1, 9, 0, 0); calendarDateAdd.Add(start, DurationUtil.Hours(22)).Should().Be(new DateTime(2011, 4, 6, 11, 0, 0)); calendarDateAdd.Add(start, DurationUtil.Hours(22), SeekBoundaryMode.Fill).Should().Be(new DateTime(2011, 4, 6, 11, 0, 0)); calendarDateAdd.Add(start, DurationUtil.Hours(29)).Should().Be(new DateTime(2011, 4, 7, 8, 0, 0)); calendarDateAdd.Add(start, DurationUtil.Hours(29), SeekBoundaryMode.Fill).Should().Be(new DateTime(2011, 4, 6, 18, 0, 0)); }); }
public void IQueryOver_AddIsOverlap_IsOverlap_HasRange() { var loaded = UnitOfWork.CurrentSession.QueryOver <User>().AddIsOverlap( new TimeRange(DateTime.Now.AddHours(-1), DurationUtil.Hours(2)), u => u.ActivePeriod.Start, u => u.ActivePeriod.End); Assert.IsTrue(loaded.RowCount() > 0); loaded.List().RunEach(log.Debug); }
public void MillisecondTest() { DurationUtil.Millisecond.Should().Be(TimeSpan.FromMilliseconds(1)); DurationUtil.Milliseconds(0).Should().Be(TimeSpan.Zero); DurationUtil.Milliseconds(1).Should().Be(TimeSpan.FromMilliseconds(1)); DurationUtil.Milliseconds(2).Should().Be(TimeSpan.FromMilliseconds(2)); DurationUtil.Milliseconds(-1).Should().Be(TimeSpan.FromMilliseconds(-1)); DurationUtil.Milliseconds(-2).Should().Be(TimeSpan.FromMilliseconds(-2)); }
public void WeekTest() { DurationUtil.Week.Should().Be(TimeSpan.FromDays(TimeSpec.DaysPerWeek)); DurationUtil.Weeks(0).Should().Be(TimeSpan.Zero); DurationUtil.Weeks(1).Should().Be(TimeSpan.FromDays(TimeSpec.DaysPerWeek)); DurationUtil.Weeks(2).Should().Be(TimeSpan.FromDays(TimeSpec.DaysPerWeek * 2)); DurationUtil.Weeks(-1).Should().Be(TimeSpan.FromDays(TimeSpec.DaysPerWeek * -1)); DurationUtil.Weeks(-2).Should().Be(TimeSpan.FromDays(TimeSpec.DaysPerWeek * -2)); }
public void QueryOverOf_AddIsOverlap_IsOverlap_HasRange() { var loaded = QueryOver.Of <User>() .AddIsOverlap(new TimeRange(DateTime.Now.AddHours(-1), DurationUtil.Hours(2)), u => u.ActivePeriod.Start, u => u.ActivePeriod.End) .GetExecutableQueryOver(UnitOfWork.CurrentSession); loaded.RowCount().Should().Be.GreaterThan(0); loaded.List().RunEach(log.Debug); }
protected void CreateTimerParameter() { if (duration > 0.0) { durationParameter = new ParameterDelegate <Vessel>("Duration: " + DurationUtil.StringValue(duration), v => false); durationParameter.Optional = true; durationParameter.fakeOptional = true; AddParameter(durationParameter); } }
public void IQueryable_AddIsOverlap_IsOverlap_HasRange() { var loaded = Users .AddIsOverlap(new TimeRange(DateTime.Now.AddHours(-1), DurationUtil.Hours(2)), u => u.ActivePeriod.Start, u => u.ActivePeriod.End) .ToList(); Assert.IsTrue(loaded.Count > 0); loaded.RunEach(log.Debug); }
public void ICriteria_AddIsOverlap_IsOverlap_HasPeriod() { var loaded = Repository <User> .CreateCriteria() .AddIsOverlap(new TimeRange(DateTime.Now.AddHours(-1), DurationUtil.Hours(2)), "ActivePeriod.Start", "ActivePeriod.End") .List <User>(); Assert.IsTrue(loaded.Count > 0); loaded.RunEach(log.Debug); }
public void IncludeExclude6Test() { var dateAdd = new DateAdd(); dateAdd.IncludePeriods.Add(new TimeRange(new DateTime(2011, 3, 10), new DateTime(2011, 3, 20))); dateAdd.ExcludePeriods.Add(new TimeRange(new DateTime(2011, 3, 5), new DateTime(2011, 3, 12))); dateAdd.ExcludePeriods.Add(new TimeRange(new DateTime(2011, 3, 18), new DateTime(2011, 3, 30))); var test = new DateTime(2011, 3, 10); dateAdd.Add(test, TimeSpan.Zero).Should().Be(new DateTime(2011, 3, 12)); dateAdd.Add(test, DurationUtil.Days(1)).Should().Be(new DateTime(2011, 3, 13)); }
public void AllExcludedTest() { var test = new DateTime(2011, 4, 12); var timeRange = new TimeRange(new DateTime(2011, 4, 10), new DateTime(2011, 4, 20)); var dateAdd = new DateAdd(); dateAdd.IncludePeriods.Add(timeRange); dateAdd.ExcludePeriods.Add(timeRange); dateAdd.Add(test, TimeSpan.Zero).Should().Not.Have.Value(); dateAdd.Add(test, DurationUtil.Year(2)).Should().Not.Have.Value(); }
protected void CreateTimerParameter() { if (duration > 0.0) { durationParameter = new ParameterDelegate <Vessel>( Localizer.Format("#cc.param.VesselParameterGroup.duration", DurationUtil.StringValue(duration)), v => false); durationParameter.Optional = true; durationParameter.fakeOptional = true; AddParameter(durationParameter); } }
/// <summary> Cache some strings for performance gains (less memory churning) </summary> private void InitStrings() { if (!string.IsNullOrEmpty(KerCon_AllowsInterruptionsUpTo)) { return; } KerCon_AllowsInterruptionsUpTo = Localizer.Format("#KerCon_AllowsInterruptionsUpTo", // Allows interruptions up to <<1>> DurationUtil.StringValue(allowedDowntime)); KerCon_TimeStartsAfterAccepting = Localizer.Format("#KerCon_TimeStartsAfterAccepting", // Time starts <<1>> after accepting the contract" Lib.Color(DurationUtil.StringValue(waitDuration), Lib.Kolor.Yellow)); KerCon_Duration_X = Localizer.Format("#KerCon_Duration_X", DurationUtil.StringValue(duration)); }
public void SecondTest() { DurationUtil.Second.Should().Be(TimeSpan.FromSeconds(1)); DurationUtil.Seconds(0).Should().Be(TimeSpan.Zero); DurationUtil.Seconds(1).Should().Be(TimeSpan.FromSeconds(1)); DurationUtil.Seconds(2).Should().Be(TimeSpan.FromSeconds(2)); DurationUtil.Seconds(-1).Should().Be(TimeSpan.FromSeconds(-1)); DurationUtil.Seconds(-2).Should().Be(TimeSpan.FromSeconds(-2)); DurationUtil.Seconds(18).Should().Be(new TimeSpan(0, 0, 0, 18)); DurationUtil.Seconds(18, 496).Should().Be(new TimeSpan(0, 0, 0, 18, 496)); }
public void MinuteTest() { DurationUtil.Minute.Should().Be(TimeSpan.FromMinutes(1)); DurationUtil.Minutes(0).Should().Be(TimeSpan.Zero); DurationUtil.Minutes(1).Should().Be(TimeSpan.FromMinutes(1)); DurationUtil.Minutes(2).Should().Be(TimeSpan.FromMinutes(2)); DurationUtil.Minutes(-1).Should().Be(TimeSpan.FromMinutes(-1)); DurationUtil.Minutes(-2).Should().Be(TimeSpan.FromMinutes(-2)); DurationUtil.Minutes(22).Should().Be(new TimeSpan(0, 0, 22, 0)); DurationUtil.Minutes(22, 55).Should().Be(new TimeSpan(0, 0, 22, 55)); DurationUtil.Minutes(22, 55, 496).Should().Be(new TimeSpan(0, 0, 22, 55, 496)); }
public void NoPeriodsTest() { var test = new DateTime(2011, 4, 12); var dateAdd = new DateAdd(); dateAdd.Add(test, DurationUtil.Zero).Should().Be(test); dateAdd.Add(test, DurationUtil.Days(1)).Should().Be(test.AddDays(1)); dateAdd.Add(test, DurationUtil.Days(-1)).Should().Be(test.AddDays(-1)); dateAdd.Subtract(test, DurationUtil.Days(1)).Should().Be(test.AddDays(-1)); dateAdd.Subtract(test, DurationUtil.Days(-1)).Should().Be(test.AddDays(1)); }
public void MonthTest() { CultureTestData.Default .RunEach(culture => { var calendar = culture.Calendar; for (int i = 1; i <= TimeSpec.MonthsPerYear; i++) { DurationUtil.Month(currentYear, i).Should().Be( TimeSpan.FromDays(calendar.GetDaysInMonth(currentYear, i))); DurationUtil.Month(currentYear, i, calendar).Should().Be( TimeSpan.FromDays(calendar.GetDaysInMonth(currentYear, i))); } }); }
public void IncludeTest() { var test = new DateTime(2011, 4, 12); var timeRange = new TimeRange(new DateTime(2011, 4, 1), DateTime.MaxValue); var dateAdd = new DateAdd(); dateAdd.IncludePeriods.Add(timeRange); dateAdd.Add(test, TimeSpan.Zero).Should().Be(test); dateAdd.Add(test, DurationUtil.Days(1)).Should().Be(test.AddDays(1)); dateAdd.Add(test, DurationUtil.Days(365)).Should().Be(test.AddDays(365)); }
public void IncludeExclude4Test() { var dateAdd = new DateAdd(); dateAdd.IncludePeriods.Add(new TimeRange(new DateTime(2011, 3, 10), new DateTime(2011, 3, 20))); dateAdd.ExcludePeriods.Add(new TimeRange(new DateTime(2011, 3, 10), new DateTime(2011, 3, 15))); dateAdd.ExcludePeriods.Add(new TimeRange(new DateTime(2011, 3, 15), new DateTime(2011, 3, 20))); var test = new DateTime(2011, 3, 10); Assert.IsNull(dateAdd.Add(test, TimeSpan.Zero)); Assert.IsNull(dateAdd.Add(test, DurationUtil.Days(1))); Assert.IsNull(dateAdd.Add(test, DurationUtil.Days(5))); }
public void IncludeExclude3Test() { var dateAdd = new DateAdd(); dateAdd.ExcludePeriods.Add(new TimeRange(new DateTime(2011, 3, 5), new DateTime(2011, 3, 10))); dateAdd.IncludePeriods.Add(new TimeRange(new DateTime(2011, 3, 10), new DateTime(2011, 3, 15))); dateAdd.ExcludePeriods.Add(new TimeRange(new DateTime(2011, 3, 15), new DateTime(2011, 3, 20))); var test = new DateTime(2011, 3, 10); dateAdd.Subtract(test, TimeSpan.Zero).Should().Be(test); dateAdd.Add(test, DurationUtil.Days(1)).Should().Be(new DateTime(2011, 3, 11)); dateAdd.Add(test, DurationUtil.Days(5), SeekBoundaryMode.Fill).Should().Be(test.AddDays(5)); dateAdd.Add(test, DurationUtil.Days(5)).Should().Not.Have.Value(); }
protected override string GetParameterTitle() { if (state == ParameterState.Failed) { return("Time expired!"); } else if (endTime > 0.01) { return("Time remaining: " + DurationUtil.StringValue(endTime - Planetarium.GetUniversalTime())); } else { return("Time limit: " + DurationUtil.StringValue(duration)); } }
public void HourTest() { DurationUtil.Hour.Should().Be(TimeSpan.FromHours(1)); DurationUtil.Hours(0).Should().Be(TimeSpan.Zero); DurationUtil.Hours(1).Should().Be(TimeSpan.FromHours(1)); DurationUtil.Hours(2).Should().Be(TimeSpan.FromHours(2)); DurationUtil.Hours(-1).Should().Be(TimeSpan.FromHours(-1)); DurationUtil.Hours(-2).Should().Be(TimeSpan.FromHours(-2)); DurationUtil.Hours(23).Should().Be(new TimeSpan(0, 23, 0, 0)); DurationUtil.Hours(23, 22).Should().Be(new TimeSpan(0, 23, 22, 0)); DurationUtil.Hours(23, 22, 55).Should().Be(new TimeSpan(0, 23, 22, 55)); DurationUtil.Hours(23, 22, 55, 496).Should().Be(new TimeSpan(0, 23, 22, 55, 496)); }
protected override string GetParameterTitle() { if (state == ParameterState.Failed) { return(Localizer.GetStringByTag("#cc.param.Timer.expired")); } else if (endTime > 0.01) { return(Localizer.Format("#cc.param.Timer.active", DurationUtil.StringValue(endTime - Planetarium.GetUniversalTime()))); } else { return(Localizer.Format("#cc.param.Timer.inactive", DurationUtil.StringValue(duration))); } }
public void ExcludeTest() { DateTime test = new DateTime(2011, 4, 12); var timeRange = new TimeRange(new DateTime(2011, 4, 15), new DateTime(2011, 4, 20)); var calendarDateAdd = new CalendarDateAdd(); calendarDateAdd.ExcludePeriods.Add(timeRange); calendarDateAdd.Add(test, TimeSpan.Zero).Should().Be(test); calendarDateAdd.Add(test, DurationUtil.Days(2)).Should().Be(test.AddDays(2)); calendarDateAdd.Add(test, DurationUtil.Days(3)).Should().Be(timeRange.End); calendarDateAdd.Add(test, DurationUtil.Days(3, 0, 0, 0, 1)).Should().Be(timeRange.End.Add(DurationUtil.Millisecond)); calendarDateAdd.Add(test, DurationUtil.Days(5)).Should().Be(timeRange.End.AddDays(2)); }