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(); } }
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(); } }
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(); } }
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(); } }