public void LoadFromDatabaseTest()
        {
            using (var db = new DatabaseSetup(Utili.GetCurrentMethodAndClass()))
            {
                var persons = db.LoadPersons();

                db.ClearTable(HouseholdTrait.TableName);
                var affordances = db.LoadAffordances(out var timeBasedProfiles, out _,
                                                     out var deviceCategories, out var realDevices, out var desires, out var loadTypes, out var timeLimits, out ObservableCollection <DeviceAction> deviceActions,
                                                     out ObservableCollection <DeviceActionGroup> deviceActionGroups, out var locations, out var variables, out _);
                var tags            = db.LoadTraitTags();
                var householdTraits = db.LoadHouseholdTraits(locations, affordances,
                                                             realDevices, deviceCategories, timeBasedProfiles, loadTypes, timeLimits, desires, deviceActions,
                                                             deviceActionGroups, tags, variables);
                var hht = new HouseholdTrait("bla", null, "blub", db.ConnectionString, "none", 1, 100, 10, 1, 1,
                                             TimeType.Day, 1, 1, TimeType.Day, 1, 0, EstimateType.Theoretical, "", Guid.NewGuid().ToStrGuid());
                hht.SaveToDB();
                householdTraits.Add(hht);
                var chht = new ModularHouseholdTrait(null, null, "hallo", db.ConnectionString,
                                                     householdTraits[0], null, ModularHouseholdTrait.ModularHouseholdTraitAssignType.Age, Guid.NewGuid().ToStrGuid());
                chht.DeleteFromDB();
                chht.SaveToDB();
                var chht1 = new ModularHouseholdTrait(null, null, "hallo2", db.ConnectionString,
                                                      householdTraits[0], persons[0], ModularHouseholdTrait.ModularHouseholdTraitAssignType.Name, Guid.NewGuid().ToStrGuid());
                chht1.SaveToDB();
                chht1.DeleteFromDB();
                db.Cleanup();
            }
        }
Exemple #2
0
        private static void SetEstimate([NotNull] HouseholdTrait trait, double timeSpent, int timesExecuted)
        {
            if (Math.Abs(timeSpent) < 0.00001 || timesExecuted == 0)
            {
                trait.EstimatedDuration2InMinutes = -1;
                trait.EstimatedTimeCount2         = -1;
                trait.EstimatedTimeType2          = TimeType.Day;
                trait.EstimatedTimes2             = -1;
                trait.SaveToDB();
                return;
            }
            var timeTotal        = TimeSpan.FromMinutes(timeSpent);
            var timePerExecution = TimeSpan.FromSeconds(timeTotal.TotalSeconds / timesExecuted); // average time

            trait.EstimatedDuration2InMinutes = timePerExecution.TotalMinutes;
            var timeBetweenActivations = TimeSpan.FromHours(365 * 24.0 / timesExecuted);

            trait.EstimatedDuration2InMinutes = timePerExecution.TotalMinutes;
            if (timeBetweenActivations.TotalHours < 24)
            {
                trait.EstimatedTimeType2  = TimeType.Day;
                trait.EstimatedTimeCount2 = 1;
                trait.EstimatedTimes2     = Math.Round(24 / timeBetweenActivations.TotalHours, 1);
                return;
            }
            if (timeBetweenActivations.TotalDays < 7)
            {
                trait.EstimatedTimeType2  = TimeType.Week;
                trait.EstimatedTimeCount2 = 1;
                trait.EstimatedTimes2     = Math.Round(7 / timeBetweenActivations.TotalDays, 1);
                return;
            }
            if (timeBetweenActivations.TotalDays < 30)
            {
                trait.EstimatedTimeType2  = TimeType.Month;
                trait.EstimatedTimeCount2 = 1;
                trait.EstimatedTimes2     = Math.Round(30 / timeBetweenActivations.TotalDays, 1);
                return;
            }
            trait.EstimatedTimeType2  = TimeType.Year;
            trait.EstimatedTimeCount2 = 1;
            trait.EstimatedTimes2     = Math.Round(365 / timeBetweenActivations.TotalDays, 1);
        }
        public void ModularHouseholdTest()
        {
            using (var db = new DatabaseSetup(Utili.GetCurrentMethodAndClass()))
            {
                db.ClearTable(ModularHousehold.TableName);
                db.ClearTable(ModularHouseholdTrait.TableName);
                db.ClearTable(ModularHouseholdPerson.TableName);
                var persons         = new ObservableCollection <Person>();
                var result          = new ObservableCollection <ModularHousehold>();
                var householdTraits = new ObservableCollection <HouseholdTrait>();
                var hht             = new HouseholdTrait("blub", null, "blub", db.ConnectionString, "none", 1, 100, 10, 1, 1,
                                                         TimeType.Day, 1, 1, TimeType.Day, 1, 0, EstimateType.Theoretical, "", Guid.NewGuid().ToStrGuid());
                hht.SaveToDB();
                householdTraits.Add(hht);
                var deviceSelections = new ObservableCollection <DeviceSelection>();
                var ds = new DeviceSelection("ds", null, "bla", db.ConnectionString, Guid.NewGuid().ToStrGuid());
                ds.SaveToDB();
                deviceSelections.Add(ds);
                var vacations = db.LoadVacations();
                var hhTags    = db.LoadHouseholdTags();
                var traitTags = db.LoadTraitTags();

                ModularHousehold.LoadFromDatabase(result, db.ConnectionString, householdTraits, deviceSelections, false,
                                                  persons, vacations, hhTags, traitTags);
                (result.Count).Should().Be(0);
                var chh = new ModularHousehold("blub", null, "blub", db.ConnectionString, ds, "src", null, null,
                                               EnergyIntensityType.Random, CreationType.ManuallyCreated, Guid.NewGuid().ToStrGuid());
                chh.SaveToDB();
                chh.AddTrait(hht, ModularHouseholdTrait.ModularHouseholdTraitAssignType.Age, null);
                chh.SaveToDB();
                result.Clear();
                ModularHousehold.LoadFromDatabase(result, db.ConnectionString, householdTraits, deviceSelections, false,
                                                  persons, vacations, hhTags, traitTags);
                (result.Count).Should().Be(1);
                (result[0].Traits.Count).Should().Be(1);
                db.Cleanup();
            }
        }
