public void ToString_Y1979W3D5FormatWLower_ComplexPattern() { var act = new WeekDate(1979, 3, 5).ToString(@"y-\Ww-d"); var exp = "1979-W03-5"; Assert.AreEqual(exp, act); }
public void TyrParse_Null_IsInvalid() { WeekDate val; string str = null; Assert.IsFalse(WeekDate.TryParse(str, out val), "Not valid"); }
public void TryParse_Y0000W21D7_DefaultValue() { WeekDate exp = default; Assert.IsFalse(WeekDate.TryParse("0000-W21-7", out WeekDate act)); Assert.AreEqual(exp, act); }
public void Equals_FormattedAndUnformatted_IsTrue() { var l = WeekDate.Parse("1997-14-6", CultureInfo.InvariantCulture); var r = WeekDate.Parse("1997-W14-6", CultureInfo.InvariantCulture); Assert.IsTrue(l.Equals(r)); }
public void TyrParse_StringValue_IsValid() { string str = "1234-W50-6"; Assert.IsTrue(WeekDate.TryParse(str, out WeekDate val), "Valid"); Assert.AreEqual(str, val.ToString(), "Value"); }
public void RangeFirstLastDay(int yearStart, int weekStart, int yearEnd, int weekEnd, string expectedFirstDay, string expectedLastDay) { var sut = WeekDate.GetRangeDate(yearStart, weekStart, yearEnd, weekEnd); Assert.AreEqual(DateTime.Parse(expectedFirstDay), sut.FirstDay); Assert.AreEqual(DateTime.Parse(expectedLastDay), sut.LastDay); }
public void LessThan_17LT19_IsTrue() { WeekDate l = new WeekDate(1980, 17, 5); WeekDate r = new WeekDate(1980, 19, 5); Assert.IsTrue(l < r); }
public void TryParse_Y2000W53D7_DefaultValue() { WeekDate exp = default(WeekDate); WeekDate act; Assert.IsFalse(WeekDate.TryParse("2000-W53-7", out act)); Assert.AreEqual(exp, act); }
public void Implicit_WeekDateToDate_AreEqual() { Date exp = new WeekDate(1970, 07, 6); Date act = TestStruct; Assert.AreEqual(exp, act); }
public void GreaterThanOrEqual_21LT21_IsTrue() { WeekDate l = new WeekDate(1980, 21, 5); WeekDate r = new WeekDate(1980, 21, 5); Assert.IsTrue(l >= r); }
public void FirstLastDay(int year, int week, string expectedFirstDay, string expectedLastDay) { var sut = new WeekDate(year, week); Assert.AreEqual(DateTime.Parse(expectedFirstDay), sut.FirstDay); Assert.AreEqual(DateTime.Parse(expectedLastDay), sut.LastDay); }
public void Implicit_DateToWeekDate_AreEqual() { WeekDate exp = TestStruct; WeekDate act = new WeekDate(1970, 07, 6); Assert.AreEqual(exp, act); }
public void LessThanOrEqual_17LT17_IsTrue() { WeekDate l = new WeekDate(1980, 17, 5); WeekDate r = new WeekDate(1980, 17, 5); Assert.IsTrue(l <= r); }
public void GreaterThan_21LT19_IsTrue() { WeekDate l = new WeekDate(1980, 21, 5); WeekDate r = new WeekDate(1980, 19, 5); Assert.IsTrue(l > r); }
public void TyrParse_StringValue_IsNotValid() { WeekDate val; string str = "string"; Assert.IsFalse(WeekDate.TryParse(str, out val), "Valid"); }
public void TyrParse_StringEmpty_IsInvalid() { WeekDate val; string str = string.Empty; Assert.IsFalse(WeekDate.TryParse(str, out val), "Not valid"); }
public void Day_Sunday_AreEqual() { var date = new WeekDate(1990, 40, 7); var exp = 7; var act = date.Day; Assert.AreEqual(exp, act); }
public void Year_Y2020W01D1_AreEqual() { var date = new WeekDate(2020, 01, 1); var exp = 2020; var act = date.Year; Assert.AreEqual(exp, act); }
public void Year_Y2010W52D7_AreEqual() { var date = new WeekDate(2010, 52, 7); var exp = 2010; var act = date.Year; Assert.AreEqual(exp, act); }
public void IsValid_Data_IsFalse() { Assert.IsFalse(WeekDate.IsValid("Complex"), "Complex"); Assert.IsFalse(WeekDate.IsValid((String)null), "(String)null"); Assert.IsFalse(WeekDate.IsValid(string.Empty), "string.Empty"); Assert.IsFalse(WeekDate.IsValid("0000-W12-6"), "0000-W12-6"); Assert.IsFalse(WeekDate.IsValid("0001-W12-8"), "0001-W12-8"); Assert.IsFalse(WeekDate.IsValid("9999-W53-1"), "9999-W53-1"); }
internal static CalendarDate ToCalendarDate(WeekDate weekDate, CalendarDatePrecision precision) { if (weekDate.Precision != WeekDatePrecision.Day) { throw new ConversionException("The week date must be defined to the day to be converted to a calendar date without information loss."); } return ToOrdinalDate(weekDate).ToCalendarDate(precision); }
public void TryParse_TestStructInput_AreEqual() { using (new CultureInfoScope("en-GB")) { var exp = TestStruct; var act = WeekDate.TryParse(exp.ToString()); Assert.AreEqual(exp, act); } }
public void TryParse_InvalidInput_DefaultValue() { using (new CultureInfoScope("en-GB")) { var exp = default(WeekDate); var act = WeekDate.TryParse("InvalidInput"); Assert.AreEqual(exp, act); } }
/// <summary>Converts a string to a week date, using the specified /// context and culture information. /// </summary> /// <param name="context"> /// An System.ComponentModel.ITypeDescriptorContext that provides a format context. /// </param> /// <param name="culture"> /// The System.Globalization.CultureInfo to use as the current culture. /// </param> /// <param name="value"> /// The System.Object to convert. /// </param> /// <returns> /// An System.Object that represents the converted value. /// </returns> /// <exception cref="NotSupportedException"> /// The conversion cannot be performed. /// </exception> public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { var str = value as string; if (str != null) { return(WeekDate.Parse(str, culture)); } return(base.ConvertFrom(context, culture, value)); }
public void WeekDateConformsToISO8601(string date, string expectedWeekDate) { // Arrange WeekDate weekDate = new WeekDate(DateTime.Parse(date)); // Act string sortableWeekDate = weekDate.ToString(); // Assert Assert.That(sortableWeekDate, Is.EqualTo(expectedWeekDate)); }
public void Parse_InvalidInput_ThrowsFormatException() { using (new CultureInfoScope("en-GB")) { Assert.Catch<FormatException> (() => { WeekDate.Parse("InvalidInput"); }, "Not a valid week date"); } }
public void OrderByDescending_WeekDate_AreEqual() { var item0 = WeekDate.Parse("2000-W01-3"); var item1 = WeekDate.Parse("2000-W11-2"); var item2 = WeekDate.Parse("2000-W21-1"); var item3 = WeekDate.Parse("2000-W31-7"); var inp = new List<WeekDate>() { WeekDate.MinValue, item3, item2, item0, item1, WeekDate.MinValue }; var exp = new List<WeekDate>() { item3, item2, item1, item0, WeekDate.MinValue, WeekDate.MinValue }; var act = inp.OrderByDescending(item => item).ToList(); CollectionAssert.AreEqual(exp, act); }
internal static string Serialize(WeekDate weekDate, ISO8601Options options) { if (options == null) { options = ISO8601Options.Default; } if (weekDate.Year < 0 || weekDate.Year > 9999) { options = (ISO8601Options)options.Clone(); options.IsExpanded = true; } var output = new StringBuilder(); if (options.IsExpanded) { if (weekDate.Year >= 0) { output.Append('+'); } } output.Append(weekDate.Year.ToString("D" + options.YearLength)); if (options.UseComponentSeparators) { output.Append('-'); } output.Append('W'); output.Append(weekDate.Week.ToString("D2")); if (weekDate.Precision == WeekDatePrecision.Day) { if (options.UseComponentSeparators) { output.Append('-'); } output.Append(weekDate.Day); } return output.ToString(); }
protected override bool HandleData(ScheduleResponse data, CancellationToken token) { if (data == null) { return(false); } if (data.Status == ResponseStatus.AuthenticationError) { _requestHandler.Authenticate <MainViewModel>(); return(false); } if (data.Status != ResponseStatus.Success) { throw new Exception("An error occurred on the server while fetching the schedule."); } if (!token.IsCancellationRequested) { // Now for the fun part! // The days group their periods by UTC date // but since we're in local date, some "days" may hold periods outside of their UTC date // so we have to disassemble them and re-assemble new days var days = data.Days.SelectMany(d => ForceSameStartAndEndDays(d.Periods)) .GroupBy(p => p.Start.Date) .Select(g => new StudyDay { Day = g.Key, Periods = g.ToArray() }) .ToArray(); var missingDays = Enumerable.Range(0, MinimumDaysInWeek) .Select(n => WeekDate.AddDays(n)) .Where(d => days.All(d2 => d.Date != d2.Day.Date)) .Select(d => new StudyDay { Day = d.Date, Periods = new Period[0] }); Days = days.Concat(missingDays) .OrderBy(d => d.Day) .ToArray(); } return(true); }
internal static OrdinalDate ToOrdinalDate(WeekDate weekDate) { if (weekDate.Precision != WeekDatePrecision.Day) { throw new ConversionException("The week date must be defined to the day to be converted to an ordinal date."); } var year = weekDate.Year; var ordinalDay = ISO8601Calculator.DayOfYear(weekDate); var daysInYear = ISO8601Calculator.DaysInYear(year); if (ordinalDay < 1) { ordinalDay += ISO8601Calculator.DaysInYear(year - 1); } if (ordinalDay > daysInYear) { ordinalDay -= daysInYear; } return new OrdinalDate(year, ordinalDay); }
protected override CachedTask <ScheduleResponse> GetData(bool force, CancellationToken token) { if (!force) { return(CachedTask.NoNewData <ScheduleResponse>()); } Func <Task <ScheduleResponse> > getter = () => _requestHandler.ExecuteAsync(() => { var request = new ScheduleRequest { Language = CultureInfo.CurrentUICulture.TwoLetterISOLanguageName, WeekStart = WeekDate }; return(_isaService.GetScheduleAsync(request, token)); }); if (DateTime.Now >= WeekDate && (DateTime.Now - WeekDate).TotalDays < DaysInWeek) { // cache ID must be non-zero so that other requests don't think this can be used as a placeholder return(CachedTask.Create(getter, 1, WeekDate.AddDays(DaysInWeek))); } return(CachedTask.DoNotCache(getter)); }
/// <summary>Converts from <see cref="WeekDate"/>.</summary> protected abstract T FromWeekDate(WeekDate weekDate);
public void CreateDays() { string[] dateStr = GetWeekById(currentWeekId).dateFrom.Split('.'); DateTime date = new DateTime(Convert.ToInt32(dateStr[2]), Convert.ToInt32(dateStr[1]), Convert.ToInt32(dateStr[0])); weekDate = new WeekDate(date); // weekDate.CreateDate(date); for (int i = 0; i < Days.Count; i++) { foreach (course f_course in courses) { foreach (group f_group in groups) { foreach (times f_Time in times) { string currentDate = date.AddDays(i).ToShortDateString(); int currentDateId = 0; if (dates.Where(p => p.date == currentDate).Count() <= 0) { dates dt = new dates(); dt.date = date.AddDays(i).ToShortDateString(); if (dates.Count == 0) { dt.iddates = 0; } else { dt.iddates = dates.Last().iddates + 1; } dates.Add(dt); currentDateId = dt.iddates; DataBase.timetableDB.SaveChanges(); } else { currentDateId = dates.Where(p => p.date == currentDate).Last().iddates; } timetable tt = CheckLesson(currentWeekTimetable.ToList <timetable>(), currentDateId, f_Time.idtimes, dbDays[i].idDay, f_course.idcourse, f_group.idgroup); if (tt == null) { tt = new timetable(); tt.Date = dates.Where(p => p.date == date.AddDays(i).ToShortDateString()).Last().iddates; tt.Day = dbDays[i].idDay; tt.Week = currentWeekId; tt.Group = f_group.idgroup; tt.Course = f_course.idcourse; tt.Time = f_Time.idtimes; tt.times = f_Time; } Days[i].Add(tt); } } } } }
public static int GetWeekDateDay(this DateTime dateTime) { return(WeekDate.GetWeekdayNumber(dateTime.DayOfWeek)); }
public void ToString_Y1979W3D5FormatWUpper_ComplexPattern() { var act = new WeekDate(1979, 3, 5).ToString(@"y-\WW-d"); var exp = "1979-W3-5"; Assert.AreEqual(exp, act); }