public void GetOneYearArrayTest() { using (var db = new DatabaseSetup(Utili.GetCurrentMethodAndClass())) { db.ClearTable(TimeLimit.TableName); db.ClearTable(TimeLimitEntry.TableName); var temperaturProfiles = db.LoadTemperatureProfiles(); var timeLimits = new ObservableCollection <TimeLimit>(); var dateBasedProfiles = db.LoadDateBasedProfiles(); TimeLimit.LoadFromDatabase(timeLimits, dateBasedProfiles, db.ConnectionString, false); var geographicLocations = db.LoadGeographicLocations(out _, timeLimits); (timeLimits.Count).Should().Be(0); var dt = new TimeLimit("hey", db.ConnectionString, Guid.NewGuid().ToStrGuid()); dt.SaveToDB(); var dtbe = dt.AddTimeLimitEntry(null, dateBasedProfiles); dtbe.AnyAll = AnyAllTimeLimitCondition.Any; var dtbe2 = dt.AddTimeLimitEntry(dtbe, dateBasedProfiles); dtbe2.RepeaterType = PermissionMode.EveryXDay; dtbe2.DailyDayCount = 1; dtbe2.StartTimeTimeSpan = new TimeSpan(6, 0, 0); dtbe2.EndTimeTimeSpan = new TimeSpan(12, 0, 0); var dtbe3 = dt.AddTimeLimitEntry(dtbe, dateBasedProfiles); dtbe3.DailyDayCount = 1; dtbe3.StartTimeTimeSpan = new TimeSpan(13, 0, 0); dtbe3.EndTimeTimeSpan = new TimeSpan(14, 0, 0); dtbe.Subentries.Add(dtbe2); dtbe.Subentries.Add(dtbe2); var r = new Random(); var vac = new Vacation("vac", null, db.ConnectionString, 1, 99, CreationType.ManuallyCreated, Guid.NewGuid().ToStrGuid()); vac.SaveToDB(); vac.AddVacationTime(new DateTime(2014, 3, 1), new DateTime(2014, 5, 1), VacationType.GoAway); var timeframes = vac.VacationTimeframes(); var br = dtbe.GetOneYearArray(new TimeSpan(1, 0, 0), new DateTime(2014, 1, 1), new DateTime(2014, 2, 1), temperaturProfiles[0], geographicLocations[0], r, timeframes, "test", out _, 0, 0, 0, 0); for (var i = 0; i < 24; i++) { Logger.Info(i + ":" + br[i]); } db.Cleanup(); } }
public void TimeLimitBoolEntryLoadCreationAndSaveTest() { using (var db = new DatabaseSetup(Utili.GetCurrentMethodAndClass())) { db.ClearTable(TimeLimit.TableName); db.ClearTable(TimeLimitEntry.TableName); var timeLimits = new ObservableCollection <TimeLimit>(); var dateBasedProfiles = db.LoadDateBasedProfiles(); TimeLimit.LoadFromDatabase(timeLimits, dateBasedProfiles, db.ConnectionString, false); (timeLimits.Count).Should().Be(0); var dt = new TimeLimit("hey", db.ConnectionString, Guid.NewGuid().ToStrGuid()); dt.SaveToDB(); TimeLimit.LoadFromDatabase(timeLimits, dateBasedProfiles, db.ConnectionString, false); (timeLimits.Count).Should().Be(1); var dtl = timeLimits[0]; (dtl.Name).Should().Be("hey"); dt.DeleteFromDB(); timeLimits.Clear(); TimeLimit.LoadFromDatabase(timeLimits, dateBasedProfiles, db.ConnectionString, false); (timeLimits.Count).Should().Be(0); var dt2 = new TimeLimit("hey2", db.ConnectionString, Guid.NewGuid().ToStrGuid()); dt2.SaveToDB(); var dtbe = dt2.AddTimeLimitEntry(null, dateBasedProfiles); (dt2.RootEntry).Should().Be(dtbe); var dtbe2 = dt2.AddTimeLimitEntry(dtbe, dateBasedProfiles); (dt2.RootEntry?.Subentries.Count).Should().Be(1); dt2.SaveToDB(); (dt2.TimeLimitEntries.Count).Should().Be(2); timeLimits.Clear(); TimeLimit.LoadFromDatabase(timeLimits, dateBasedProfiles, db.ConnectionString, false); (timeLimits[0].TimeLimitEntries.Count).Should().Be(2); (timeLimits[0].RootEntry?.ToString()).Should().Be(dtbe.ToString()); (timeLimits[0].RootEntry?.Subentries.Count).Should().Be(1); (timeLimits[0].RootEntry?.Subentries[0].ToString()).Should().Be(dtbe2.ToString()); db.Cleanup(); } }
public void TimeLimitArrayTestlightControlledTest() { using (var db = new DatabaseSetup(Utili.GetCurrentMethodAndClass())) { db.ClearTable(TimeLimit.TableName); db.ClearTable(TimeLimitEntry.TableName); // test if night + day is always var temp = new TemperatureProfile("blub", 1, "bla", db.ConnectionString, Guid.NewGuid().ToStrGuid()); var start = new DateTime(1900, 1, 1, 0, 0, 0); var end = new DateTime(1900, 1, 1, 1, 1, 1); temp.AddTemperature(start, 10, 1, true, false); temp.AddTemperature(end, 0, 1, true, false); var dt = new TimeLimit("blub", db.ConnectionString, Guid.NewGuid().ToStrGuid(), 1); var dateBasedProfiles = new ObservableCollection <DateBasedProfile>(); var dtbe = dt.AddTimeLimitEntry(null, start, end, PermissionMode.LightControlled, 1, 1, true, true, true, true, true, true, true, 1, 1, 1, 1, 1, 1, 1, true, false, AnyAllTimeLimitCondition.Any, start, end, -1, 0, 0, false, false, true, false, 5, false, dateBasedProfiles, 0, 0, 0); dt.AddTimeLimitEntry(dtbe, start, end, PermissionMode.LightControlled, 1, 1, true, true, true, true, true, true, true, 1, 1, 1, 1, 1, 1, 1, true, false, AnyAllTimeLimitCondition.Any, start, end, -1, 0, 0, false, false, false, false, 5, false, dateBasedProfiles, 0, 0, 0); dt.AddTimeLimitEntry(dtbe, start, end, PermissionMode.LightControlled, 1, 1, true, true, true, true, true, true, true, 1, 1, 1, 1, 1, 1, 1, false, true, AnyAllTimeLimitCondition.Any, start, end, -1, 0, 0, false, false, false, false, 5, false, dateBasedProfiles, 0, 0, 0); var geoloc = new GeographicLocation(db.ConnectionString, null, Guid.NewGuid().ToStrGuid()); var r = new Random(); var vacations = new List <VacationTimeframe>(); var br = dt.TimeLimitEntries[0].GetOneYearHourArray(temp, geoloc, r, vacations, "test", out _); var br2 = dt.TimeLimitEntries[1].GetOneYearHourArray(temp, geoloc, r, vacations, "test", out _); var brtotal = new BitArray(br); brtotal = brtotal.Or(br2); foreach (bool b in brtotal) { (b).Should().Be(true); } db.Cleanup(); } }
public void TimeLimitArrayTestDateProfileTest() { using (var db = new DatabaseSetup(Utili.GetCurrentMethodAndClass())) { db.ClearTable(TimeLimit.TableName); db.ClearTable(TimeLimitEntry.TableName); // test if night + day is always var dateBasedProfile = new DateBasedProfile("blub", "bla", db.ConnectionString, Guid.NewGuid().ToStrGuid()); dateBasedProfile.SaveToDB(); dateBasedProfile.AddNewDatePoint(new DateTime(2014, 1, 1), 100); dateBasedProfile.AddNewDatePoint(new DateTime(2014, 1, 3), 0); dateBasedProfile.SaveToDB(); var start = new DateTime(1900, 1, 1, 0, 0, 0); var end = new DateTime(1900, 1, 1, 1, 1, 1); var dt = new TimeLimit("blub", db.ConnectionString, Guid.NewGuid().ToStrGuid(), 1); var temp = new TemperatureProfile("blub", 1, "bla", string.Empty, Guid.NewGuid().ToStrGuid()); var enddate = new DateTime(1900, 1, 2, 0, 0, 0); temp.AddTemperature(start, 0, 1, true, false); temp.AddTemperature(enddate, 10, 1, true, false); var dateBasedProfiles = new ObservableCollection <DateBasedProfile>(); dt.AddTimeLimitEntry(null, start, end, PermissionMode.ControlledByDateProfile, 1, 1, true, true, true, true, true, true, true, 1, 1, 1, 1, 1, 1, 1, true, false, AnyAllTimeLimitCondition.Any, start, end, dateBasedProfile.ID, 150, 50, false, false, true, false, 5, false, dateBasedProfiles, 0, 0, 0); dateBasedProfiles.Add(dateBasedProfile); var geoloc = new GeographicLocation(db.ConnectionString, null, Guid.NewGuid().ToStrGuid()); var r = new Random(); var vacationTimeFrames = new List <VacationTimeframe>(); var br = dt.TimeLimitEntries[0].GetOneYearHourArray(temp, geoloc, r, vacationTimeFrames, "test", out _); for (var i = 0; i < br.Count; i++) { if (i < 48) { (br[i]).Should().Be(true); } else { (br[i]).Should().Be(false); } } db.Cleanup(); } }
public TimeLimitPresenter([NotNull] ApplicationPresenter applicationPresenter, [NotNull] TimeLimitView view, [NotNull] TimeLimit timeLimit) : base(view, "ThisTimeLimit.HeaderString", timeLimit, applicationPresenter) { _dtv = view; ThisTimeLimit = timeLimit; _previewGeographicLocation = Sim.GeographicLocations.MyItems[0]; _previewTemperatureProfile = Sim.TemperatureProfiles.MyItems[0]; if (Sim.ModularHouseholds.It.Count > 0) { _household = Sim.ModularHouseholds.MyItems[0]; } MakeCalculatingImage(); if (ThisTimeLimit.RootEntry == null) { ThisTimeLimit.AddTimeLimitEntry(null, Sim.DateBasedProfiles.MyItems); } RefreshAllPermissionLines(); view.SetOneRow(ThisTimeLimit.RootEntry); RefreshUsedIn(); }
public void TimeLimitLoadCreationAndSaveTest() { using (var db = new DatabaseSetup(Utili.GetCurrentMethodAndClass())) { db.ClearTable(TimeLimit.TableName); db.ClearTable(TimeLimitEntry.TableName); var timeLimits = new ObservableCollection <TimeLimit>(); var dateBasedProfiles = db.LoadDateBasedProfiles(); TimeLimit.LoadFromDatabase(timeLimits, dateBasedProfiles, db.ConnectionString, false); (timeLimits.Count).Should().Be(0); var dt = new TimeLimit("hey", db.ConnectionString, Guid.NewGuid().ToStrGuid()); dt.SaveToDB(); TimeLimit.LoadFromDatabase(timeLimits, dateBasedProfiles, db.ConnectionString, false); (timeLimits.Count).Should().Be(1); var dtl = timeLimits[0]; (dtl.Name).Should().Be("hey"); (dtl.TimeLimitEntries.Count).Should().Be(0); dt.DeleteFromDB(); timeLimits.Clear(); TimeLimit.LoadFromDatabase(timeLimits, dateBasedProfiles, db.ConnectionString, false); (timeLimits.Count).Should().Be(0); var dt2 = new TimeLimit("hey2", db.ConnectionString, Guid.NewGuid().ToStrGuid()); dt2.SaveToDB(); var start = new DateTime(2013, 1, 1); var end = new DateTime(2013, 2, 1); dt2.AddTimeLimitEntry(null, start, end, PermissionMode.LightControlled, 1, 1, true, true, true, true, true, true, true, 1, 1, 1, 1, 1, 1, 2, true, true, AnyAllTimeLimitCondition.Any, start, end, -1, 0, 0, false, false, false, false, 5, false, dateBasedProfiles, 0, 0, 0); dt2.SaveToDB(); (dt2.TimeLimitEntries.Count).Should().Be(1); timeLimits.Clear(); TimeLimit.LoadFromDatabase(timeLimits, dateBasedProfiles, db.ConnectionString, false); (timeLimits[0].TimeLimitEntries.Count).Should().Be(1); db.Cleanup(); } }
public void TimeLimitArrayTestTemperatureControlledTest() { // test temperatures var temp = new TemperatureProfile("blub", 1, "bla", string.Empty, Guid.NewGuid().ToStrGuid()); var start = new DateTime(1900, 1, 1, 0, 0, 0); var end = new DateTime(1900, 1, 1, 1, 1, 1); var enddate = new DateTime(1900, 1, 2, 0, 0, 0); temp.AddTemperature(start, 0, 1, true, false); temp.AddTemperature(enddate, 10, 1, true, false); var dt = new TimeLimit("blub", string.Empty, Guid.NewGuid().ToStrGuid(), 1); var dateBasedProfiles = new ObservableCollection <DateBasedProfile>(); dt.AddTimeLimitEntry(null, start, end, PermissionMode.Temperature, 1, 1, true, true, true, true, true, true, true, 1, 1, 1, 1, 1, -10, 5, true, false, AnyAllTimeLimitCondition.Any, start, end, -1, 0, 0, false, false, false, false, 5, false, dateBasedProfiles, 0, 0, 0, false); var geoloc = new GeographicLocation(string.Empty, null, Guid.NewGuid().ToStrGuid()); var r = new Random(); var hhVacations = new List <VacationTimeframe>(); var br = dt.TimeLimitEntries[0].GetOneYearHourArray(temp, geoloc, r, hhVacations, "test", out _); for (var i = 0; i < 24; i++) { Logger.Info("hour: " + i + ":" + br[i]); (br[i]).Should().Be(true); } for (var i = 24; i < br.Length; i++) { if (i % 24 == 0) { Logger.Info("hour: " + i + ":" + br[i]); } (br[i]).Should().Be(false); } }