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();
            }
        }
Beispiel #2
0
 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();
     }
 }
Beispiel #3
0
 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();
     }
 }
Beispiel #4
0
        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();
            }
        }
Beispiel #5
0
        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();
        }
Beispiel #6
0
 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();
     }
 }
Beispiel #7
0
        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);
            }
        }