public void GetFieldsAppliedWithStoredManure() { //Arrange var storageSystem = new ManureStorageSystem { Id = 1 }; //act var result = _yearData.GetFieldsAppliedWithManure(storageSystem); //assess Assert.IsNotNull(result); }
public void GetFieldsAppliedWithStoredManure() { //Arrange var storageSystem = new ManureStorageSystem { Id = 1 }; //act var result = _yearData.GetFieldsAppliedWithManure(storageSystem); //assess result.ShouldNotBeNull(); }
public AppliedStoredManure GetAppliedManureFromStorageSystem(YearData yearData, ManureStorageSystem manureStorageSystem) { var fieldsAppliedWithStoredManure = yearData.GetFieldsAppliedWithManure(manureStorageSystem); var farmManureIds = yearData.GetFarmManureIds(manureStorageSystem); var fieldAppliedManures = new List <FieldAppliedManure>(); foreach (var field in fieldsAppliedWithStoredManure) { var nutrientManures = field.nutrients.nutrientManures .Where(nm => farmManureIds.Any(fm => fm == Convert.ToInt32(nm.manureId))) .ToList(); foreach (var nutrientManure in nutrientManures) { var fieldAppliedManure = new FieldAppliedManure(); if (manureStorageSystem.ManureMaterialType == ManureMaterialType.Liquid) { var convertedRate = _manureUnitConversionCalculator .GetLiquidUSGallonsPerAcreApplicationRate(nutrientManure.rate, (ApplicationRateUnits)Convert.ToInt32(nutrientManure.unitId)); fieldAppliedManure.USGallonsApplied = field.area * convertedRate; } else { var farmManure = yearData.farmManures .Single(fm => fm.id == Convert.ToInt32(nutrientManure.manureId)); decimal convertedRate; if (string.IsNullOrWhiteSpace(farmManure.moisture)) { convertedRate = _manureUnitConversionCalculator .GetSolidsTonsPerAcreApplicationRate(farmManure.manureId, nutrientManure.rate, (ApplicationRateUnits)Convert.ToInt32(nutrientManure.unitId)); } else { convertedRate = _manureUnitConversionCalculator .GetSolidsTonsPerAcreApplicationRate(Convert.ToDecimal(farmManure.moisture), nutrientManure.rate, (ApplicationRateUnits)Convert.ToInt32(nutrientManure.unitId)); } fieldAppliedManure.TonsApplied = field.area * convertedRate; } fieldAppliedManures.Add(fieldAppliedManure); } } var appliedStoredManure = new AppliedStoredManure(fieldAppliedManures, manureStorageSystem); return(appliedStoredManure); }
public void GetCalculatedSeparatedManureWithRunOffAndUncoveredArea() { //Arrange var repository = Substitute.For <IAgriConfigurationRepository>(); repository.GetSolidMaterialsConversionFactors() .Returns(new List <SolidMaterialsConversionFactor>() { new SolidMaterialsConversionFactor { InputUnit = AnnualAmountUnits.CubicMeters, CubicYardsOutput = "1.30795", CubicMetersOutput = "1", MetricTonsOutput = "1.30795*density" } }); repository.GetLiquidMaterialsConversionFactors() .Returns(new List <LiquidMaterialsConversionFactor>() { new LiquidMaterialsConversionFactor { InputUnit = AnnualAmountUnits.CubicMeters, USGallonsOutput = 264.172M } }); var storage = new ManureStorageSystem { ManureMaterialType = ManureMaterialType.Liquid, GetsRunoffFromRoofsOrYards = true, RunoffAreaSquareFeet = 4000, ManureStorageStructures = { new ManureStorageStructure { UncoveredAreaSquareFeet = 3000 } }, ImportedManuresIncludedInSystem = new List <ImportedManure> { new ImportedManure { ManureType = ManureMaterialType.Liquid, AnnualAmountUSGallonsVolume = 100000, Units = AnnualAmountUnits.USGallons } } }; var conversionCalculator = new ManureUnitConversionCalculator(repository); //171,797 + 100000 = 271797 var totalLiquidVolumeToSeparate = storage.AnnualTotalAmountofManureInStorage; var wholePercentSeparation = 10; var calculator = new ManureLiquidSolidSeparationCalculator(conversionCalculator); //Act var actual = calculator.CalculateSeparatedManure(totalLiquidVolumeToSeparate, wholePercentSeparation); var expectedLiquidsUSGallons = 244617; var expectedSolidsTons = 90; //Assert Assert.AreEqual(Convert.ToInt32(storage.AnnualTotalPrecipitation), 171797); Assert.AreEqual(expectedLiquidsUSGallons, Convert.ToInt32(actual.LiquidUSGallons)); Assert.AreEqual(expectedSolidsTons, actual.SolidTons); }
public AppliedStoredManure(List <FieldAppliedManure> fieldAppliedManures, ManureStorageSystem manureStorageSystem) : base(fieldAppliedManures) { ManureStorageSystem = manureStorageSystem; }