Example #1
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
 public AppliedStoredManure(List <FieldAppliedManure> fieldAppliedManures,
                            ManureStorageSystem manureStorageSystem) :
     base(fieldAppliedManures)
 {
     ManureStorageSystem = manureStorageSystem;
 }