public static System.DateTime DueDate(System.DateTime startDate, string interval) { using (var parser = new Parser()){ var timeInterval = parser.GetTimeInterval(interval); var unit = timeInterval.Keys.First(); var time = timeInterval[unit]; var calendar = new System.Globalization.GregorianCalendar(); System.DateTime dueDate; switch (unit) { case Enum.TimeInterval.None: goto default; // break; case Enum.TimeInterval.Seconds: dueDate = calendar.AddSeconds(startDate, time); break; case Enum.TimeInterval.Minutes: dueDate = calendar.AddMinutes(startDate, time); break; case Enum.TimeInterval.Hours: dueDate = calendar.AddHours(startDate, time); break; case Enum.TimeInterval.Days: dueDate = calendar.AddDays(startDate, time); break; case Enum.TimeInterval.Weeks: dueDate = calendar.AddWeeks(startDate, time); break; case Enum.TimeInterval.Months: dueDate = calendar.AddYears(startDate, time); break; default: throw new Exception("Invalid value for TimeInterval"); } return(AdjustForWeekend(dueDate)); } }
public void TestGetTimeInterval() { var someIntervals = new System.Collections.Generic.List <string> { "10 Seconds", "11 Minutes", "12 Hours", "13 Days", "14 Weeks", "15 Months" }; var testIntervals = new System.Collections.Generic.List <string> { "Seconds", "Minutes", "Hours", "Days", "Weeks", "Months" }; var parser = new RfiCoder.Utilities.Parser(); for (int i = 0; i < 6; i++) { var result = parser.GetTimeInterval(someIntervals[i]); switch (testIntervals[i]) { case "Seconds": Assert.That(result.ContainsKey(RfiCoder.Enum.TimeInterval.Seconds), Is.True); Assert.That(result[RfiCoder.Enum.TimeInterval.Seconds], Is.EqualTo(10)); break; case "Minutes": Assert.That(result.ContainsKey(RfiCoder.Enum.TimeInterval.Minutes), Is.True); Assert.That(result[RfiCoder.Enum.TimeInterval.Minutes], Is.EqualTo(11)); break; case "Hours": Assert.That(result.ContainsKey(RfiCoder.Enum.TimeInterval.Hours), Is.True); Assert.That(result[RfiCoder.Enum.TimeInterval.Hours], Is.EqualTo(12)); break; case "Days": Assert.That(result.ContainsKey(RfiCoder.Enum.TimeInterval.Days), Is.True); Assert.That(result[RfiCoder.Enum.TimeInterval.Days], Is.EqualTo(13)); break; case "Weeks": Assert.That(result.ContainsKey(RfiCoder.Enum.TimeInterval.Weeks), Is.True); Assert.That(result[RfiCoder.Enum.TimeInterval.Weeks], Is.EqualTo(14)); break; case "Months": Assert.That(result.ContainsKey(RfiCoder.Enum.TimeInterval.Months), Is.True); Assert.That(result[RfiCoder.Enum.TimeInterval.Months], Is.EqualTo(15)); break; default: throw new ArgumentException("failed to parse interval"); // break; } } }