//[TestMethod] public void TestScalarPeriodicDates() { builder = (DateEncoder.Builder)DateEncoder.GetBuilder(); de = (DateEncoder)builder .DayOfWeek(11, 24) .Weekend(0, 1) .TimeOfDay(11, 9.5) .Build(); dt = new DateTime(2010, 7, 3, 6, 00, 00); int[] tempArray = new int[de.GetWidth()]; de.EncodeIntoArray(dt, tempArray); }
//[TestMethod] public void TestDateEncoderRanges() { // 3 bits for season, 1 bit for day of week, 3 for weekend, 5 for time of day // use of forced is not recommended, used here for readability. builder = (DateEncoder.Builder)DateEncoder.GetBuilder(); de = (DateEncoder)builder .DayOfWeek(11, 1.0) .TimeOfDay(11, 2.0) .Build(); List <string> bitlist = new List <string>(); Calendar c = new GregorianCalendar(); int year = 2010; //for (int year = 1999; year < DateTime.Now.Year + 1; year++) { dt = new DateTime(year, 01, 01, 0, 0, 0); for (int day = 0; day < 7 /*c.GetDaysInYear(year)*/; day++) { for (int hour = 0; hour < 24; hour++) { for (int minute = 0; minute < 60; minute += 15) { DateTime dt2 = dt.AddDays(day).AddHours(hour).AddMinutes(minute); try { bits = de.Encode(dt2); } catch (Exception) { Debug.WriteLine("F****d up on date: " + dt2); Assert.Fail(); } Assert.IsNotNull(bits); //Assert.AreEqual(63, bits.Length); bitlist.Add(Arrays.ToString(bits)); } } } } //bitlist.ForEach(Console.WriteLine); // All bits must be different! int count = bitlist.Count; int distinctCount = bitlist.AsParallel().Distinct().Count(); Assert.AreEqual(count, distinctCount); }
private void SetUp() { // 3 bits for season, 1 bit for day of week, 3 for weekend, 5 for time of day // use of forced is not recommended, used here for readability. builder = (DateEncoder.Builder)DateEncoder.GetBuilder(); de = (DateEncoder)builder.Season(3) .DayOfWeek(1) .Weekend(3) .TimeOfDay(5) .Build(); //in the middle of fall, Thursday, not a weekend, afternoon - 4th Nov, 2010, 14:55 dt = new DateTime(2010, 11, 4, 14, 55, 00); DateTime comparison = new DateTime(2010, 11, 4, 13, 55, 00); bits = de.Encode(dt); int[] comparisonBits = de.Encode(comparison); Console.WriteLine(Arrays.ToString(bits)); Console.WriteLine(Arrays.ToString(comparisonBits)); // //dt.GetMillis(); // season is aaabbbcccddd (1 bit/month) # TODO should be <<3? // should be 000000000111 (centered on month 11 - Nov) int[] seasonExpected = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1 }; // week is MTWTFSS // contrary to local time documentation, Monday = 0 (for python // datetime.datetime.timetuple() int[] dayOfWeekExpected = { 0, 0, 0, 1, 0, 0, 0 }; // not a weekend, so it should be "False" int[] weekendExpected = { 1, 1, 1, 0, 0, 0 }; // time of day has radius of 4 hours and w of 5 so each bit = 240/5 min = 48min // 14:55 is minute 14*60 + 55 = 895; 895/48 = bit 18.6 // should be 30 bits total (30 * 48 minutes = 24 hours) int[] timeOfDayExpected = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; expected = ArrayUtils.ConcatAll(seasonExpected, dayOfWeekExpected, weekendExpected, timeOfDayExpected); }
public void TestScalarDayOfWeek() { builder = (DateEncoder.Builder)DateEncoder.GetBuilder(); de = (DateEncoder)builder .DayOfWeek(11, 24) .Weekend(0, 1) .TimeOfDay(11, 9.5) .Build(); dt = new DateTime(2016, 2, 15, 00, 00, 00); // monday, midnight for (int i = 0; i < 7; i++) { var scalars = de.GetScalars(dt.AddDays(i)); var dayOfWeek = scalars.First(); // first one is day of week Assert.AreEqual(i, dayOfWeek); } for (int i = 0; i < 24; i++) { var timeScalar = de.GetScalars(dt.AddHours(i)).Last(); Assert.AreEqual(i, timeScalar); } }