public void Should_properly_infer_range_limits() { var data = new WaterProcessorData(); var alert = data.CreateAlert(a => a.ProductTankLevel).Metadata.TotalRange; alert.Minimum.Should().Be(0, because: "the property has a RangeAttribute applied with the min set to 0"); alert.Maximum.Should().Be(100, because: "the property has a RangeAttribute applied with the max set to 100"); }
/// <summary> /// This method simulates generating real-world data and inserting it into the database. /// </summary> /// <returns> </returns> private void SimulateDataGeneration() { CancellationToken token = _cancellationTokenSource.Token; this.Started?.Invoke(this, EventArgs.Empty); bool isFirst = true; while (!token.IsCancellationRequested) { Thread.Sleep(TimeSpan.FromSeconds(3)); if (token.IsCancellationRequested) { break; } using var scope = ServiceProvider.CreateScope(); using var db = scope.ServiceProvider.GetRequiredService <OrbitDbContext>(); if (isFirst) { db.InsertSeedData(); isFirst = false; db.SaveChanges(); continue; } WasteWaterStorageTankData wasteTank = db.WasteWaterStorageTankData.Last(); UrineSystemData urineSystem = db.UrineProcessorData.Last(); WaterProcessorData waterProcessor = db.WaterProcessorData.Last(); urineSystem.ProcessData(wasteTank.Level); wasteTank.ProcessData(urineSystem.Status, waterProcessor.SystemStatus); waterProcessor.ProcessData(wasteTank.Level); var nextUrineSystem = new UrineSystemData(urineSystem); var nextWasteTank = new WasteWaterStorageTankData { TankId = "Main", Level = wasteTank.Level, }; var nextWaterProcessor = new WaterProcessorData(waterProcessor); db.UrineProcessorData.Add(nextUrineSystem); db.WasteWaterStorageTankData.Add(nextWasteTank); db.WaterProcessorData.Add(nextWaterProcessor); db.SaveChanges(); } this.Stopped?.Invoke(this, EventArgs.Empty); }
/// <summary> /// This method simulates generating real-world data and inserting it into the database. /// </summary> /// <returns> </returns> private void SimulateDataGeneration() { CancellationToken token = _cancellationTokenSource.Token; this.Started?.Invoke(this, EventArgs.Empty); bool isFirst = true; while (!token.IsCancellationRequested) { Thread.Sleep(TimeSpan.FromSeconds(3)); if (token.IsCancellationRequested) { break; } using var scope = ServiceProvider.CreateScope(); using var db = scope.ServiceProvider.GetRequiredService <OrbitDbContext>(); if (isFirst) { db.InsertSeedData(); isFirst = false; db.SaveChanges(); continue; } #region Get data from context WasteWaterStorageTankData wasteTank = db.WasteWaterStorageTankData.Last(); UrineSystemData urineSystem = db.UrineProcessorData.Last(); WaterProcessorData waterProcessor = db.WaterProcessorData.Last(); PowerSystemData power = db.PowerSystemData.Last(); AtmosphereData atmo = db.AtmosphereData.Last(); CarbonDioxideRemediation co2 = db.CarbonDioxideRemoverData.Last(); ExternalCoolantLoopData eloop = db.ExternalCoolantLoopData.Last(); InternalCoolantLoopData iloop = db.InternalCoolantLoopData.Last(); OxygenGenerator o2 = db.OxygenGeneratorData.Last(); WaterGeneratorData h20 = db.WaterGeneratorData.Last(); #endregion Get data from context #region Process the data urineSystem.ProcessData(wasteTank.Level); wasteTank.ProcessData(urineSystem.Status, waterProcessor.SystemStatus); waterProcessor.ProcessData(wasteTank.Level); power.ProcessData(); atmo.ProcessData(); co2.ProcessData(); eloop.ProcessData(); iloop.ProcessData(); o2.ProcessData(); h20.ProcessData(); #endregion Process the data #region Generate new data sets var nextUrineSystem = new UrineSystemData(urineSystem); var nextWasteTank = new WasteWaterStorageTankData { Level = wasteTank.Level }; var nextWaterProcessor = new WaterProcessorData(waterProcessor); var nextPower = new PowerSystemData(power); var nextAtmo = new AtmosphereData(atmo); var nextCo2 = new CarbonDioxideRemediation(co2); var nextEloop = new ExternalCoolantLoopData(eloop); var nextIloop = new InternalCoolantLoopData(iloop); var nextO2 = new OxygenGenerator(o2); var nextH20 = new WaterGeneratorData(h20); #endregion Generate new data sets #region Save new data sets to context db.UrineProcessorData.Add(nextUrineSystem); db.WasteWaterStorageTankData.Add(nextWasteTank); db.WaterProcessorData.Add(nextWaterProcessor); db.PowerSystemData.Add(nextPower); db.AtmosphereData.Add(nextAtmo); db.CarbonDioxideRemoverData.Add(nextCo2); db.ExternalCoolantLoopData.Add(nextEloop); db.InternalCoolantLoopData.Add(nextIloop); db.OxygenGeneratorData.Add(nextO2); db.WaterGeneratorData.Add(nextH20); db.SaveChanges(); #endregion Save new data sets to context } this.Stopped?.Invoke(this, EventArgs.Empty); }