Exemple #4
0
        public void HouseholdTraitTest()
        {
            using (var db = new DatabaseSetup(Utili.GetCurrentMethodAndClass()))
            {
                db.ClearTable(HouseholdTrait.TableName);
                db.ClearTable(HHTAutonomousDevice.TableName);
                db.ClearTable(HHTDesire.TableName);
                db.ClearTable(HHTLocation.TableName);
                db.ClearTable(HHTAffordance.TableName);
                db.ClearTable(HHTTag.TableName);
                var timeBasedProfiles = db.LoadTimeBasedProfiles();
                var dateBasedProfiles = db.LoadDateBasedProfiles();
                var devices           = db.LoadRealDevices(out ObservableCollection <DeviceCategory> deviceCategories, out _, out ObservableCollection <VLoadType> loadTypes,
                                                           timeBasedProfiles);

                var timeLimits         = db.LoadTimeLimits(dateBasedProfiles);
                var desires            = db.LoadDesires();
                var deviceActionGroups = db.LoadDeviceActionGroups();
                var deviceActions      = db.LoadDeviceActions(timeBasedProfiles, devices,
                                                              loadTypes, deviceActionGroups);
                var locations   = db.LoadLocations(devices, deviceCategories, loadTypes);
                var variables   = db.LoadVariables();
                var affordances = db.LoadAffordances(timeBasedProfiles, out _,
                                                     deviceCategories, devices, desires, loadTypes, timeLimits, deviceActions, deviceActionGroups, locations,
                                                     variables);
                var hht = new HouseholdTrait("blub", null, "blub", db.ConnectionString, "none", 1, 100, 10, 1, 1,
                                             TimeType.Day, 1, 1, TimeType.Day, 1, 0, EstimateType.Theoretical, "", Guid.NewGuid().ToStrGuid());
                hht.SaveToDB();
                var hht2 = new HouseholdTrait("blub2", null, "blub2", db.ConnectionString, "none", 1, 100, 10, 1,
                                              1, TimeType.Day, 1, 1, TimeType.Day, 1, 0, EstimateType.Theoretical, "", Guid.NewGuid().ToStrGuid());
                hht2.SaveToDB();
                var loc = new Location("loc1", -1, db.ConnectionString, Guid.NewGuid().ToStrGuid());
                hht.AddAutomousDevice(devices[0], timeBasedProfiles[0], 0, loadTypes[0], timeLimits[0], loc, 0,
                                      VariableCondition.Equal, variables[0]);

                var hhtl = hht.AddLocation(locations[0]);
                hht.SaveToDB();
                var tag = new TraitTag("tag", db.ConnectionString,
                                       TraitLimitType.NoLimit, TraitPriority.Mandatory, Guid.NewGuid().ToStrGuid());
                tag.SaveToDB();
                hht.AddTag(tag);
                hht.AddAffordanceToLocation(hhtl, affordances[0], timeLimits[0], 100, 0, 0, 0, 0);
                hht.SaveToDB();
                hht.AddDesire(desires[0], 1, "Healthy", 1, 1, 0, 100, PermittedGender.All);
                hht.SaveToDB();
                hht.AddTrait(hht2);
                hht.SaveToDB();
                (hht.SubTraits.Count).Should().Be(1);
                var hhts = new ObservableCollection <HouseholdTrait>();
                var tags = db.LoadTraitTags();
                HouseholdTrait.LoadFromDatabase(hhts, db.ConnectionString, locations, affordances, devices,
                                                deviceCategories,
                                                timeBasedProfiles, loadTypes, timeLimits, desires, deviceActions, deviceActionGroups, tags, false,
                                                variables);
                (hhts.Count).Should().Be(2);
                var hht3 = hhts[0];
                (hht3.MinimumPersonsInCHH).Should().Be(1);
                (hht3.MaximumPersonsInCHH).Should().Be(100);
                (hht3.Desires.Count).Should().Be(1);
                (hht3.SubTraits.Count).Should().Be(1);
                (hht3.Classification).Should().Be("none");
                (hht3.Tags.Count).Should().Be(1);
                (hht3.Tags[0].Tag.Name).Should().Be("tag");
                foreach (var trait in hhts)
                {
                    trait.DeleteFromDB();
                }
                hhts.Clear();
                Logger.Info("Loading again...");
                HouseholdTrait.LoadFromDatabase(hhts, db.ConnectionString, locations, affordances, devices,
                                                deviceCategories,
                                                timeBasedProfiles, loadTypes, timeLimits, desires, deviceActions, deviceActionGroups, tags, false,
                                                variables);
                (hhts.Count).Should().Be(0);
                db.Cleanup();
            }
        }
