Example #1
0
        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);
        }
Example #2
0
		public void TyrParse_Null_IsInvalid()
		{
			WeekDate val;

			string str = null;
			Assert.IsFalse(WeekDate.TryParse(str, out val), "Not valid");
		}
Example #3
0
        public void TryParse_Y0000W21D7_DefaultValue()
        {
            WeekDate exp = default;

            Assert.IsFalse(WeekDate.TryParse("0000-W21-7", out WeekDate act));
            Assert.AreEqual(exp, act);
        }
Example #4
0
		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));
		}
Example #5
0
        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");
        }
Example #6
0
        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);
        }
Example #7
0
		public void LessThan_17LT19_IsTrue()
		{
			WeekDate l = new WeekDate(1980, 17, 5);
			WeekDate r = new WeekDate(1980, 19, 5);

			Assert.IsTrue(l < r);
		}
Example #8
0
		public void TryParse_Y2000W53D7_DefaultValue()
		{
			WeekDate exp = default(WeekDate);
			WeekDate act;
			Assert.IsFalse(WeekDate.TryParse("2000-W53-7", out act));
			Assert.AreEqual(exp, act);
		}
Example #9
0
        public void Implicit_WeekDateToDate_AreEqual()
        {
            Date exp = new WeekDate(1970, 07, 6);
            Date act = TestStruct;

            Assert.AreEqual(exp, act);
        }
Example #10
0
		public void GreaterThanOrEqual_21LT21_IsTrue()
		{
			WeekDate l = new WeekDate(1980, 21, 5);
			WeekDate r = new WeekDate(1980, 21, 5);

			Assert.IsTrue(l >= r);
		}
Example #11
0
        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);
        }
Example #12
0
        public void Implicit_DateToWeekDate_AreEqual()
        {
            WeekDate exp = TestStruct;
            WeekDate act = new WeekDate(1970, 07, 6);

            Assert.AreEqual(exp, act);
        }
Example #13
0
		public void LessThanOrEqual_17LT17_IsTrue()
		{
			WeekDate l = new WeekDate(1980, 17, 5);
			WeekDate r = new WeekDate(1980, 17, 5);

			Assert.IsTrue(l <= r);
		}
Example #14
0
		public void GreaterThan_21LT19_IsTrue()
		{
			WeekDate l = new WeekDate(1980, 21, 5);
			WeekDate r = new WeekDate(1980, 19, 5);

			Assert.IsTrue(l > r);
		}
Example #15
0
		public void TyrParse_StringValue_IsNotValid()
		{
			WeekDate val;

			string str = "string";

			Assert.IsFalse(WeekDate.TryParse(str, out val), "Valid");
		}
Example #16
0
		public void TyrParse_StringEmpty_IsInvalid()
		{
			WeekDate val;

			string str = string.Empty;

			Assert.IsFalse(WeekDate.TryParse(str, out val), "Not valid");
		}
Example #17
0
		public void Day_Sunday_AreEqual()
		{
			var date = new WeekDate(1990, 40, 7);
			var exp = 7;
			var act = date.Day;

			Assert.AreEqual(exp, act);
		}
Example #18
0
		public void Year_Y2020W01D1_AreEqual()
		{
			var date = new WeekDate(2020, 01, 1);
			var exp = 2020;
			var act = date.Year;

			Assert.AreEqual(exp, act);
		}
Example #19
0
		public void Year_Y2010W52D7_AreEqual()
		{
			var date = new WeekDate(2010, 52, 7);
			var exp = 2010;
			var act = date.Year;

			Assert.AreEqual(exp, act);
		}
Example #20
0
		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");
		}
Example #21
0
        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);
        }
Example #22
0
		public void TryParse_TestStructInput_AreEqual()
		{
			using (new CultureInfoScope("en-GB"))
			{
				var exp = TestStruct;
				var act = WeekDate.TryParse(exp.ToString());

				Assert.AreEqual(exp, act);
			}
		}
Example #23
0
		public void TryParse_InvalidInput_DefaultValue()
		{
			using (new CultureInfoScope("en-GB"))
			{
				var exp = default(WeekDate);
				var act = WeekDate.TryParse("InvalidInput");

				Assert.AreEqual(exp, act);
			}
		}
Example #24
0
        /// <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));
        }
Example #26
0
		public void Parse_InvalidInput_ThrowsFormatException()
		{
			using (new CultureInfoScope("en-GB"))
			{
				Assert.Catch<FormatException>
				(() =>
				{
					WeekDate.Parse("InvalidInput");
				},
				"Not a valid week date");
			}
		}
Example #27
0
		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);
		}
Example #28
0
        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();
        }
Example #29
0
        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);
        }
Example #30
0
        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);
        }
Example #31
0
        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));
        }
Example #32
0
        public void LessThanOrEqual_17LT17_IsTrue()
        {
            WeekDate l = new WeekDate(1980, 17, 5);
            WeekDate r = new WeekDate(1980, 17, 5);

            Assert.IsTrue(l <= r);
        }
Example #33
0
        public void GreaterThan_21LT19_IsTrue()
        {
            WeekDate l = new WeekDate(1980, 21, 5);
            WeekDate r = new WeekDate(1980, 19, 5);

            Assert.IsTrue(l > r);
        }
Example #34
0
        public void GreaterThanOrEqual_21LT21_IsTrue()
        {
            WeekDate l = new WeekDate(1980, 21, 5);
            WeekDate r = new WeekDate(1980, 21, 5);

            Assert.IsTrue(l >= r);
        }
Example #35
0
        public void Day_Sunday_AreEqual()
        {
            var date = new WeekDate(1990, 40, 7);
            var exp = 7;
            var act = date.Day;

            Assert.AreEqual(exp, act);
        }
Example #36
0
 /// <summary>Converts from <see cref="WeekDate"/>.</summary>
 protected abstract T FromWeekDate(WeekDate weekDate);
Example #37
0
        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);
                        }
                    }
                }
            }
        }
Example #38
0
 public static int GetWeekDateDay(this DateTime dateTime)
 {
     return(WeekDate.GetWeekdayNumber(dateTime.DayOfWeek));
 }
Example #39
0
        public void LessThan_17LT19_IsTrue()
        {
            WeekDate l = new WeekDate(1980, 17, 5);
            WeekDate r = new WeekDate(1980, 19, 5);

            Assert.IsTrue(l < r);
        }
Example #40
0
        public void Year_Y2010W52D7_AreEqual()
        {
            var date = new WeekDate(2010, 52, 7);
            var exp = 2010;
            var act = date.Year;

            Assert.AreEqual(exp, act);
        }
Example #41
0
 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);
 }
Example #42
0
        public void Implicit_DateToWeekDate_AreEqual()
        {
            WeekDate exp = TestStruct;
            WeekDate act = new WeekDate(1970, 07, 6);

            Assert.AreEqual(exp, act);
        }
Example #43
0
        public void Year_Y2020W01D1_AreEqual()
        {
            var date = new WeekDate(2020, 01, 1);
            var exp = 2020;
            var act = date.Year;

            Assert.AreEqual(exp, act);
        }
Example #44
0
        public void Implicit_WeekDateToDate_AreEqual()
        {
            Date exp = new WeekDate(1970, 07, 6);
            Date act = TestStruct;

            Assert.AreEqual(exp, act);
        }