Exemple #5
0
        public void HouseholdTraitAffordanceTest()
        {
            using (var db = new DatabaseSetup(Utili.GetCurrentMethodAndClass()))
            {
                db.ClearTable(HouseholdTrait.TableName);
                db.ClearTable(HHTAutonomousDevice.TableName);
                db.ClearTable(HHTDesire.TableName);
                db.ClearTable(HHTLocation.TableName);
                db.ClearTable(HHTAffordance.TableName);
                db.ClearTable(HHTTrait.TableName);
                db.ClearTable(HHTTag.TableName);
                var timeBasedProfiles = db.LoadTimeBasedProfiles();
                var dateBasedProfiles = db.LoadDateBasedProfiles();
                var devices           = db.LoadRealDevices(out ObservableCollection <DeviceCategory> deviceCategories, out _, out var loadTypes,
                                                           timeBasedProfiles);

                var timeLimits         = db.LoadTimeLimits(dateBasedProfiles);
                var desires            = db.LoadDesires();
                var deviceActionGroups = db.LoadDeviceActionGroups();
                var deviceActions      = db.LoadDeviceActions(timeBasedProfiles, devices,
                                                              loadTypes, deviceActionGroups);
                var locations   = db.LoadLocations(devices, deviceCategories, loadTypes);
                var variables   = db.LoadVariables();
                var affordances = db.LoadAffordances(timeBasedProfiles, out _,
                                                     deviceCategories, devices, desires, loadTypes, timeLimits, deviceActions, deviceActionGroups, locations,
                                                     variables);
                var hht = new HouseholdTrait("blub", null, "blub", db.ConnectionString, "none", 1, 100, 10, 1, 1,
                                             TimeType.Day, 1, 1, TimeType.Day, 1, 0, EstimateType.Theoretical, "", Guid.NewGuid().ToStrGuid());

                hht.SaveToDB();

                var loc = new Location("loc1", null, db.ConnectionString, Guid.NewGuid().ToStrGuid());
                locations.Add(loc);
                loc.SaveToDB();
                Logger.Info("adding affordance");
                hht.AddLocation(loc);

                hht.AddAffordanceToLocation(loc, affordances[0], timeLimits[0], 100, 0, 0, 0, 0);
                hht.SaveToDB();
                Logger.Info("reloading ");
                var hhts = new ObservableCollection <HouseholdTrait>();
                var tags = db.LoadTraitTags();

                HouseholdTrait.LoadFromDatabase(hhts, db.ConnectionString, locations, affordances, devices,
                                                deviceCategories,
                                                timeBasedProfiles, loadTypes, timeLimits, desires, deviceActions, deviceActionGroups, tags, false,
                                                variables);
                (hhts.Count).Should().Be(1);
                var hht3 = hhts[0];
                (hht3.Locations[0].AffordanceLocations.Count).Should().Be(1);
                Logger.Info("deleting affordance");
                hht3.DeleteAffordanceFromDB(hht3.Locations[0].AffordanceLocations[0]);

                hhts.Clear();
                Logger.Info("Loading again...");
                HouseholdTrait.LoadFromDatabase(hhts, db.ConnectionString, locations, affordances, devices,
                                                deviceCategories,
                                                timeBasedProfiles, loadTypes, timeLimits, desires, deviceActions, deviceActionGroups, tags, false,
                                                variables);
                var hht4 = hhts[0];
                (hht4.Locations[0].AffordanceLocations.Count).Should().Be(0);

                db.Cleanup();
            }
        }